readahead英语,意思就是提前读入)是Linux内核的一个一系统调用功能,透过把所需要的系统文件预先读入文件缓存page cache)里,解决磁碟存取速度的瓶颈问题[1],从而加快启动时的速度。因为系统所需文件已从硬盘提早读进了主记忆,而主记忆的流水线带宽比周边系统的流水线带宽为高,令系统耗费在存取周边装置的时间减少了[2][3]

很多的Linux发行版都透过readahead程序来加速系统启动。在这种设置里,系统的内核在启动时在提供相关的启动参数之下,会记录启动时需要激活的文件。这个文件列表会用来制作新的readahead压缩档,令额外安装的服务得以较快启动,即使最初系统安装时,这些服务并未列于readahead的列表内[4]。部分实验性的系统会透过记忆标签页预先提取高速缓存置换机制再令系统表现提升[5]

随着电脑硬件及软件的进步,readahead的做法亦跟随转变。在使用systemd的Linux发行版(例如:FedoraOpenSUSE等),readahead的功能与systemd结合了成为一个叫作“systemd-readahead”的可执行文件[6][7]。而在以debian为基础的平台(例如:Ubuntu),在发布官方版本时,会内建一组预先较调的文件列表,再把相关文件压缩到一个压缩档,到系统启动时从启动盘加载[1]。这个以debian为基础的Linux版本的readahead经历过下列的转变:

  • 原来的readahead功能在Ubuntu 9.10推出时被取代;
  • sreadahead取代了原来的readahead,但后来亦被取代;
  • ureadahead:全称为über-readahead,源自德语,意思就是“超越readahead”的意思。现时的版本号码是0.100.0-17[8]

参看

参考资料

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.