DMA(直接記憶體存取)讓硬碟控制器直接搬移資料至記憶體,大幅降低 CPU 佔用。RedHat 安裝預設關閉 DMA,重新編譯內核雖可啟用但門檻過高,本文提供免編譯方案。
# 檢查 /proc/ide/hda/settings 中 using_dma 值
# 1 = 已啟用,0 = 未啟用
# 查看硬碟支援模式
hdparm -i /dev/hda
# 輸出範例:
# DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4
# 星號 (*) 表示當前使用模式
編輯 /etc/lilo.conf,在 append 行加入:
append="ide0=dma ide1=dma"
# 或指定具體硬碟:ide0=dma, ide1=dma (0-3 對應四個 IDE 設備)
執行 /sbin/lilo 更新 MBR,重啟生效。
# 即時啟用
hdparm -d1 /dev/hda
# 寫入開機腳本永久生效
echo "hdparm -d1 /dev/hda" >> /etc/rc.d/rc.local
hdparm -d0 /dev/hda
hdparm -X 可指定具體 UDMA 模式(如 -X69 對應 UDMA4)hdparm -tT /dev/hda
# 執行前後對比緩存讀取與磁碟讀取速度,DMA 模式通常提升 3-5 倍
免編譯內核即可釋放硬碟效能,建議所有 IDE 硬碟用戶檢查並啟用。