Linux内核的文件预读值的修改,Linux内核的文件预读剖析[多图]

Linux内核的文件预读剖析[多图]

2009-11-13 9:39:07   出处:https://www.yqdown.com

Linux文件预读算法硬盘

I/O性能的发展远远滞后于CPU和内存,因而成为当代

计算机系统的一个主要瓶颈。预读可以有效的减少硬盘

的寻道次数和使用

程序的I/O等待时间,是改良

硬盘

读I/O性能的主要

优化手段之一。本文作者是中国科学技能

大学自动化系的博士生,他在1998年开始学习Linux,为了优化服务器的性能,他开始尝试改良

Linux kernel,并最终重写了内核的文件预读部分,这些改良

被收入

到Linux Kernel 2.6.23及其后续版本中。

从寄存器、L1/L2高速缓存、内存、闪存,到硬盘

/光盘/磁带/存储网络,计算机的各级存储器硬件组成了一个金字塔结构。越是底层存储容量越大。然而访问速度也越慢,具体表现为更小的带宽和更大的延迟。因而这很自然的便成为一个金字塔形的逐层缓存结构。由此产生了三类基本的缓存管理和优化疑问

◆预取(prefetching)算法,从慢速存储中加载数据到缓存;

◆替换(replacement)算法,从缓存中丢弃无用数据;

◆写回(writeback)算法,把脏数据从缓存中保存到慢速存储。

其中的预取算法,在硬盘

这一层次尤为主要

。硬盘

的机械臂+旋转盘片的数据定位与读取方式,决定了它最突出的性能特点:擅长顺序读写,不善于随机I/O,I/O延迟非常大。由此而产生了两个方面的预读需求。

来自硬盘

的需求

基本

的说,硬盘

的一个典型I/O操作由两个阶段组成:

1.数据定位

平均定位时间主要由两部分组成:平均寻道时间和平均转动延迟。寻道时间的典型值是4.6ms。转动延迟则取决于硬盘

的转速:普通7200RPM桌面硬盘的转动延迟是4.2ms,而高端10000RPM的是3ms。这些数字多年来一直徘徊不前,大概今后也不能

有大的改善了。在下文中,我们不妨运用

8ms作为典型定位时间。

2.数据传输

持续传输率主要取决于盘片的转速(线速度)和存储密度,最新的典型值为80MB/s。虽然硬盘

转速难以提高,但是存储密度却在逐年改善。巨磁阻、垂直磁记录等一系列新技能

的采用,不但大大提高了硬盘

容量,也同时带来了更高的持续传输率。

显然,I/O的粒度越大,传输时间在总时间中的比重就会越大,因而硬盘

运用

率和吞吐量就会越大。基本

的估算结果如表1所示。如果执行

大量4KB的随机I/O,那么硬盘

在99%以上的时间内都在忙着定位,单个硬盘

的吞吐量不到500KB/s。但是当I/O大小达到1MB的时候,吞吐量可接近50MB /s。由此可见,采用更大的I/O粒度,可以把硬盘

的运用

效率和吞吐量提高整整100倍。因而必须尽一切可能防止

小尺寸I/O,这正是预读算法所要做的。

分享到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值