readahead

Linux内核的一个系统调用功能

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]

参看

编辑

参考资料

编辑
  1. ^ 1.0 1.1 Rex Tsai. readahead 加速 Linux 開機速度 ?. 2008-09-09 [2014-11-27]. (原始内容存档于2014-12-04) (中文(繁体)). 
  2. ^ Jonathan Corbet. Adaptive file readahead. LWN.net. 2005-10-12 [2014-08-20]. (原始内容存档于2014-08-01) (英语). 
  3. ^ readahead(2) - Linux manual page. man7.org. [2014-04-09]. (原始内容存档于2014-05-25) (英语). 
  4. ^ Michael Opdenacker. Readahead: time-travel techniques for desktop and embedded systems (PDF). free-electrons.com: 5–6. 2007-06-15 [2014-05-01]. (原始内容存档 (PDF)于2013-09-20) (英语). 
  5. ^ Krzysztof Lichota. Linux solution for prefetching necessary data during application and system startup (PDF). code.google.com. 2008 [2014-07-28]. (原始内容 (PDF)存档于2009-12-11) (英语). 
  6. ^ Readahead. fedorahosted.org. [2014-04-09]. (原始内容存档于2014-04-09) (英语). 
  7. ^ systemd-readahead-replay.service. freedesktop.org. 2014-03-26 [2014-04-09]. (原始内容存档于2014-04-09) (英语). 
  8. ^ über-readahead. Launchpad]. 

外部链接

编辑