Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (Acelerando o HD )

Melhorando a Performance do seu HD

Piter PUNK

Atualmente os dispositivos IDE possuem taxas de transferência altas (através do UltraDMA) e várias outras maneiras de melhorar a sua performance. Com o hdparm é possível fazer este ajuste fino, é o que iremos ver neste artigo.

1 Introdução

O hdparm é um utilitário desenvolvido para configurar os parâmetros do HD (daí vem o nome, HD PARaMeters). Muitas vezes o seu HD está utilizando os ajustes mínimos e você não sabe porque a performance está tão aquém do desejado. Com um bom uso do hdparm isso muda, você pode configurar o seu drive para utilizar todos os recursos possíveis e imagináveis -;)

2 Observando o seu HD

A primeira coisa a fazer é observar a identificação do seu HD e as configurações atuais. Com base nestes dados é que serão feitas todas as alterações. É importante fazer estas verificações, pois alguns parâmetros errados podem danificar seus dados (e talvez seu HD). Olhe a identificação com o comando:

$ hdparm -i /dev/hda

Troque o /dev/hda pelo device a ser utilizado. Aqui na minha máquina o resultado foi:

/dev/hda:

Model=QUANTUM FIREBALLlct20 20, FwRev=APL.0900, SerialNo=552114732078 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs } RawCHS=16383/16/63, TrkSize=32256, SectSize=21298, ECCbytes=4 BuffType=DualPortCache, BuffSize=418kB, MaxMultSect=8, MultSect=off CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=39876480 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 udma3 udma4 *udma5 AdvancedPM=no Drive Supports : ATA/ATAPI-5 T13 1321D revision 1 : ATA-1 ATA-2 ATA-3 ATA-4 ATA-5

Que tipo de informações podemos tirar daí? Muitas importantes...

O MaxMultSect, indica qual a quantidade máxima de setores que ele pode ler de uma vez e o MultSect indica quantos estão sendo efetivamente utilizados. Mais abaixo temos os PIO modes e DMA modes suportados pelo seu dispositivo, o que está ativo no momento aparece com um * na frente. Por último, o AdvancedPM mostra se ele suporta o APM (Gerenciamento Avançado de Energia).

Outro comando para retirar informações é o:

$ hdparm /dev/hda

O resultado é semelhante a isto:

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

Rapidamente, multcount é a quantidade de setores que ele está lendo por vez, I/O support indica o modo em que ele está (os disponíveis são 16/32/32sync). O using_dma revela se o recurso do DMA está ativo ou não. Se estiver ativo, keepsettings mantém as configurações após um soft reset (se você não sabe do que estou falando, deixe como está). readonly geralmente está setado para 1 apenas em CD-ROMs, este parâmetro sinaliza se o dispositivo é somente leitura. readahead mostra quantos setores à frente serão lidos quando você acessar o HD.

Se você não entendeu alguns destes parâmetros, não se preocupe, não é todo mundo que entende mesmo. E a maior parte deles serão explicadas com mais detalhes logo a frente. Alguns destes parâmetros se referem apenas a configuração física do seu HD (C/H/S, quantidade de cache, tipo de Buffer) e portanto não tem como ser configurados (a não ser com o ferro de solda -;)).

3 Configurando o dispositivo

Agora vem a hora divertida, configurar o HD! Lembre-se que algumas destas configurações são perigosas e podem destruir tudo. Se guie sempre pelas informações que você conseguiu através do hdparm -i.

3.1 I/O support

Ok, a não ser que você possua uma interface IDE (E)ISA, todas as outras (PCI/VLB) suportam o modo de 32bits. Se o seu computador é mais novo que um 486 com certeza sua IDE é PCI. Se o seu computador for um 486, depende muito da sua placa-mãe. Se o seu computador for MCA eu não tenho a mínima idéia do que fazer.

O modo 3 é necessário apenas para alguns chipsets. Normalmente coloque o modo 1 (o desempenho é melhor). Não achei documentação sobre o modo 2 (16-bits também), suponho que seja 16bits com sincronização...

3.2 MultSect ou Multcount

Este é bem simples. Coloque no máximo suportado pelo seu HD. No caso do meu, o MaxMultSect é igual a 8. Então colocarei o MultSect igualzinho. Faça isso com o comando:

$ hdparm -m 8 /dev/hda

Obviamente, no caso do seu HD pode ser necessário trocar o /dev/hda pelo dispositivo correto e o número 8 pelo número que corresponde ao MaxMultSect do seu HD. Sem segredos -:)

3.3 Ativando DMA

Outro fácil, você ativa o DMA fazendo hdparm -d1 /dev/hda, para isso funcionar direito, a sua interface IDE tem que estar preparada e suportar DMA.

3.4 PIO modes e DMA modes

Estes dois são setados pelo mesmo parâmetro, o -X. Este é um daqueles parâmetros que podem destruir todos os seus dados e botar fogo na sua casa. Coloque apenas os modos suportados pelo seu equipamento.

Funciona mais ou menos assim, para os modos de DMA normal (multiword DMA ou mdma) você coloca -X32+(número do dma). Para colocar em mdma2, segundo esta sintaxe, você digita o seguinte comando:

$ hdparm -X34 /dev/hda

Para os modos de UltraDMA e PIO o processo é semelhante. Com a diferenca que o número base para os modos PIO não é 32, é 8. E para os modos de UltraDMA o número mágico é 64. Como meu HD suporta ATA100, coloquei-o em udma5, com o seguinte comando:

$ hdparm -X69 /dev/hda

Lembre-se que os modos mais altos de DMA estão disponíveis apenas para alguns chipsets. Ainda bem que o meu está entre eles -;). Os modos de ATA66 e ATA100, necessitam de um cabo especial de 80 vias. Colocar seu HD em ATA100 sem o cabo apropriado não é definitivamente uma boa idéia.

3.5 Readahead

A idéia do readahead é fácil de confundir com o multcount, mas ambos são conceitos diferentes. O multcount é limitado pelo seu hardware, é uma capacidade do seu HD de ler mais de um setor a cada requisição. Já o readahead diz para seu computador quantos setores para frente ele deve ler.

Isso faz que nas leituras de grandes arquivos, o acesso seja mais rápido. Porém, torna-se mais lento para arquivos pequenos. Uma boa idéia e deixar este valor igual ao do multcount, assim não se torna fazer mais de um acesso para ler a quantidade requisitada de setores à frente.

Se você for acessar muitos arquivos grandes, pode ser uma boa idéia colocar um valor maior no readahead. O valor padrão é 8 setores (4kbytes geralmente) por leitura. A sintaxe do comando é:

$ hdparm -a n /dev/hda

Onde o n representa a quantidade de setores a serem lidos.

4 Ajustes finais

Existem várias outras configurações a serem feitas com o auxílio do hdparm. Boa parte delas, podem ser vistas utilizando as páginas de manual do comando. As indicadas aqui foram apenas as mais comuns.

Todas as configurações desaparecem após você rebootar o micro (não adianta setar o keep settings, ele serve apenas para o soft reset), é uma boa idéia colocá-las no arquivo /etc/rc.d/rc.local

Quaisquer dúvidas, críticas ou sujestões podem ser enviadas para o endereço tradicional: piterpk@terra.com.br


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.