?? 在linux下開啟硬盤的dma(轉(zhuǎn)).txt
字號(hào):
作者:studyboy
email: studyboy@21cn.com
日期:2001-7-23 15:50:40
作 者: panda
目前很多朋友都用上了大容量的DMA或UDMA-33標(biāo)準(zhǔn)的硬盤。在微軟的Windows98下為了使得DMA或UDMA-33標(biāo)準(zhǔn)的硬盤提高數(shù)據(jù)傳輸速率,可以在計(jì)算機(jī)的CMOS或操作系統(tǒng)中打開IDE硬盤的DMA(直接存儲(chǔ)器存取)這項(xiàng)功能。但是在Linux平臺(tái)中,Linux是不會(huì)自動(dòng)的打開DMA模式,所以在Linux中使用這些IDE接口的UDMA-33標(biāo)準(zhǔn)的硬盤感覺數(shù)據(jù)傳輸遠(yuǎn)遠(yuǎn)沒有在Windows中快。事實(shí)上,Linux平臺(tái)中也可以通過軟件來打開DMA模式,以下就是Linux下的硬盤提速的具體做法。
首先,在Linux下打開DMA模式之前,最重要的事情就是備份硬盤上的數(shù)據(jù)。因?yàn)樵陂_啟DMA模式之后誰也無法預(yù)料到硬盤是否還能正常工作,數(shù)據(jù)是否還完整。把Linux下所有的重要數(shù)據(jù)備份到其他硬盤或是CD-R等存儲(chǔ)媒介上是最好的選擇,請(qǐng)不要把數(shù)據(jù)備份在同一塊硬盤上,更不能把數(shù)據(jù)備份到同一個(gè)硬盤分區(qū)。
第二步需要修改hdparm目錄下的一些設(shè)備節(jié)點(diǎn)參數(shù)。但是修改這些參數(shù)必須以超級(jí)用戶(ROOT)的身份登陸Linux系統(tǒng)才行。普通Linux用戶沒有這個(gè)權(quán)限修改hdparm目錄下的東西。下面就是一個(gè)修改硬盤設(shè)備節(jié)點(diǎn)參數(shù)的例子,注意,不同型號(hào),不同容量的硬盤可能列出的參數(shù)不太一樣,但是修改的過程和方法大體上是一樣的。
# /sbin/hdparm /dev/hda
/dev/hda:
multcount = 0 (off)
I/O support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 629/240/63, sectors = 9514260, start = 0
#
要注意的是,OFF代表此參數(shù)不起作用,ON表示打開此功能或模式。上面的參數(shù)列表寫的非常清楚,Multcount(多扇區(qū)讀) 沒有打開;此硬盤格式為16位格式;DMA數(shù)據(jù)傳輸模式?jīng)]有打開。很顯然,這樣的參數(shù)并沒有使硬盤達(dá)到最佳的優(yōu)化,沒有能完全發(fā)揮當(dāng)今高速IDE硬盤的性能。
為了優(yōu)化硬盤,提高硬盤的數(shù)據(jù)傳輸速率,首先還是要了解以下這些參數(shù)的含義:
c3 :就是把硬盤的16位格式轉(zhuǎn)換為32位模式。
m16 :改變硬盤的多路扇區(qū)的讀功能,-m16可以使得硬盤一次讀入16個(gè)扇區(qū)的數(shù)據(jù)。但是不是所有的硬盤都支持這個(gè)功能。使用hdparm -i /dev/hda 可以察看您的硬盤最大能讀寫的扇區(qū)數(shù)目。
d1X34 在支持DMA-capable的硬盤中,這個(gè)參數(shù)可以支持雙DMA通道的數(shù)據(jù)傳輸模式。
d1X66 在支持UDMA-capable的硬盤中,這個(gè)參數(shù)可以支持雙DMA通道的數(shù)據(jù)傳輸模式。
了解以上參數(shù)的作用和含義之后,現(xiàn)在請(qǐng)您仔細(xì)檢查硬盤上面上的標(biāo)簽,看看您的硬盤是否支持DMA 或者 UDMA模式,然后才對(duì)照這些參數(shù)來優(yōu)化您的硬盤,以防出現(xiàn)不可預(yù)見的錯(cuò)誤。
優(yōu)化硬盤的參數(shù),也可以參考下面的例子,注意,不是所有的硬盤都適用一下的優(yōu)化參數(shù),請(qǐng)按照實(shí)際情況來設(shè)置參數(shù):
# hdparm -d1X66 -m16 -c3 /dev/hda
# hdparm /dev/hda
/dev/hda:
multcount = 16 (on)
I/O support = 3 (32-bit w/sync)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 629/240/63, sectors = 9514260, start = 0
修改完這些參數(shù)之后,有時(shí)候并不能一次性把硬盤優(yōu)化成功。如果在硬盤還在正常工作的時(shí)候修改這些數(shù)據(jù),硬盤會(huì)進(jìn)入“休眠”狀態(tài)。這就需要等硬盤燈會(huì)熄滅,硬盤不處于繁忙狀態(tài)下優(yōu)化硬盤參數(shù)比較容易成功。
hdparm的改變是一個(gè)臨時(shí)的狀態(tài),下次再次啟動(dòng)Linux系統(tǒng)的時(shí)候hdparm將會(huì)消失。所以要想永久的保存修改后的信息,就必須把修改后的參數(shù)和數(shù)據(jù)寫入/etc/rc.d/rc.local或者/etc/rc.local文件,甚至比啟動(dòng)過程要早運(yùn)行的程序中。
最后要提醒大家的是,如果您的主板的芯片組或Linux內(nèi)核kernel(比如內(nèi)核kernel版本過于陳舊,2.2版以前)如果不支持UDMA模式,那就沒有必要去修改硬盤設(shè)備的參數(shù)了。升級(jí)主板或者kernel是解決這個(gè)問題的較好選擇。
摘自:http://linux.chinabyte.com
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -