Caso você já tenha o
hdparm instalado, já poderemos utilizá-lo para buscar informações no sistema. Caso não o tenha instalado, procure no CD1 de instalação do
Slackware na raiz do cdrom "slackware/a/hdparm-6.1-i486.tgz" e utilize como superusuário (depois de montado o drive de CD):
# installpkg slackware/a/hdparm-6,1-i486.tgz
Para quem utiliza
Debian pode dar um simples:
# apt-get install hdparm
ou
# aptitude hdparm
que ele baixará o pacote e instalará o programa.
Após instalado verificamos as informações do HD com o parâmetros -i ou -I, sendo que o primeiro vai lhe fornecer informações menos técnicas sobre o disco rígido/drive e o segundo te dará informações completas e detalhadas, onde poderemos saber o que seu disco rígido suporta e o que não suporta.
Mas sempre verifique se tua BIOS suporta certo parâmetros, pois se teu HD suportar Ultra-DMA 4 ou 5 e sua BIOS disser que suporta no máximo Ultra-DMA 2, não utilize UDMA4, pois não vai adiantar muito e poderá ter problemas de compatibilidade como travamentos no sistema e correndo o risco de perder dados no disco.
Formas de obter informações:
# hdparm -i /dev/hda
/dev/hda:
Model=ST340014A, FwRev=3.06, SerialNo=5JXAFYM6
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=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=78165360
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: ATA/ATAPI-6 T13 1410D revision 2:
* signifies the current active mode
O que podemos tirar deste exemplo?
Neste exemplo podemos verificar Modelo, Firmware e Serial. Veja: (Model=ST340014A, FwRev=3.06, SerialNo=5JXAFYM6)
CSH e LBA compatível do HD: linha 3 e linha 5 - (RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4) & (CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=78165360)
Na 4ª linha podemos saber o tamanho do buffers de leitura ( BuffSize=2048kB ) e qual o máximo de transferência máxima múltipla por setores ( MaxMultSect=16, MultSect=16 ).
Nas linhas 7,8 e 9; verificamos os modos PIO,DMA e UDMA suportado e em qual está operando no momento.
E por último se o gerenciamento de energia está ativo ou não ( AdvancedPM=no), se o cache está ativo (WriteCache=enabled) e se o drive é compatível com o padrão ATA ( Drive conforms to: ATA/ATAPI-6 T13 1410D revision 2 ).
Outro modo de obter uma informação mais precisa é:
# hdparm -I /dev/hda
mas vamos nos concentrar no exemplo já utilizado e verificado.
Antes de continuarmos, verifique o que já está habilitado no seu HD com "hdparm /dev/hda" e teremos a seguinte listagem:
/dev/hda:
multcount = 0 (off)
IO_support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 0 (off)
geometry = 16383/255/63, sectors = 78165360, start = 0
e faça um teste de desempenho com:
# hdparm -Tt /dev/hda
/dev/hda:
Timing cached reads: 500 MB in 2.00 seconds = 250.51 MB/sec
Timing buffered disk reads: 10 MB in 3.22 seconds = 3.11 MB/sec
Como vimos, isto está muito abaixo do esperado.
Sabemos que podemos habilitar muitas das opções que estão desabilitadas e com isso melhorar progressivamente o desempenho.
Vamos detalhar as opções que estão desabilitadas comparando o comando hdparm -i /dev/hda e hdparm /dev/hda, ok?
# hdparm -i /dev/hda
hdparm /dev/hda
opção a usar
MaxMultSect=16, MultSect=16
multcount = 0 (off)
-m16
UDMA modes: udma0 udma1 *udma2 udma3 udma4 udma5
using_dma = 0 (off)
-d1 e -X66 ou X udma2
IORDY=on/off
IO_support = 0 (default 16-bit)
-c1
BuffSize=2048kB e WriteCache=disable
readahead = 0 (off)
-A1 e -a256
Habilitamos então as opções que podemos utilizar da seguinte forma:
# hdparm -c1 -d1 -m16 -A1 -a256 -X udma2 /dev/hda
e vemos agora como ficou o desempenho do mesmo com:
# hdparm -Tt /dev/hda
/dev/hda:
Timing cached reads: 580 MB in 2.01 seconds = 288.60 MB/sec
Timing buffered disk reads: 66 MB in 3.01 seconds = 21.92 MB/sec
Nossa!!! O que aconteceu aqui??? Tivemos um salto enorme de desempenho, com ganhos no Buffer de disco em torno de 500% e do cache uns 16%! Como podemos explicar isso?? Mágica?? Como veremos agora, não se trata de mágica nenhuma. Veja um breve resumo das opções utilizadas como descrito na página do manual:
- -m16 - A modalidade múltipla do setor... permitindo transferência de setores múltiplos por interrupção de I/O, melhor que o um setor por cada interrupção. Quando esta característica é permitida, reduz tipicamente a carga geral do sistema operando no disco entre 30-50%... A maioria das "HDs" suportam os ajustes mínimos de 2, de 4, de 8, ou de 16 (setores). Os ajustes maiores podem também ser possíveis, dependendo do "disco rígido" utilizado.
- -d1 - Habilita ou desabilita o modo DMA... Verifique se sua BIOS suporta... (Com certeza sim!)
- -c1 - Habilita (sustentação 32-bit de E)IDE I/O... (ou seja, interrupções de Entrada e Saída a 32 bits)
- -A1 - Desabilita/Habilita a leitura antecipada/adiantada da IDE - geralmente Habilitado por padrão...
- -a128 Configura a leitura adiantada. O valor especificado é multiplicado por 512 Bytes. Assim, se você usar 8, a leitura adiantada será de 4 KB. No caso de 128, será utilizado 64KB na leitura adiantada, e assim sucessivamente...
- -X - udma2 Habilita o modo Ultra-DMA mode 2... veja mais no manpage do hdparm
Além destas opções existem outras. Caso queira saber mais, veja a página do manual do hdparm (man hdparm).