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: 27.335 ]

Por: Cleber J Santos em 11/03/2009


Acelerando o HD



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.

Com o utilitário hdparm, além das várias possibilidades úteis, podemos verificar e obter informações para futura análise dos discos, configuração de discos óticos e rígidos, testes de desempenho, gerenciamento de energia e ajustar os parâmetros de configuração para os mesmos.

Só não devemos esquecer que para cada drive de disco ou hard disc e para cada fabricante existe uma configuração específica.

Então utilize os dados aqui mencionados com extrema cautela e de preferência como um esboço para uma configuração mais fiel e específica para o seu sistema.

Informações sobre o HD e testes de desempenho no sistema

Caso você já tenha o hdparm instalado, já poderemos utilizá-lo para buscar informações no sistema, mas caso ainda não o tenha instalado, busque e instale para sua distribuição, este artigo foi escrito pensando no Slackware, só para variar :-), então procure no CD1 de instalação do Slackware, na raiz do cdrom, "slackware/a/hdparm-6.1-i486.tgz" e utilize como super-usuário o comando (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:

# apt-get install hdparm
ou
# aptitude hdparm

Este não é um artigo que vai mostrar como instalar o aplicativo, sendo assim para cada distribuição será necessário uma pesquisa ao amigo Google. Após ter certeza de que temos o hdparm instalado, vamos verificar as informações do HD com o parâmetros -i ou -I, onde o primeiro parâmetro vai nos fornecer informações menos técnicas sobre o disco rígido/drive, já o segundo nos dará informações completas e mais detalhadas, onde poderemos saber o que nosso disco rígido suporta e o que não suporta.

Aqui vai mais uma chamada de atenção, sempre é bom verificar se tua BIOS suporta certos parâmetros, imagine que seu HD suporte Ultra-DMA 4 ou 5 e sua BIOS diz que suporta no máximo Ultra-DMA 2, então não adiantaria utilizar UDMA4, além do risco de ter problemas de compatibilidade como travamentos no sistema e correndo o risco de perder dados.

Obtendo informações

No exemplo que veremos estamos usando um HD não SATA, neste caso se fosse SATA teríamos SDA ao invés de HDA, e é claro cada caso é um caso, no seu caso pode ser HDB ou HDC, enfim, a idéia aqui é que você tenha um entendimento técnico mínimo, não é legal ir se aventurando com algo que pode ferrar seu disco.

Vamos utilizar o comando:

# hdparm -i /dev/hda

No meu caso tive a saída:

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

Agora o que podemos tirar deste exemplo?

Podemos verificar dados como Modelo, Firmware e Serial em (Model=ST340014A, FwRev=3.06, SerialNo=5JXAFYM6), dentre outros dados,

CSH e LBA na linha 3 e 5 que é compatível do HD - (RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4) & (CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=78165360)

Já na 4ª linha podemos saber o tamanho do buffers de leitura ( BuffSize=2048kB ) e qual o máximo de transferência múltipla por setores ( MaxMultSect=16, MultSect=16 ). Nas linhas 7, 8 e 9 podemos verificar os modos PIO,DMA e UDMA suportado, e em qual está estamos operando no momento. E por último se o gerenciamento de energia está ativo ou não em: ( AdvancedPM=no), se o cache está ativo em: (WriteCache=enabled) e se o drive é compatível com o padrão ATA ( Drive conforms to: ATA/ATAPI-6 T13 1410D revision 2 ).

Uma outra forma de obter informações mais precisas é:

# hdparm -I /dev/hda

Mas ainda vamos nos manter concentrados no exemplo já utilizado, 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

    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

Assembler no Linux

Escrevendo scripts no GIMP, pintando a cobra

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

Screen, eita ferramenta porreta!

Software Livre é o futuro

Leitura recomendada

Overclock em placas de vídeo GeForce

Processador - Tipos e características

Zebra Barcode Reader: Lendo código de barras com a sua Webcam no Linux

Instalando uma placa wireless

Arduino - Visão Geral

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts