Chinaunix首页 | 论坛 | 博客
  • 博客访问: 308781
  • 博文数量: 321
  • 博客积分: 10055
  • 博客等级: 上将
  • 技术积分: 3780
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-29 13:03
文章分类

全部博文(321)

文章存档

2012年(1)

2010年(7)

2009年(1)

2008年(312)

我的朋友

分类: LINUX

2008-09-20 22:21:38

在一两年前,Linux核心尚缺乏一个好的的硬碟预读机制时,桌面系统的使用者若要加速开机的速度,通常得先解决开机的瓶颈问题。于是得依赖如readahead这样的工具来预先载入想读入的档案,以便提高系统载入的速度。

readahead的基本原理是先预先载入开机过程可能使用的档案到记忆体中(page cache)。如此开机程式执行时,便可节省读入档案的时间,进而加快开机速度。

当然,前提是你要有足够的记忆体作快取。若你的系统只有小记忆体,不建议使用readahead.目前在Ubuntu, Debian GNU/Linux下使用的版本基于Erich Schubert 、Robin H. Johnson、Scott James Remnant,改自于Gentoo的版本。 Fedora Project则有另外一个概念相同,但由RedHat所开发的的不同实做。

以下所说明的是Ubuntu, Debian GNU/Linux版本。

为了使readahead可以正确的对开机所需的档案快取,你必须教会readahead目前有多少档案需要被预先载入,原则上只需要作一次。 Ubuntu在释出官方版本时, 便会内建一组预先较调的档案列表。但若每次更新核心或套件系统,特别是开机所需的程式,其实都应该做过一次“profile”的动作,以便readahead保持正确的载入档案列表。

相较于Debian说明readahead的说明文件,在Ubuntu由于仍使用旧版,使用上则颇为谜样,Ubuntu的README.Debian只提醒你readahead不能用在NFS上,忘了说明使用方法。在Ubuntu上,readahead会检查/proc/cmdline中是否有profile参数,若有则进行profiling的程序。若使用Grub,则操作方式如下

开机见到“GRUB loading”提示时,按下“Esc”键
按下“e”键进行编辑(若有多核心,先选择预设开机之核心行)
按下“向下” (↓)键到“kernel”行
再选“e”键进行编辑
你会进入参数编辑模式,移动到参数最后加入“profile”,”profile”字样前记得填入空白。
按下“Enter”完成编辑
按下“b”键开机

第一次开机稍慢,但作过一次profile后,之后的开机速度应该会提高些。

在Debian下,只需用root下达以下指令后,重新开机即可

# touch /etc/readahead/profile-once

但在新版的Linux核心,有On-demand read-ahead等技术的加持,这样的工具已经不特别需要,甚至反而会拖慢开机的时间。

试着在安装了Ubuntu Eee的ASUS EEEPC 701上测试(核心为2.6.24-16-generic),以预设安装软体测试开机到桌面环境出现的uptime,每次都大约60s。进行profile则约使用80秒,profiled过readahead开机速度相同。

另外也在我的Thinkpad X60 1706-B69上测试,软体是Debian sid,核心为2.6.26-1-686。系统装了相当多杂七杂八的软体,硬体装了2G记忆体,硬碟则是8M Buffer, 5400RPM的FUJITSU MHV2100B。 profile大约使用152s,profiled readahead开机则约55s,关掉readahead则约53s。
阅读(352) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~