3.12 Aterramento
3.15.3 Fazendo ajustes finos de performance do disco
Ohdparmé um programa que permite modificar características diversas da unidade de disco rígido e de CD como modo de transferência de dados, leitura adiante, dma, cache, leitura simultânea de setores, hibernação, etc.
Por padrão as transferências de dados entre a controladora do HD (a plaquinha que fica em- baixo dele) e a controladora de periféricos é feita em 16 bits. Para exibir a configuração atual do disco rígido/dev/hda(por exemplo), digite o seguinte comando:hdparm /dev/hda
/dev/hdb:
multcount = 0 (off) I/O support = 0 (16-bit) unmaskirq = 0 (off) using_dma = 1 (off) keepsettings = 0 (off) nowerr = 0 (off) readonly = 0 (off) readahead = 8 (on)
Imediatamente podemos modificar os seguintes campos para melhorar sensivelmente o de- sempenho do disco rígido:
multcount Pode ser modificada com -m[num] e especifica o número máximo de setores que serão acessados de uma só vez na operação de leitura da unidade. O valor máximo recomendado é igual a capacidade máxima suportada pelo seu disco rígido, que pode ser obtida com o comando:hdparm -i /dev/hda
Model=TS6324A2, FwRev=.340 , SerialNo=A99B99JA
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% } RawCHS=13228/15/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=256kB, MaxMultSect=16, MultSect=16 CurCHS=13228/15/63, CurSects=12500460, LBA=yes, LBAsects=12500460 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 udma0 udma1 *udma2 udma3 udma4 udma5 O campo MaxMultSect=16 indica o valor de 16 como máximo suportado em uma única
operação pela unidade. Valores maiores poderão ser especificados mas não trarão ganho de performance. Para discos rígidos Western Digital é recomendável deixar este valor
como 0, porque eles possuem um mecanismo embutido para leitura de setores. Para experimentar valores fora dos padrões, coloque seu sistema de arquivos como somente leitura para não perder dados caso algo saia errado. Note que o comandohdparm -i mostra alguns detalhes interessantes sobre a configuração do disco rígido e modos de operação suportados.
I/O support Modificado com -c[num]. O número especificado pode ser 0para transferência de dados em 16 bits,1para 32 bits e3para 32 bits com uma seqüencia especial de sin- cronismo (alguns chips requerem esta ao invés da1).
using_dma Modificado com -d[num]. Habilita ou não o uso de DMA para a transferência de dados do HD, ativando o controle de algumas operações pelo chipset livrando a CPU para processamento. 0desativa DMA e1ativa. Note que nem todos os chipsets acei- tam esta operação. Esta usada em conjunto com a opção -Xoferece um excelente ga- nho de performance pelo uso correto de sua controladora. A ativação de dma também pode ser feita automaticamente na recompilação do kernel ou especificando o parâmetro ideX=dma (X é o número da controladora IDE) na linha de comando de boot: ou no arquivo/etc/lilo.conf.
xfermode Modificado pela opção -X[num]. Permite selecionar o melhor modo de transferên- cia de dados do seu disco rígido, é nesta parte onde você seleciona o modo UltraDMA para transferência de dados, caso seu HD/CD-ROM suporte. Os seguintes valores são válidos: 32 - PIO Mode 0 33 - PIO Mode 1 34 - PIO Mode 2 35 - PIO Mode 3 36 - PIO Mode 4
64 - Ultra DMA Mode 0 65 - Ultra DMA Mode 1 66 - Ultra DMA Mode 2 67 - Ultra DMA Mode 3 68 - Ultra DMA Mode 4 69 - Ultra DMA Mode 5 70 - Ultra DMA Mode 6
Para descobrir os modos PIO e UltraDMA do seu HD, utilize o comando hdparm -I /dev/hd?. NÃO UTILIZE UM MODO PIO/ULTRA DMA NÃO SUPORTADO PELA SUA CONTROLADORA. CASO SUA PLACA CONTROLADORA DO HD SUPORTE UM MODO ALTO PIO/ULTRADMA MAS SUA CONTROLADORA IDE NÃO SU- PORTA, VOCÊ DEVERÁ UTILIZAR O VALOR MAIS ADEQUADO PARA AMBAS. FAÇA TESTES SEMPRE QUE ALTERAR O MODO DE FUNCIONAMENTO E ESTEJA ATENTO A MENSAGENS DE ERROS PARA QUE NÃO TENHA PERDA DE DADOS!!! unmaskirq Modificado com -u[num]. Habilita ou não o controlador de disco mascarar as inter- rupções de processador durante o processamento das interrupções de disco. 0desativa esta função e1ativa. Use esta opção com cuidado e sob seu próprio risco: algumas pla- cas controladores de HD e controladoras de periféricos não trabalham bem com a taxa de transferência aumentada, podem ocorrer perda de dados. Coloque o sistema de arquivos como somente leitura antes de testar esta característica.
partição com a opção ro no/etc/fstabé preferida.
readahead Modificado com -a[num]. Configura o número de blocos que serão lidos anteci- padamente no sistema de arquivos (por padrão é usado 8 blocos - 4 Kb). Este número poderá ser modificado para se adequar a utilização do computador. Em sistemas com muita procura de arquivos pequenos (servidores web), um valor pequeno (como o pa- drão) é recomendável. Se a máquina é um servidor de arquivos dedicado, um valor maior trará maiores benefícios.
Veja mais detalhes sobre o comando hdparm em sua página de manual. Depois de seleci- onado o melhor valor de performance, você deverá salvar em um arquivo que será lido na inicialização para ativação destes valores. Para fazer teste de performance de leitura bruta uti- lize o comandohdparm -t /dev/hd?, para fazer testes com o uso de cache, use o comando hdparm -T /dev/hd?.
OBS:Se oLinuxresetar o disco rígido, a maioria das configurações retornarão ao seu valor padrão. Isto ocorre devido a opções mau utilizadas no hdparm, não suportadas pelo disco rígido ou por problemas no HD/controladora.
Exemplos:
# Ajusta o número de setores simultâneos para 16 e o modo de transferência para # 32 bits no disco rígido /dev/hda
hdparm -c1 -m16 /dev/hda
# Programa a leitura adiante do HD para 64 blocos (32Kb), o modo de transferência # para 32 bits, usar DMA, e 16 setores simultâneos.
hdparm -c1 -d1 -m16 -a64 /dev/hda
#Mostra os valores de configuração atuais do disco rígido hdparm /dev/hda