Home
huangjiahua~~我自己的世界
在桌面用 Linux 2.6 的 CFQ I/O 调度器 

Advertisement

Customize
23rd-Aug-2006 01:15 am
logo-1
感觉上 Linux 桌面的 I/O 调度器用 CFQ 会反应快好多,不容易被拖住。

可以在 Linux 引导参数加一个 elevator=cfq , 比如 Grub 里用类似
kernel /boot/vmlinuz-2.6.17-6-686 root=/dev/hda ro quiet splash elevator=cfq

为了让升级的内核在更新 Grub 时候也加上这个,可以修改 menu.lst # defoptions
比如用下面的脚本
if (! grep “elevator=cfq” /boot/grub/menu.lst > /dev/null 2>&1); then
    logger “      Kernel process scheduler changed to CFQ”
    sudo sed -ie ‘/# defoptions/s/splash/splash elevator=cfq/’ /boot/grub/menu.lst
    sudo update-grub
else
    echo “Kernel process scheduler is already CFQ”
fi




Linux2.6 包含的 4 个 I/O 调度器分别是 No-op I/O scheduler, Anticipatory I/O scheduler, Deadline I/O scheduler, CFQ I/O scheduler 。
分别简称 ns , ds , as , cfq 。

ns是一个简化的调度程序它只作最基本的合并与排序。与桌面系统的关系不是很大,主要用在一些特殊的软件与硬件环境下,这些软件与硬件一般都拥有自己的调度机制对内核支持的要求很小,这很适合一些嵌入式系统环境。作为桌面用户我们一般不会选择它。

as是当前内核中默认的I/O调度器。它拥有非常好的性能,在2.5中它就相当引人注意。在与2.4内核进行的对比测试中,在2.4中多项以分钟为单位完成的任务,它则是以秒为单位来完成的。正因为如此它成为目前2.6测试版中默认的I/O调度器。但它也存在着弱点,它本身是比较庞大与复杂的,在一些特殊的情况下,特别是在数据吞吐量非常大的数据库系统中它会变的比较缓慢。

ds就是针对as的缺点进行改善而来的,还处于测试阶段,但已经很稳定了。目前表现出的性能几乎与as一样好。加之比as更加小巧,是相当有前途的调度器。

cfq为系统内的所有任务分配相同的带宽,提供一个公平的工作环境,它比较适合桌面环境。事实上在测试中它也有不错的表现,



原先我用 fontforge 编辑字体的时候, 系统会明显反应慢下来, 现在改用 CFQ I/O 调度器后不会了。而 fontforge 自己的反应也比以前灵敏, fontforge 的io 求应该明显比其他程序多,
zhllg 的解释是:
<zhllg> 恩,那应该是因为merge的缘故
<zhllg> 因为cfq里每个进程有一个io请求队列
<zhllg> fontforge的都在一个队列里,而且是顺序提交的,都可以merge
<zhllg> 我的理解,呵呵
<zhllg> merge之后减少了磁头来回寻址,可以在一个地方一直写下去,当然有一定时间限制,不会一直写下去
<zhllg> 磁盘寻址是整个计算机系统里操作速度最慢的动作之一了

Advertisement

Customize
This page was loaded Jul 18th 2009, 10:41 pm GMT.