美文网首页
linux文件系统中预读

linux文件系统中预读

作者: 舞阳人的北京路 | 来源:发表于2018-03-28 17:09 被阅读0次

1 预读需求的产生

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

2 来自磁盘的需求

简单的说,磁盘的一个典型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,这正是预读算法所要做的。

image

表1随机读大小与磁盘性能的关系

3 来自程序的需求

应用程序处理数据的一个典型流程是这样的:while(!done) { read(); compute(); }。假设这个循环要重复5次,总共处理5批数据,则程序运行的时序图可能如图1所示。

image

图1典型的I/O时序图

不难看出,磁盘和CPU是在交替忙碌:当进行磁盘I/O的时候,CPU在等待;当CPU在计算和处理数据时,磁盘是空闲的。那么是不是可以让两者流水线作业,以便加快程序的执行速度?预读可以帮助达成这一目标。基本的方法是,当CPU开始处理第1批数据的时候,由内核的预读机制预加载下一批数据。这时候的预读是在后台异步进行的,如图2所示。

image

图2预读的流水线作业

注意,在这里我们并没有改变应用程序的行为:程序的下一个读请求仍然是在处理完当前的数据之后才发出的。只是这时候的被请求的数据可能已经在内核缓存中了,无须等待,直接就能复制过来用。在这里,异步预读的功能是对上层应用程序“隐藏”磁盘I/O的大延迟。虽然延迟事实上仍然存在,但是应用程序看不到了,因而运行的更流畅。

相关文章

  • linux文件系统中预读

    1 预读需求的产生 磁盘的机械臂+旋转盘片的数据定位与读取方式,决定了它最突出的性能特点:擅长顺序读写,不善于随机...

  • Linux 文件系统与设备文件

    1 Linux 文件系统 1.1 Linux 文件系统与设备驱动关系 下图表明了 Linux 中虚拟文件系统、磁盘...

  • Linux ext3是什么?有什么作用?

    Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且文件系统的结构,所有Linux用户和程序...

  • linux文件系统格式

    Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且文件系统的结构,所有Linux用户和程序...

  • Linux基础知识

    Linux文件系统 Linux文件系统简介 在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘...

  • 第8章 管理文件系统(不是很懂的一章)

    8.1 探索Linux文件系统 8.1.1 基本的Linux文件系统 ext文件系统扩展文件系统(extended...

  • 软链接vs硬链接

    记录对软链接硬链接的探索。 linux文件系统基础 linux中每个分区包含一个文件系统。一个完整的文件系统包含自...

  • Linux内核的文件预读readahead

    Linux文件预读readahead,指Linux系统内核将指定文件的某区域预读进页缓存起来,便于接下来对该区域进...

  • 02-Linux入门基础:Linux文件系统基本结构

    1.2.1 Linux文件系统结构 Linux系统为一个倒转的单根树状结构 文件系统的根为/ Linux文件系统严...

  • linux文件系统

    linux文件系统 文件系统的是用来组织和排列文件存取的,所以她是可见的,在Linux中,我们可以通过ls等工具来...

网友评论

      本文标题:linux文件系统中预读

      本文链接:https://www.haomeiwen.com/subject/zolucftx.html