Hdparm命令
版權聲明原文 URL: http://www.gentoo-wiki.com/HOWTO_Use_hdparm_to_improve_IDE_device_performance 版權聲明: 依照 Gentoo Wiki 規定,原文與此譯文皆為 GNU Free Documentation License 授權。
[ 編輯]
前言Hdparm 這個工具是用來設定 IDE 裝置的,包括如 DMA 模式、傳輸模式設定以及一些其他能改善硬碟及光碟機效能的設定。這些設定預設是關閉的,您應該會想要把他打開。本指南也希望能提供 hdparm 設定方面最新的資訊,說明如何檢查你的硬碟支援哪些設定,然後選用最高可用的設定。很多 hdparm 指南都直接說開啟特定模式,像是「-X33」、「-c1」等等,但是這些指南大多已經過時了,結果反而有很多人不知道有新的設定,直接就用上舊的。硬碟效 能提升,系統整體速度也會變快;另外應該也能解決 DVD 播放跳格或是燒錄太慢之類的問題。 安裝 hdparm首先檢查看有沒有裝 hdparm,以 root 身份輸入: # hdparm -V 如果有安裝好,應該會看到像是這樣的資訊: hdparm v5.7 不然就會收到錯誤訊息: bash: hdparm: command not found 如果沒有裝 hdparm,就可以用這個指令安裝: # emerge hdparm Emerge 完成之後再用上面的指令測試一下看有沒有安裝成功。 取得磁碟機資訊不同的磁碟機能力有所不同,要做好設定就需要先知道每臺磁碟機能做到什麼程度。用下面這個指令應該就能取得該有的資訊,記得把 hda 替換成你自己的磁碟機: # hdparm -i /dev/hda Udev 系統上可以用比較易懂的檔名存取磁碟機。 硬碟的話,把 # 替換成磁碟編號: # hdparm -i /dev/discs/disc#/disc 光碟機的話: # hdparm -i /dev/cdroms/cdrom#/cdrom 應該會得到類似下面的結果: /dev/hdd: 每個 IDE 硬碟及光碟機都做一次,特別要注意的是 MaxMultSec 和 PIO/DMA/UDMA 等可用的最高模式。 測試裝置Hdparm 內含滿方便的測速模式,可以看一下每個設定的速度差異。進行測試前建議先關閉所有可能影響結果的程式。最好是從終端做,不要在 xorg 下用 xterm 來跑。測試的指令如下,記得要把 X 替換成你的磁碟機: # hdparm -tT /dev/hdX 應該會看到類似這樣的測速結果: /dev/hdd: 建議先測好所有磁碟機記下結果,這樣設定完成之後才看得出來到底效能改善了多少。 修改裝置設定警告:修改設定有可能損壞硬體或致使系統不穩定。大多數的新磁碟機應該都沒有問題,但是後果請自負。註:這些設定重新開機就會重設,所以決定好設定之後還要再看後文,在開機時就重新設定。 檢查目前設定有些只要不指定參數數值就可以檢查目前的設定。例如要看現行 DMA 模式的話: # hdparm -d /dev/hda 有些則不能這麼用,像是傳輸模式 (-X) 就不會顯示目前設定而會直接把模式歸零,另外像是寫入快取 (-W) 則是會要求輸入設定。一般來說只要用下面這行指令就可以顯示磁碟機的所有設定: # hdparm /dev/hda 顯示結果應該會類似下面這樣: /dev/hda: 或是如前述,用「hdparm -i」顯示較進階的設定,像是傳輸模式等。 DMA 模式 -d修改 DMA 模式有時可能讓系統死當,別忘記了!第一個要啟用的大既就是 DMA 模式了。DMA 模式很重要,例如要播放 DVD 或是燒錄光碟片的話,就最好開啟 DVD-ROM/RW 的 DMA 模式,不然很可能播放會跳格,燒錄速度一直拉不上去,甚至可能燒錄失敗。一般光碟機和硬碟開啟 DMA 模式也很有幫助,可以大幅提升速度,降低 CPU 負載。核心裡也要編入你的晶片組的 DMA 選項;這應該歸於「Device Drivers > ATA/ATAPI/MFM/RRL support」項目下,然後選取你的晶片組的選項。 要啟用裝置的 DMA,輸入: # hdparm -d1 /dev/hda 一切順利的話應該會看到: /dev/hda: 再來跑一下測速看看效能提升多少。 傳輸模式 (PIO/SDMA/MDMA/UDMA) -X其實 DMA 還分成數種不同的傳輸模式:PIO 1-4 (Programmed IO)、SDMA 0-2 (Single-word DMA)、MDMA 0-2 (Multi-word DMA) 以及 UDMA 0-5 (Ultra-DMA)。設定用指令如下,把 ## 替換成想要的模式,hda 替換成要設定的磁碟機: # hdparm -X## /dev/hda 一般來說數值愈高愈好,下表列出各傳輸模式和參數數值:
例如要設定 UDMA2 的話: # hdparm -X66 /dev/hda 也可以用模式名稱設定: # hdparm -X udma2 /dev/hda 現在大多數的碟磁應該都選用 UDMA 模式。啟用傳輸模式之後執行「hdparm -i」確認有設定好。設定好後再測速看看。 32 位元 IO_SUPPORT -c用 -c# 參數可以設定 32 位元輸出入支援。IO_Support 總共有四個層級:
可以的話大概選用 3 或是 1 最好,啟用 3 的指令是: # hdparm -c3 /dev/hda 這個設定會改變 PCI 匯流排傳輸資料到控制器的方式,可以把流量加倍。 MultSect -m執行「hdparm -i」的時候應該會看到一段 MaxMultSect。用 -m 參數把 MultSect 設成這個數值,把 # 替換成你的 MaxMultSect: # hdparm -m# /dev/hda 這個設定控制單次 I/O 中斷會讀取幾個磁區。大多數新碟磁機應該都能用 MultSect 16,比較舊的用 8。修改這個設定之後應該能減少磁碟存取消耗的系統資源,增加磁碟頻寬。 unmaskirq -u用下面指令可以啟用 unmaskirq: # hdparm -u1 /dev/hda 啟用 unmasking 之後,磁碟中斷時 Linux 便可取消其他中斷遮罩,讓系統同時進行類似的工作,應該能提升系統整體反應。 寫入快取 -W下面指令可以開啟寫入快取: # hdparm -W1 /dev/hda 讀取前視 (Read-lookahead) -A下面指令可以開啟讀取前視: # hdparm -A1 /dev/hda 預讀 (Readahead) -a預讀設定可以用下面指令修改: # hdparm -a# /dev/hda 我的硬碟自動就設在 256 了。 儲存 hdparm 選項決定好最佳 hdparm 設定之後,就要編輯 /etc/conf.d/hdparm 檔案,下次重新開機之後才會載入這些設定。要用 nano 編輯器修改的話: # nano /etc/conf.d/hdparm 畫面應該會如下:
如果你的磁碟機大多都會使用相同的設定,就修改 all_args 那一行 (會套用在所有磁碟機上)。下面範例中,hda 和 hdb 是一般的硬碟,支援 UDMA-5,hdc 只支援 UDMA-2,hdd 則是光碟機,預讀只有 8,支援模式也只到 UDMA-0,另外這是一般的光碟機,不需要寫入快取。
最後在開機時自動執行 hdparm: # rc-update add hdparm boot 疑難排解hdparm -i 有顯示 UDMA 模式,但是設定那個模式之後什麼都沒有發生這最可能的原因就是主機板不支援這個模式所需要較高 ATA 模式。如果你確定你的主機板有支援,檢查看看硬磁是否有連接到正確的 IDE 插槽。不同的 ATA 規格插槽塗色會不一樣。下表列出各 UDMA 模式和其 ATA 需求:
我收到「Operation not supported」錯誤,連基本的「hdparm -i」命令也一樣你大概是把 hdparm 用在 SATA 或是什麼奇怪的磁碟機上了。Hdparm 對 SATA 支援有限,但是這類硬碟通常會自動設定使用最佳選項。基本資訊 (不加 -i) 和測速應該還是可以用。測看看硬碟速度如何 (一般來說 cached read 應該有 1000mb 以上,buffered reads 應該有 100mb 以上)。 參考文件
待撰
問題與意見請至 discussion 頁面。 版權聲明原文 URL: http://www.gentoo-wiki.com/HOWTO_Use_hdparm_to_improve_IDE_device_performance |