首先檢查且測試更改前硬碟的效能,最好登出桌面系統,在單純的文字模式底下測試,並且不要執行任何程式,這樣可以單純的測出硬碟的效率,
sudo hdparm -tT /dev/hdc(更改成你要測試的硬碟代號)
會出現像
Timing cached reads: 1172 MB in 2.00 seconds = 586.08 MB/sec/dev/hdc:
Timing buffered disk reads: 160 MB in 3.01 seconds = 53.16 MB/sec
這樣的東西,紀錄一下這些數值,接著
sudo hdparm -i /dev/hda
出現的是/dev/hdc:重點在紅色的部份,MaxMultSec指的是你能用到的MultiSect的最大值,後面的就是你目前的數值,
Model=ST3802110A, FwRev=2AAA, SerialNo=3LR08MM0
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156301488
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: Unspecified: ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4
ATA/ATAPI-5 ATA/ATAPI-6 ATA/ATAPI-7
* signifies the current active mode
而PIO/DMA/UDMA顯示的是你能用的傳輸模式,最下面最後面一個就是最佳的模式,把這兩個記下來,
然後開始進行調整~
參數 -d
這個參數開啟硬碟的DMA模式,目前的硬碟都有支援DMA,用 -d1 開了可以增加效率。
參數 -X(大寫)
這是DMA的傳輸模式設定,就是設定剛剛的PIO/DMA/UDMA你所記下最好的那個,假設是udma5,那就下參數 -X69 ,就可以打開硬碟的UDMA5模式,其他的模式設定如下,聽一個相對應的,
0 | 1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|---|
PIO | 08 | 09 | 10 | 11 | 12 | |
SDMA | 16 | 17 | 18 | |||
MDMA | 32 | 33 | 34 | |||
UDMA | 64 | 65 | 66 | 67 | 68 | 69 |
參數 -c
這是設定輸出入位元,
0 | 預設 16 位元 |
---|---|
1 | 32 位元 |
2 | 16 位元 |
3 | 32 位元 + sync |
參數 -m
這就是設定MultiSect的數值,將剛剛你所看到的MaxMultiSect數值加到後面,我的是 -m16 ,
參數 -u
Wiki上的說明是「啟用 unmasking 之後,磁碟中斷時 Linux 便可取消其他中斷遮罩,讓系統同時進行類似的工作,應該能提升系統整體反應。」,而根據man hdparm的說法, -u 參數在一些特定的硬體會造成不良的影響,在舊的核心上也支援不良,不過目前真的很舊的硬體應該大家也很少用了,核心絕大部分人應該也是最新次新或是次次新,不會舊到哪裡去,所以就下 -u1 把他打開吧,
參數 -W
開啟寫入快取,有好無壞...應該吧.... -W1 打開,
整個下來就是
sudo hdparm -d1 -X69 -c3 -m16 -W1 /dev/hdc
然後再 sudo hdparm -tT /dev/hdc 測試看看有沒有比之前的快。
不過這樣每次開機之後就得自己手動打一次指令,所以我們把他加到 /etc/hdparm.conf 裡,
/dev/hdc {我將指令加到 command_line 下,結果無效,不知道為什麼,不過我參照上方的設定說明,自己設定成上面的樣子就可以了,將你的硬碟都設定好,重開機就可以了。
mult_sect_io = 16
write_cache = on
dma = on
interrupt_unmask = on
io32_support = 3
transfer_mode = 69
}
不知道哪裡聽來的,Ubuntu6.10還是7.04不再去讀hdparm.conf,不知道是不是真的....
如果hdparm -i有顯示UDMA,例如UDMA5,但是設定之後卻只是UDMA2或是沒變化,那可能就是主機板不支援這個模式,以下是對照表,拿主機板說明書參考看看。
UDMA | ATA |
---|---|
0 | ATA 16 |
1 | ATA24 |
2 | ATA33 |
3 | ATA44 |
4 | ATA66 |
5 | ATA100 |
沒有留言:
張貼留言