Podemos fazer 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
Até agora estamos apenas colhendo informações básicas que serão necessárias para nosso afinamento, e 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.
Antes de mais nada, vamos detalhar as opções que estão desabilitadas comparando o comando hdparm -i /dev/hda e hdparm /dev/hda.
# 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
Veremos 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
Oh Ho!!! Vejamos o que aconteceu aqui... Veja o enorme salto que tivemos de desempenho, com ganhos no buffer de disco em torno de 300% ou 500% e do cache uns 16%. E olha que de mágica aqui não tem nada, mas como é que podemos explicar isso? Vejamos um breve resumo das opções utilizadas:
- -m16 - Modalidade múltipla do setor, permite a 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 grande maioria dos 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, lembre-se de antes verificar se sua BIOS suporta, mas 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 - Habilita/Desabilita 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 man page do hdparm.
E claro, além das opções acima existem outras, caso queira saber mais, veja a página do manual do hdparm (man hdparm). Agora que temos um certo conhecimento do aplicativo podemos até criar um script para ser executado na inicialização do sistema, evitando de você ter que digitar os mesmos comandos toda vez que reiniciar a máquina.
Porém lembre-se de que cada caso é um caso, sendo assim o script para minha máquina será diferente para a sua máquina, só mais um detalhe! Com o hdparm é possível além de ajustes de desempenho e análise de discos, também fazer afinação com o que chamamos de Optic Discs, os famosos drives de CDROM ou DVDROM para os chegados, como por exemplo ajustar o Ultra-DMA2 no drive.
Espero que ter passado uma idéia de algumas das funções e opções dessa ferramenta tão poderosa que é o hdparm.
Gerenciamento acústico e de energia
O gerenciamento acústico é bastante simples, como todas as configurações do hdparm, bastando utilizar a sintaxe.
hdparm -M<valor> <disco>
O valor pode variar de 128 (lento e quieto) até 254 (rápido e barulhento). Para não perder muito tempo testando valor por valor, utilize aquele que é recomendado pelo fabricante. Utilize o comando:
# hdparm -I <disco> | grep acoustic
Para ver esse valor. Veja esse exemplo:
# hdparm -I /dev/hda | grep acoustic
Sua saída seria mais ou menos assim:
Recommended acoustic management value: 128, current value: 0
Veja que, nesse caso, o valor recomendado é 128. Então, dê o comando:
# hdparm -M128 /dev/hda
/dev/hda:
setting acoustic management to 128
acoustic = 128 (128=quiet ... 254=fast)
Para desativar o ajuste acústico, utilize o -M0. Diversos dos HDs atuais nem precisam desse recurso, pois já são bastante silenciosos, mas isso é útil para os mais antigos, sim aqueles que durante a madrugada ninguém pode dormir por que você está com o PC ligado.
Uma outra dica que pode ser muito bom e útil com o hdparm que é a configuração do tempo que o HD deve esperar para desligar o motor caso fique muito tempo sem uso, ou o chamado tempo de
spindown. Com isso podemos reduzir o consumo de energia e aumentar a vida útil do HD, caso seu computador permaneça muito tempo ligado mas nem sempre em uso.
Para configurar o tempo de spindown a sintaxe é:
hdparm -S<valor> <disco>
Onde <valor> é o código do tempo desejado, valores entre 1 e 240 especificam múltiplos de 5 segundos, ou seja, o valor 10 significa um tempo de espera de 50 segundos, e o valor 200 muda esse valor para 1000 segundos (16 minutos e 40 segundos), valores de 241 a 251 especificam múltiplos de 30 minutos, variando de 11 minutos (241) até 5 horas e meia (251).
Vejamos um exemplo para simplificar ainda mais a explicação:
# hdparm -S240 /dev/hda
/dev/hda:
setting standby to 240 (20 minutes)
Acabamos de configurar nosso HD para desligar após 20 minutos de ociosidade, e para desativar o recurso spindown, utilizamos -S0.