O local certo para se aprender Linux no Brasil, a sua fonte de artigos, dicas, tutoriais, noticias, howto, reviews e muito mais.

Otimizando seu Linux com HDParm

Arquivado em Artigos <> Sistema
Otimizando seu Linux com HDParm
HDParm uma poderosa ferramenta onde permite que você buscar a melhor configuração para o seu hd, visando melhorar a sua performance ao máximo.

Então você compilou o kernel do seu Linux, e acha que já fez de tudo para melhorar a otimização dele? Errado.

Nesse artigo, eu estarei apresentando um aplicativo genial, que pode melhorar muita a performance de leitura/escrita do de um disco rígido: o hdparm.

O hdparm funciona apenas em discos IDE, o que provavelmente deve ser o seu caso. Para usá-lo, você vai precisar saber algumas propriedades do disco rígido, pois o hdparm não lhe fornecerá nenhuma informação nesse sentido, pelo contrário: ele espera que você forneça esse detalhes.

 

Um outro detalhe interessante que vale a pena ser citado, é que quanto maiores facilidades/capacidade o disco IDE possuir (em outras palavras, quanto mais novo) melhores serão os resultados. Você pode dobrar, triplicar e em alguns casos até obter uma performance de 6 à 10 vezes a encontrada originalmente, antes da aplicação do hdparm.

Bem, como nem tudo são flores, sou obrigado a dizer que você deve usar o hdparm com extrema cautela. Se você passar parâmetros de configuração para o hdparm que exceda a capacidade do disco ou da placa mãe, o hdparm não irá checar isso, e você correrá o risco de ter a máquina travada, ou pior, ter corrupção dos dados presentes neste disco. Então, antes de mais nada, faça backup dos dados!

A propósito, se os termos técnicos te assustaram um pouco (talvez muito), não se preocupe, eu vou apresentar uma curta explicação do que eles siginificam mais à frente. Entretanto, entender o básico da estrutura de um computador vai lhe ajudar bastante também.

Como obter dados sobre o disco rígido

Claro, se você tiver a sorte de ter um manual do fabricante ou conhecer o hardware da máquina, então você pode se dar por felizardo e pular essa parte. Caso contrário, vamos em frente.

1. A maneira correta

Você só precisa executar um:

# hdparm -i /dev/hda

/dev/hda:

Model=WDC WD100EB-00CSF0, FwRev=04.01B04, SerialNo=WD-WMAAV1614979
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=19541088
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2
AdvancedPM=no
Drive Supports : Reserved : ATA-1 ATA-2 ATA-3 ATA-4 ATA-5

Trocando o /dev/hda pelo disco que você estiver usando. Esse comando irá consultar o drive do disco rígido que está sendo usado, portanto fornecerá todas as informações que você vier a precisar.

# Usando a BIOS do computador.

Este pode ser um método sofrível de obter informações sobre o HD. Durante o boot da máquina, a BIOS terá os dados armazenados sobre os discos rígidos desde a primeira vez que fez um reconhecimento nos mesmos. O que significa que ela sabe (torcemos para que sim!) com o que está lidando. Mas isso não quer dizer que ela vai lhe dar todas as informações de maneira clara. Isto pode variar de fabricante para fabricante.

# Recolhendo informações da mensagem de boot da máquina

Se você tiver memória fotográfica, paciência ou uma câmera, você pode coletar informações sobre o hd durante o boot da máquina. Claro, novamente você está dependendo da BIOS. Então cruze os dedos ...

# Indo ao site do fabricante

Essa me parece a melhor forma. Ninguém melhor do que fabricante para lhe fornecer esses dados exatos. Alguns ainda fornecem ferramentas, normalmente discos de boot, que você pode baixar e testar seu hd.

# Procurando ajuda em listas de discussão

Bem, esse é um procedimento bastante básico para alguém que tem dúvidas sobre Linux, mas vale a pena citar, pois alguns modelos/fabricantes de HD são muito populares, então a possibilidade de você encontrar alguém com o mesmo modelo que o seu pode ser grande.

Iniciando os testes de benchmark

O primeiro passo para começarmos é verificar a quanto de velocidade o HD está funcionando. O Hdparm possui capacidade de realizar estes testes, para isso execute o comando assim:

# hdparm -Tt /dev/hda

A opção T irá testar o cache da memória, CPU e o buffer. A opção t irá mostrar resultados de leitura diretamente no disco, não no cache. Usando as duas opções e executando o comando várias vezes, você vai ter uma idéia de como está a perfomance do disco. Lembrando que /dev/hda é apenas um exemplo, isso pode ser executado com /dev/hdb, ou /dev/hdc ou onde estiver o HD.
Para apresentar resultados práticos, eu usei uma máquina com Pentium 233 Mhz, 76 Mhz de RAM, com um HD Quantum Fireball.

# hdparm -Tt /dev/hda

/dev/hda:

Timing buffer-cache reads: 128 MB in 4.73 seconds = 27.06 MB/sec
Timing buffered disk reads: 64 MB in 21.18 seconds = 3.02 MB/sec

Parece bastante lento para mim. Vamos checar como o Linux está usando este HD:

# hdparm /dev/hda

/dev/hda:
multcount = 0 (off)
I/O support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 1023/64/63, sectors = 4124736, start = 0

Credo, temos algo de errado aqui! Meu hardware pemite, por exemplo, o uso de DMA (Direct Memory Access), mas olhando o quadro acima, é possível ver que essa opção está desligada. E o ítem I/O Support está usando parâmetros para 386! Minha máquina é 32 bits ora!
Bem, temos alguns erros, então vamos entender os ítens mostrados acima, para tomarmos algumas atitudes:

* multcont: Isso é uma abreviação para contagem de múltiplos setores (multiple sector count). Isto controla quantos setores são lidos juntos de um disco em um única interrupção para E/S. Configurando isso, você reduz a procura do sistema operacional pelo disco de E/S em 30 à 50%, e em muitos sistemas ainda aumenta a transferência de dados em 5 à 50%. A boa notícia é que a maioria dos drivers IDE suportam isso.
* I/O support: Controla como os dados são transmitidos do barramento PCI para a controladora. Quase todos os controladores modernos suportam o modo 3 (32 bits w/sync).
* unmaskirq: Ligue isto, e você vai permitir que o Linux "desmascare" outras interrupções enquanto processa uma interrupção de disco. Isso significa que o sistema operacional vai fazer outras coisas enquanto a resposta de interrupção de disco não retorna. Isso vai aumentar o tempo de resposta do sistema, mas não costuma funcionar em algumas configurações de hardware.
* using_dma: Bem, está meio claro. Se o seu sistema permite o uso de Direct Memory Access, então use.

Então eu habilitei o uso de DMA. Veja o resultado:

# hdparm -d 1 /dev/hda

/dev/hda:
Timing buffer-cache reads: 128 MB in 5.42 seconds = 23.62 MB/sec
Timing buffered disk reads: 64 MB in 14.92 seconds = 4.29 MB/sec

Melhorou não? Pelo menos o segundo ítem. Mas podemos tentar mais coisas. Aliás, a menos que alguém lhe cante a bola, você terá que experimentar algumas vezes, até atingir algo bom. Eu no caso, parei enquanto as configurações estavam dentro de um limite de risco aceitável. Veja o que fiz, e o resultado:

# hdparm -m 8 -d 1 -X34 -a 16 /dev/hda

/dev/hda:
multcount = 8 (on)
I/O support = 1 (32-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 1023/64/63, sectors = 4124736, start = 0

# hdparm -Tt /dev/hda

/dev/hda:
Timing buffer-cache reads: 128 MB in 4.82 seconds = 26.56 MB/sec
Timing buffered disk reads: 64 MB in 7.09 seconds = 9.03 MB/sec

A moral da história é que essa não é necessariamente a melhor configuração. É apenas um exemplo. Se você tiver tempo e condições para lidar com os riscos, pode ir mais a fundo, e encontrar configurações mais, ahn, "pra macho".
E procure realmente fazer backup e ler a manpage do hdparm. Há muitos mais detalhes lá do que expliquei aqui.

* Outras observações igualmente importantes

1. Não se amedronte com os comandos. Eles podem parecer complicados, mas só passando os parâmetros informados pela opção -i do hdparm já lhe trará bons resultados
2. Eu andei fazendo testes com os tipos de partição EXT3 e ReiserFS, os sistemas de arquivo com Journaling mais usados no Linux. Os resultados com o EXT3 foram satisfatórios, mas com o ReiserFS não, inclusive eu travei a máquina de testes usando a opção -X do hparm. Conclusão: utilize o hdparm para partições com EXT3 e deixe para lá se for ReiserFS. De qualquer modo, ambas são mais rápidas que o EXT2, em especial o ReiserFS.

Esse texto é de autoria de Alceu Rodrigues de Freitas Junior.
Envie seu comentário
 
 
Copyright © Sputnix.com.br, Seja Livre, Use Linux