Neste artigo tentarei explicar os conceitos básicos do hdparm, uma importantíssima ferramenta de configuração que pode deixar o seu HD em ponto de bala, tinindo e pronto pra qualquer tarefa.
Uma ferramenta de fundamental importância no hdparm é o teste de desempenho. Você usá-las antes de fazer alterações nos parâmetros do HD e, assim que fizer alterações, voltar a realizar os testes para comparar e verificar se houve melhora no desempenho ou não.
Vejamos como se faz isso:
# hdparm -Tt /dev/hda
/dev/hda:
Timing cached reads: 1200 MB in 2.00 seconds = 598.89 MB/sec
Timing buffered disk reads: 82 MB in 3.06 seconds = 26.77 MB/sec
Aqui foram feitos dois testes. O primeiro é o de tempo de leitura com cache (cached reads), e o segundo, de tempo de leitura de disco com buffer (buffered disk reads).
Você deve aplicar esse testes como o mínimo de recursos sendo utilizados. De preferência, utilize o modo monousuário:
# init 1
Para você o quanto você pode perder em desempenho, fiz um teste simples: desativei todos os recursos do disco, como DMA, leitura adiantada, etc, e fiz o teste de desempenho, e em seguida repeti o teste após ativar os devidos recursos. Veja:
# hdparm -c0 -d0 -A0 -m0 -a0 /dev/hda
/dev/hda:
setting fs readahead to 0
setting 32-bit IO_support flag to 0
setting multcount to 0
setting using_dma to 0 (off)
setting drive read-lookahead to 0 (off)
multcount = 0 (off)
IO_support = 0 (default 16-bit)
using_dma = 0 (off)
readahead = 0 (off)
# hdparm -Tt /dev/hda
/dev/hda:
Timing cached reads: 1196 MB in 2.00 seconds = 596.90 MB/sec
Timing buffered disk reads: 2 MB in 4.30 seconds = 476.46 kB/sec
# hdparm -c1 -d1 -X69 -A1 -a16 -m16 /dev/hda
/dev/hda:
setting fs readahead to 16
setting 32-bit IO_support flag to 1
setting multcount to 16
setting using_dma to 1 (on)
setting xfermode to 69 (UltraDMA mode5)
setting drive read-lookahead to 1 (on)
multcount = 16 (on)
IO_support = 1 (32-bit)
using_dma = 1 (on)
readahead = 16 (on)
# hdparm -Tt /dev/hda
/dev/hda:
Timing cached reads: 1200 MB in 2.00 seconds = 599.79 MB/sec
Timing buffered disk reads: 82 MB in 3.04 seconds = 26.94 MB/sec
Veja agora a tabela de desempenho:
Performance
Velocidade de gravação
sem hdparm
com hdparm
cached reads
596,90 MBps
599,79 MBps
+0,48%
buffered disk reads
476,46 kBps
26,95 MBps
+5692%
Como se vê, configurado com o hdparm, o HD alcançou uma performance 5692% maior que a alcançada sem as configurações, nas gravações com buffer (buffered disk reads).
O ideal é que você faça esses testes antes e depois de modificar qualquer parâmetro, para ter certeza de que não está fazendo uma configuração que vai prejudicar o desempenho do HD.
[1] Comentário enviado por cvs em 19/11/2004 - 08:27h
Muito bom seu artigo cara, gostei mesmo já usando o hdparm há algum tempo obtive muitas respostas aqui.. .só faço uma ressalva, a respeito da instalação, normalmente ele já vem instalado por default... é só...parabens.
[6] Comentário enviado por lowpis em 19/11/2004 - 14:01h
O meu dá esse erro:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
Alguém sabe o porquê?
E, pra quem usa o Gentoo, edite as configurações no arquivo /etc/conf.d/hdparm
O arquivo eh bem explicado, mas basicamente, você precisa colocar uma variável com os argumentos. Aqui em casa, usei:
hda_args="-c1 -d1 -X69 -A1 -a64 -m16"
Depois, para colocar o hdparm na inicialização, faça:
$ rc-update add hdparm boot
[7] Comentário enviado por gibabsb em 19/11/2004 - 18:56h
Parabéns pelo artigo muito bom mesmo, tem uma máteria sobre hdparm na revista LInux Magazine do mês passado, vale a pena dar uma olhada.
Tenho apenas uma dúvida, uso o RH9 e não encontrei o arguivo hdparm.conf então como faço para habilita-lo logo na inicialização ou ele já inicializa automático?
Um abraço
Essa mensagem siginifica que houve erro de entrada/saída no instante em que o hdparm tentava setar o seu HD para o modo UDMA5. Isso pode ter diversos motivos, e um deles é o seu HD na verdade não suportar o modo UDMA5, apesar de o hdparm reconhecer que suporta. Tente ativar os modos udma4 (-X68) e udma3 (-X67). Ou então, configure o /etc/hdparm.conf e reinicie o computador para ver se as configurações funcionam corretamente quando aplicadas no momento do boot.
[10] Comentário enviado por removido em 20/11/2004 - 01:10h
SCRIPT DE EXECUÇÃO DO HDPARM
O script abaixo está diponível em http://www.guiadohardware.net/kurumin/dicas/005/index.php#01 e é de autoria do Alan Rafael Rodrigo Batista.
Bom proveito!
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
. Ganho de performance no HD
Por Alan Rafael Rodrigo Batista
Crie um arquivo:
sudo kedit harddisk.sh
Coloque nele o conteúdo abaixo:
#!/bin/sh
echo "mostrando na tela as configurações do disco"
hdparm -c -d -t /dev/hda #corrija aqui caso seu disco não seja o hda
echo
echo "melhorando a leitura e escrita do hda"
hdparm -c 1 -d 1 -t /dev/hda #corrija aqui caso seu disco não seja o hda
echo "feito!"
[11] Comentário enviado por pop_lamen em 20/11/2004 - 01:30h
Muito bom o artigo, bem completo, estudado.
Prabéns, todos os artigos da comunidade deveriam ser como o seu, e não assuntos cobertos só pela metade.
Wainer.Chiari
[12] Comentário enviado por nemphilis em 20/11/2004 - 22:21h
este artigo me chamou a atenção, além da boa linguagem utilizada, sanou todas as duvidas dos topicos abordados. Parabéns bozolinux, eeeeeeeesse menino vai longe!!!
[14] Comentário enviado por davidsonpaulo em 23/11/2004 - 16:04h
bighead,
Essas mesmas mensagens aparecem num computador velho de um amigo meu, e o problema é a quantidade de 'bad blocks' (setores defeituosos) no HD. O hdparm não vai consertar isso, pois sua função não é corrigir problemas em HDs, mas somente configurá-los com os devidos recursos a fim de melhorar a performance de leitura e escrita.
[16] Comentário enviado por impalerdrumer em 27/02/2005 - 19:35h
cara nenhum dos meus dois hds estao setando o udma4(o máximo suportado pela minha placa mãe q é ata66), ele dá o seguinte erro:
/dev/hda:
setting xfermode to 68 (UltraDMA mode4)
HDIO_DRIVE_CMD(setxfermode) failed: Input/output error
vi vc falando pra um cara aqui q estava com a mesma duivida, q esse problema pode ser relacionado ao hd nao suportar o modo q se esta tentando setar, mas tenho certeza de que meus hds suportam, tanto que um deles é um Samsung novinho de 7200rpm, q suporta até ata133 por sinal.....
[21] Comentário enviado por cytron em 23/02/2007 - 15:51h
Encontrei a solução para o SATA, veja bem como estava fácil de achar:
HDA = hdparm
SDA = shparm
O site é http://sg.torque.net/sg/sdparm.html, mas já vou avisando, é coisa para alienígena! Eu não consegui configurar nada, é muito diferente do hdparm.
[22] Comentário enviado por removido em 12/07/2007 - 03:54h
Davidson,
Achei seu artigo show! Aumentar o desempenho de um disco é imprescindível, principalmente, quando o assunto se trata de servidores, onde a velocidade do disco é um fator crucial.
[24] Comentário enviado por wagnux em 08/02/2008 - 10:05h
Estou com o mesmo problema apresentado pelos colegas:
Depois de executar esse comando # hdparm -d 1 /dev/hda
/dev/hda:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)
Alguém teria uma sugestão pra resolver esse problema?
[27] Comentário enviado por davidsonpaulo em 16/01/2012 - 11:54h
marcelohcm, o hdparm só serve para discos IDE, e ao que tudo indica o seu disco é SCSI ou SATA. Nesse caso, você precisará utilizar o comando sdparm. Um grande abraço!