|
|
几乎所有的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硬件最佳效果的测试完成。 |
|