Sei que os tutoriais de hdparm são simples e comuns, com isto, segue esse post para futura referência!
Considerações básicas: utilize /dev/hdX onde X é a letra do endereco lógico do seu hd.
(A->Primeiro Mestre, B->Primeiro Escravo, C->Segundo Mestre, D->Segundo Escravo, no meu caso o HD é /dev/hda)
Configuração padrão do HD (saída padrão do hdparm)
root@linux:~# hdparm /dev/hda
/dev/hda:
multcount = 16 (on)
IO_support = 0 (16-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
É saudável lembrar que é bom efetuar um benchmark antes de alterar as configurações do HD para ter certeza de que houve uma melhoria do desempenho.
root@linux:~# hdparm -tT /dev/hda
/dev/hda:
Timing cached reads: 1440 MB in 2.00 seconds = 720.00 MB/sec
Timing buffered disk reads: 224 MB in 3.01 seconds = 74.42 MB/sec
O interessante para obter o máximo de desempenho do HD é habilitar o modo IO em 32-bits, expandir o prefetch do hd e habilitar o modo DMA.
Habilitando o modo 32-bits:
root@linux:~# hdparm -c1 /dev/hda
Expandindo o prefetch (leitura adiantada de dados):
O valor de ‘readahead’ é multiplicado por 512 pelo hd. No meu caso, o linux usava apenas 4k ao invés de 8k p/ o prefetch.
Parametros: -A1 (habilita prefetch) -A0 (desabilita prefetch) -a16 (tamanho do prefetch)
root@linux:~# hdparm -A1 -a16 /dev/hda
Habilitando o DMA:
Verificar os modos UDMA suportados:
root@linux:~# hdparm -i /dev/hda | grep UDMA
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
O asterisco indica o modo UDMA usado atualmente (no meu caso, udma5), e essa configuração é definida pela bios com base no seu sistema (vide nota a seguir sobre os itens fundamentais que definem o modo UDMA). Para alterar o modo udma, basta somar o modo escolhido com 64, por exemplo:
udma0 utilize 64 (64+0)
udma3 utilize 67 (64+3)
udma5 utilize 69 (64+5)
Cada modo UDMA corresponde a uma velocidade do barramento ATA, variando de 33 a 100 ou 133. Porém é válido lembrar que para alterar o modo de ATA33 para ATA133 são necessários 3 itens fundamentais: 1. Suporte por parte da Controladora ATA; 2. Cabeamento apropriado (Flat Cable para a velocidade desejada, ATA100 ou ATA133 utilizam o Flat Cable de 80 vias); 3. Suporte por parte do HD.
Parametros: -d1 (habilita) -d0 (desabilita) -X69 (modo udma escolhido)
root@linux:~# hdparm -d1 -X69 /dev/hda
Considerações finais
Você pode colocar todos os parametros em uma única linha e adicionar o comando completo no seu arquivo de inicialização /etc/rc.d/rc.local para configurar o HD toda vez que você inicializar o linux!
Comando completo:
hdparm -c1 -A1 -a16 -d1 -X69 /dev/hda
Efetuando um benchmark final:
root@linux:~# hdparm -tT /dev/hda
/dev/hda:
Timing cached reads: 1472 MB in 2.00 seconds = 736.00 MB/sec
Timing buffered disk reads: 224 MB in 3.00 seconds = 74.67 MB/sec
Conclusão…
No meu caso, habilitando o modo de 32-bits com um prefetch de 8k, o hd obteve uma performance superior ao definido na configuração padrão 😀