Ajustando o desempenho de discos rígidos

Quando percebemos que nossos HDs estão lentos além do esperado em uma cópia de vários arquivos ou restauração de um backup, procuramos saber o porque de sua baixa performance. No Linux, a principal ferramenta para isso é o hdparm. Neste artigo mostro como podemos fazer para ganhar velocidade em nosso disco.

[ Hits: 29.880 ]

Por: Cleber J Santos em 11/03/2009


Acelerando o HD - Parte II



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.

Página anterior     Próxima página

Páginas do artigo
   1. Acelerando o HD
   2. Acelerando o HD - Parte II
   3. Acelerando o HD - Parte III
Outros artigos deste autor

Linux (kernel) - A história do seu criador

FreeBSD + Zope/Plone, uma idéia frustrante?

Escrevendo scripts no GIMP, pintando a cobra

Assembler no Linux

Software Livre é o futuro

Leitura recomendada

Tim-Web - Insigne Momentum 5.0

Instalando Linux em notebooks - uso de cheatcodes

Gravação de microcontroladores PIC via USB pelo terminal do Linux

Microcode - Como atualizar o firmware do processador

Multiterminais e Userful Multiplier nas escolas públicas: Uma solução barata que sai caro

  
Comentários
[1] Comentário enviado por sandromt em 11/03/2009 - 18:18h

Muito bom, mais pode-se utilizar para HDs SATAS, sem problemas ?!?

[2] Comentário enviado por albfneto em 11/03/2009 - 19:41h

Legal esse artigo, eu gosto de artigos sobre comandos ou pacote clássicos, 10!
mas ouvi dizer que hdparm é arriscado para os dados, é verdade?
porisso nunca tentei nos dois anos que mexo com linux.

[3] Comentário enviado por cleberjsantos em 12/03/2009 - 09:14h

Opa, obrigado pelos comentários, sim pode ser usado com Sata também sem problemas, só lembre-se que ao invés de HDa elel muda para SDa, ou coisa assim.

Quanto a ser arriscado o uso do hdparm, sim, dependendo da situação pode ser arriscado, neste caso se aplica o dizer que: "Cada caso é um caso", por isso é importante que antes de aplicar testes como estes que fiz, você tenha entendido exatamente os parâmetros, os testes de analise não é preciso ter medo, pois são apenas testes para analisar o que seu HD tem suporte e como está a situação dele, é a partir dessa analise que você vai tirar os dados necessários para aplicar ao seu HD ;-)


Att,

Cleber J Santos
http://www.cleberjsantos.com.br

[4] Comentário enviado por neomvll em 12/03/2009 - 10:29h

Ótimo artigo, já ta no Favoritos. Valeu Cleber.

[5] Comentário enviado por erhnamdjinm em 12/03/2009 - 11:57h

"sim pode ser usado com Sata também sem problemas, só lembre-se que ao invés de HDa elel muda para SDa, ou coisa assim. " by cleberjsantos
Não, o hdparm não pode ser usado em SATA, porque ele foi feito para ajustar HD's IDE. Você consegue tirar informações sobre o HD SATA, mas não consegue ajustar parâmetros com ele. Para HD's SATA e SCSI, use o sdparm.

"porisso nunca tentei nos dois anos que mexo com linux" by albfneto
Putz, mexer em qualquer SO sem pelo menos ativar o DMA do HD IDE não deve ser divertido... Deve ficar muuuuito lento.
Faça pelo menos o hdparm -d1 /dev/hda que você notará a diferença.

[6] Comentário enviado por nicolo em 12/03/2009 - 12:14h

Artigo super interessante, uma vez que o disco é o dispositivo mais lento do sistema.
A maioria enche a máquina de megahertz, com um sistema operacional cheio de setings complicados
e esquece do disco.
Na BIOS modernas o DMA e o 32bits transfer podem ser acionados pelo SETUP.
Há controladoras aceleradoras que melhoram o desepenho do disco, mas os preços
não entusiasmam.
Gostei.

[7] Comentário enviado por albfneto em 12/03/2009 - 16:26h

bom minha DMA tá ativada na BIOS, e porisso não está tão lento, tá um pouco lento meu disco slave, mas o master não está;
eu tenho Vista, e Mandriva, Sabayon e Gentoo e Poseidon Linux distribuidos entre os dois hds, tudo 64 bits e tenho 4 giga de ram, é um DX2 6000, AMD 64, e os dois HDs são sata, um é 160 (slave) e o outro, o master é 500.
entendi, devo usar sdparm.

[8] Comentário enviado por cleberjsantos em 12/03/2009 - 16:39h

Opa nicolo, obrigado pela correção sobre o hdparm ;)

[9] Comentário enviado por JefersonLopes em 04/07/2013 - 22:47h

Cara... sei que já tem tempo isso.. mas você ao menos poderia me dar os créditos?

http://www.vivaolinux.com.br/artigo/Hdparm-Entendendo-seu-funcionamento-e-criando-um-script-para-Sla...

hehehe... abraço e boa sorte!

[10] Comentário enviado por cleberjsantos em 05/07/2013 - 08:40h

Jeferson, peço desculpas, não sei do por que não dei crédito, agora vem a questão... Não me lembro como edito artigos aqui no VOL :P se você puder me ajudar já insiro agora os crédito ;)

Abraços!

[11] Comentário enviado por JefersonLopes em 05/07/2013 - 09:17h

Olá Cleber.

Acredito que terás que falar com Fábio Berbert; atualizar artigos antigos creio que só ele!

Att.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts