LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 898|回复: 6

使用 hdparm 充分榨取IDE硬件最佳效果

[复制链接]
发表于 2007-3-3 12:11:42 | 显示全部楼层 |阅读模式
几乎所有的linux发行版中,在访问IDE控制器和驱动器时都使用默认内核参数,以求最大限度的保护数据安全。
当然安全也就意味着牺牲性能。在处理一些较大的程序时,速度才是我们最关心的。故,可以使用 hdparm 来
调试IDE硬件的最佳性能!

在实验前先题提醒各位看客,这个命令可能会导致意外数据损坏,是有一定风险的。最好能现备份下硬盘数据。
同时在进行实验时不要太操之过急!!

-------------------------------------------

首先,我们看下主驱动器当前的性能状况(需要root权限):
#hdparm -tT /dev/hda

/dev/hda:
TIming buffer-cache reads:   202 MB in 2.00 seconds =101 MB/sec
Timing buffered disk reads:   64 MB in  17.86 seconds =3.58 MB/sec

然后,我们再看下如何对其寻址:
#hdparm /dev/hda

/dev/hda:
multcount    =  0 (off)
IO_support   =  0 (default 16-bit)
unmaskirq    =  0 (off)
using_dma    =  0 (off)
keepsettings =  0 (off)
readonly     =  0 (off)
readahead    = 256 (on)
geometry     = 38760/16/63, sectors = 39070080, start = 0

注意,这里使用居然是16位模式。就算是386的机器,似乎都已经过时了吧!!

multount
        多扇区计数的缩写。控制单个I/O中断从磁盘读取的扇区数。现在的IDE驱动器都是支持该功能的。
        启用该功能会减少系统执行磁盘I/O操作的开销30%-50%。

I/O support
        这个控制数据从PCI总线传送至控制器的方式。几乎所有的芯片都是支持模式3,或者32位
        写/读同步模式,甚者32位异步模式。打开可是吞吐量翻倍。

ummasking
        打开这个选项在处理磁盘中断时,将允许系统解除对其他中断的屏蔽。及允许linux在等待
        磁盘返回所要求的数据的同时执行其他于中断相关的任务。可减少系统总体响应时间。
        (注意,不是所有硬件配置都可以处理这个选项的)
using_dma
        系统控制器和驱动器能使用DMA模式,就打开吧。

-------------------------------------------

开始实验:

#hdparm -c3 -m16 /dev/hda

/dev/hda:
setting 32-bit IO_support flag to 3
setting multcount to 16
multcount    = 16 (on)
IO_support   =  3 (32-bit w/sync)

OK,再测试下:
#hdparm

dev/hda:
Timing cached reads:   274 MB in  2.00 seconds = 137.02 MB/sec
Timing buffered disk reads:   64 MB in  9.84 seconds =   6.50 MB/sec

哈哈,轻轻松松就让吞吐量翻倍了!!
还不止这些,还么有对中断进行屏蔽处理,还没有使用DMA,甚至适当的PIO模式也未使用哦.当然,危险系
就比较高咯,所以一定多了解自己的硬件啊。

全面测试下:

#hdparm -X66 -d1 -u1 -m16 -c3 /dev/hda

/dev/hda:
setting 32-bit IO_support flag to 3
setting multcount to 16
setting unmaskirq to 1 (on)
setting using_dma to 1 (on)
setting xfermode to 66 (UltraDMA mode2)
multcount    = 16 (on)
IO_support   =  3 (32-bit w/sync)
unmaskirq    =  1 (on)
using_dma    =  1 (on)

再来检查下:

#hdparm -tT /dev/hda

/dev/hda:
Timing cached reads:   288 MB in  2.01 seconds = 143.63 MB/sec
Timing buffered disk reads:   64 MB in  3.18 seconds =   20.13 MB/sec

如何?!现在和开始的数据相比乃天壤之别哦!!当然,一旦确认自己的系统稳定了,就可以写入启动项中
保存咯。至此,关于使用 hdparm 充分榨取IDE硬件最佳效果的测试完成。
发表于 2007-3-3 12:15:22 | 显示全部楼层
ft 自己写一个精在前面...
现在串行硬盘似乎不用设置这个了
回复 支持 反对

使用道具 举报

发表于 2007-3-3 12:24:17 | 显示全部楼层
这些设置论坛上已有很多篇,我在这儿也不知写过多少次了,想进一步提升效能的话,把 -a1024 也加上吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-3 12:29:11 | 显示全部楼层
汗,初次发帖就遭贬。受刺激了,哈哈哈~~
也在继续学习ing

谢谢各位指教
回复 支持 反对

使用道具 举报

发表于 2007-3-3 12:35:08 | 显示全部楼层
楼主请勿误会,兄弟们都是互相交流,互相帮助的,绝无贬低任何人的意思。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-3 12:42:51 | 显示全部楼层
呵呵,bz别当真哦,只是句玩笑话
谢谢兄弟指教,小弟学艺不精,还望各位多多指教!
-a 1024 记下了,谢谢
回复 支持 反对

使用道具 举报

发表于 2007-3-3 14:18:06 | 显示全部楼层
似乎现在的内核里面有一个选项,选上后,默认就用最好的DMA模式。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表