首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>资讯动态>正文

吴峰光:预读算法让Linux更易用[2008Linux开发者研讨会演讲]

http://www.oklinux.cn  2008-02-19   Linux时代  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn
大家好,我将在报告里面简单的回顾一下,在之前一两年里面对预读算法的改进,和I/O性能的影响。
众所周知磁盘是非常不善于寻道的,寻道的开销很大,所以要尽量减少小的IO,一般的应用程序会进行小的IO,它会进行一个小的缓冲区,然后进行度,比如说4K,4K,8K这样的读,然后内核里面会进行优化,把小的转化成大的预读。
这个预读在下面这个图里面可以看到,上面是应用程序进行的4K的读,下面是内核进行的16K大小的,或者更大的预读。这个预读的两个主要的改进性能,一个是能够改进吞吐量,通过把小的读转换成大的预读实现的。
它通过把同步的读转换成异步的预读,来实现对IO的等待。这个预读的算法呢基本的原理是对应用程序的读请求序列进行检测,如果应用程序进行顺序的读,那就可以对它进行预读。但是实际在实现中会有很多的IO的访问模式,不仅是非常简单的顺序读,还有可能有其他的变化形式,这样就会对变化形式进行检测。还有对抖动进行一些处理。
在接下来的PPT里面我主要介绍两个预读的算法。首先这些改进是对顺序读的检测开始的,最简单的顺序读就是一页一页的往前读,所以它的判断条件非常的简单。后来有人发现有些情况下某些页面会被重复读取,这种情况呢发生在读的请求跟也面的边界不是对齐的情况下,这样同一个页面会被读取多次,这种情况实际上仍然是顺序读,所以把判断条件改进一下,加一个条件该可以应付了。后面的重次读是更复杂的情况,这种情况发生在很多的网络应用程序里面,像FTP, HTTP程序的应用。还有就是内核的AIO,在这些IO里面他们会经常提交一个比较大的读请求,这个请求会只完成一部分之后就反回,在老的内核里面,是以应用程序请求的页面作为预读的判断条件,所以这个就会被搞迷糊了,在新的2.6.23里面做了改进,它以实际读取的页面,作为预读算法的输入,这样下面这个图就是一个非常好的顺序的读。
通过这个改进呢有些用户就反映一些非常好的性能提升。像这里面是一个16级内存的服务器,它用HTTP服务了1200个客户端,这个在老的内核里面和新的内核里面,CPU的IO,IO降低了17%,网络的带宽,就是实际服务量反而提高了17%,同时对于磁盘来说,磁盘的利用率降低了26%,磁盘的带宽增加的29%。
下面是另外一个HTTP的用户报告,它说IO viter从80%降低到了20%。下面一个问题是预读抖动,这会发生在当一个预读的页面,被读者实际使用到之前就被换出了缓存,避免说有三个时间,一个读者在进行一个页面一个页面的读,然后发生了预读抖动,发生预读抖动之后所有页面就完全被从缓冲里面拿出去了,老的内核里面就会进行一个页面一个页面的 IO,这里面红色的就表示发生了磁盘IO,这个效率非常低,新的版本的情况就是新的窗口会被重新建立,一个IO是4K,这样依次的递增,马上效率就恢复了。这个图是发生预读抖动之后的性能比较。
我们这个电脑用了128兆的内存,在每一秒新开一个读者,这个读者读的速度是100K每秒,逐渐逐渐的到了大概二三十秒钟的时候,这个就发生了,这个时候网络的流量在老的内核是5兆每秒,新的流量是15兆每秒,提升了3倍的性能,IO的性能也提升了8倍。
这个图是另外一种不太明显的顺序读。由于Linux那些文件结构的限制,只能处理一个文件一个流,它有两个进程,分别打开两个文件描述符进行读的时候,这能够被正确的检测出来是顺利读,但是整个文件是被两个流共享的,这样就会发生相互干扰,下面这个图大家就会看到,在内核看来发生了很多的变化。这样的话预读就会被关闭,这会导致严重的性能下降。这个是内部的文件结构,每一个对应一个打开的FD。
在这种时候呢老的算法只有一个,他们就会向两个不同的流,他们之间就没有任何相关性,顺序性就不能被检测,改进的方法是利用一个特性,就是说任何一个页面一旦被读进内存,就会被缓存一段时间,所以我们就可以去检测之前的那个页面,那个页面是不是在缓存里面,如果是的话,就是一个顺序的读。我们知道是顺序读之后就会进行预读了,然后就要解决一个进行多大预读的问题。这个预读大小就应该是安全的,预读太大了就会发生预读抖动,所以就有一些公式的推导来进行估计,这个估计是准确的,它的前提只有一个条件,就是流的数保持平稳就可以了。前面两个主要的问题解决之后,就可以得到预读的算法了。
我们看下面这个图,首先开始状况是前面一系列的等候,就表示读者已经读过了页面,这个井号表示读者正在读的页面,前面的下划线表示预读窗口,第一步我们先判断这个地方有没有页面存在,如果这个页面被缓存了,就说明这是一个顺序的流,我们就可以进行预读。为了进行预读我们就需要知道从哪里开始从哪里结束。往前收收历史的页面,确定历史页面的数目,得到一个H,这个H把它反向的影射过来,在第四步就得到了END标志,那么有了开始和结束标准,我们就可以预读了。
下面是三种预读算法的比较。在老的内核里面是只能进行一个FD,进行一个顺序读。一个文件差不多可以支持32个流,这32个流是可以改大的,但是改大了效率会比较低。根据上下文的预读是基于区域的实现,所以效率并不受流数量的影响,所以可以支持流的数目是无穷多的。这种特性非常适合对于顺序和随机读混合在一起的情况预读,这种情况下每种随机读相当于新开了一个,所以在这个图里面相当于有很多个,这种情况下是无法应付的。因为只内处理32个缺省的。那么这个上下文预读还可应用在科学计算里面。科学计算里面经常对一个大的矩阵进行裂变力。它的间隔是相等的,但是不能改进读的大小,IO的大小不能改进的话,这个性能还是受影响的,根据上小文的预读是非常多的流。这些流在进行第一次裂变力还不知道,但是是存在的,首先会进行4页面的预读,然后进行8页面的预读,这个效率就提上去了。
再下面是FNS服务器的读,这个客户端一般会进行比较大的预读,但是这个预读会被拆分成比较小的请求,这个请求到达服务器的时间可能是混乱的,这服务器可能是SMP服务器,有多个CPU,这个运行很多个FNSD,这实际接收了某一个请求的话,会使混乱加剧,这样也相当于读请求是乱序的被执行,或者是被并发的执行的。在这种情况下在6.2.23里面新的预读算法对这种混乱的读更加不敏感,有比较好的适应性,所以对NFS读性能提升是1.8倍,如果采用上下文预读的话会达到2倍,会更好一点。
共2页: 上一页 1 [2] 下一页

上一篇:Jim Zemlin:Linux在中国的机遇[2008Linux开发者研讨会演讲]   下一篇:Bill Weinberg:移动Linux技术面临的挑战[2008Linux开发者研讨会演讲]

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Bill Weinberg:移动Linux技术面临的挑战[2008Linux开
·Jim Zemlin:Linux在中国的机遇[2008Linux开发者研讨
·Jonathan Corbet:Linux的内核发展速度将令人震惊[2008
·Matt Mckall:Linux的性能检测和问题诊断 [2008Linux
·2008Linux开发者研讨会 [文字直播]
·对话Linux内核守护人Andrew Morton[2008Linux开发者研
·红帽CEO:超越马修时代 将红帽带上十亿美元台阶
·关于“万人迷远程强制视频”
·陆首群:中国将成为最大的软件市场 [2008Linux开发者
·袁萌:由《Linux开发者研讨会》归来
·2008Linux开发者研讨会-中国 顺利召开
·Jonathan Corbet:Linux内核将快速发展
·陆首群:中国将成为最大的软件市场
·Jim Zemlin:Linux在中国的机遇
·Linux内核作者:前景看好!Linux公司赚钱机会越来越大
·吴峰光:预读算法让Linux更易用
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Chrome赢得Tom’s Hardware Award
·Google将在2011年发行Chrome OS商业版
·Chrome插件数紧逼Firefox
·Chrome OS死对头宣布将转投Chrome阵营
·今年的Ubuntu开发者峰会将在布鲁塞尔举
·Chrome开发版Bug杀死自家离线GMail
·Chrome OS是非常坚固的系统
·ReMail iPhone应用宣布开源
·谈Android等开放平台的应用软件生态
·Chrome OS体验无与伦比
·谷歌Wave服务新增收件箱更新邮件提醒功
·Ubuntu 10.10开发日程确定
  阅读排行
·CxImage图像处理类库
·Fedora 9官方正式发布(官方下载地址)
·支持谷歌Android系统音悦汇T11试用评测
·开源ERP市场的“一匹黑马”
·Compiz Fusion 0.7.2已发布可下载
·red hat的历史和当前开放源代码的发展
· Sun设限ZFS Linux开发者犯难
·启用 Ubuntu 9.04 软件源 将系统升级到
·Intel GMA 3000 Q965显卡的性能测试
·Linux十大免费视频编辑软件大放送
·认识苹果CEO Steve Jobs
·Fedora 9 官方下载地址
·小而强大 开源播放器SMPlayer试用
·号称是世界上最小的Linux电脑
·Windows何处能敌?Linux桌面六大优势
网摘收藏: