T hdparm 硬盘参数设定/检测

語法:

[root @test /root ]# hdparm [-cdmXTt] [裝置名稱]

參數說明:

-c   :提供 32 位元的存取模式,支援的型態有:

      -c0:關閉 32 位元存取模式

      -c1:開啟 32 位元存取模式

      -c3:以較為特殊的 sync 模式開啟 32 位元存取模式(建議值)

-d   :是否啟動硬碟的 DMA 模式, 0 為關閉, 1 為開啟。

-m   :設定 multiple sector I/O 的模式,通常預設為 16 ,建議值亦為 16 。

-X   :設定 IDE/ATA 模式的項目,支援如下的設定:

      -X34:開啟 DMA mode 2       (ATA)

      -X66:開啟 ultra DMA mode 2 (ATA66)

-T   :測試暫存區 cache 的存取效能

-t   :測試硬碟的實際存取效能 (較正確!)

例:

[root @test /root]# hdparm -Tt /dev/hda   <== 測試 hda 這顆硬碟的 cache

與實際效能
[root @test /root]# hdparm -d0 /dev/hda   <==關閉 DMA 模式!

[root @test /root]# hdparm -d1 -c3 -X66 /dev/hda  <==開啟 DMA 模式在

DMA 66 ,並且開啟 32 位元存取模式

說明:

這個指令必須要 root 才能執行!此外,需要特別注意, -X

這個參數是很危險的參數設定,除非您非常瞭解您的硬碟架構,否則不建議自行設定,因為 manual

page 上面就有說明到這一點~~不過,無論如何,目前大於 2GB

以上的硬碟至少都已經支援了 DMA 33 了!因?飽A使用 -X66 應該都是可行的!較常建議的硬碟 DMA 開啟功能項

目如下:

hdparm -d1 -X66 -m16 -c3 /dev/hda 另外,基本上目前的 Linux 預設都是開啟

DMA 的模式,因此這個指令的功能相對的重要性就降低了!不過,有一點仍然相當的重要,就是 Linux 預設的 -c

是關閉的,亦即是 -c0 的狀態,所以你可以增加上面的 -c3 來開啟 32 位元的存取模式呦!

當然了,如果你的硬碟真的是很老舊的,那麼就不要開啟的好!

好了!那麼如何開機就啟動 DMA 模式呢?!你可以將上面那一段指令寫入

/etc/rc.d/rc.local 裡面即可!
 

一、開啟硬碟 DMA 支援。

  系統安裝完畢後,硬碟的 DMA 是沒有打開的,我的方法是在
/etc/rc.d/rc.local 最後面加上一行 /sbin/hdparm -d1 -c3 -m16 /dev/hda 這樣每次開機後,硬碟的 DMA 就會開啟,不必每次手動設定。

  如果您的硬碟機支援 ATA33 可以加上 -X66 這個參數,ATA66則是 -X68,像我的硬碟是 ATA66 那麼完整參數就是/sbin/hdparm -d1 -X68 -c3 -m16 /dev/hda 經過我的測試 ,在 DMA 未開啟以前,實際讀取效率是每秒約4.10 Mb 左右,開啟 DMA 後,每秒實際讀取效率躍升為 20 Mb 大約提昇 5 倍之多。

§未開啟 DMA 時的測試

[root@firefly /root]# hdparm -d0 /dev/hda

/dev/hda:

setting using_dma to 0 (off)
using_dma = 0 (off)

[root@firefly /root]# hdparm -Tt /dev/hda

/dev/hda:

Timing buffer-cache reads: 128 MB in 2.75 seconds = 46.55 MB/sec
Timing buffered disk reads: 64 MB in 15.58 seconds = 4.11 MB/sec

§開啟 DMA 後的測試結果

[root@firefly /root]# hdparm -d1 -X68 -c3 -m16 /dev/hda

/dev/hda:

setting 32-bit I/O support flag to 3
setting multcount to 16
setting using_dma to 1 (on)
setting xfermode to 68 (UltraDMA mode4)
multcount = 16 (on)
I/O support = 3 (32-bit w/sync)
using_dma = 1 (on)

[root@firefly /root]# hdparm -Tt /dev/hda/dev/hda:

Timing buffer-cache reads: 128 MB in 2.75 seconds = 46.55 MB/sec
Timing buffered disk reads: 64 MB in 3.20 seconds = 20.00 MB/sec

由以上的數據,可以看得出來,硬碟 DMA 是否開啟,對讀取效率影響很大。

关注!!

本站精華裡有一點,不過好像不太細
http://www.chinaunix.net/bbsjh/1/11932.html
http://chinaunix.net/forum/viewtopic.php?t=8576&start=0&postdays=0&postorder=asc&highlight=

使用hdparm或一个叫setcd的程序来降低光驱的速度。

    hdparm -E [speed] [cdrom device]

    setcd -x [speed] [cdrom device]


    echo current_speed:4 >; /proc/ide/[cdrom device]/settings

但这样你需要root权限。下面这个命令也有用处:

    echo file_readahead:2000000 >; /proc/ide/[cdrom device]/settings

这把文件预读取设置为2MB,对于刮伤的CD-ROM有好处。如果你把这个值设置的太大,你的光驱会不停的转,显著的降低效率。建议你同时也用hdparm调整你的CD-ROM光驱:

    hdparm -d1 -a8 -u1 (cdrom device)

启DMA存取,预读取,和IRQ unmasking(细节解释请阅读hdparm的man page)。
原文地址:https://www.cnblogs.com/cy163/p/1542140.html