No Linux, o HDPARM é a ferramenta para ajustar as configurações de funcionamento e de desempenho do seu disco rígido.
O hdparm também pode ser usado para medir o desempenho de leitura e para obter informações importantes sobre o seu dispositivo.
A funcionalidades do hdparm abrangem também drives de CD/DVD, Blu-Ray, cartões de memória e unidades de estado sólido (SSD).
Desenvolvido, em 2005, pelo canadense Mark Lord, o hdparm ainda não previa as unidades sólidas e tinha o objetivo apenas de testar discos rígidos IDE, no Linux.
De lá pra cá, ele tem evoluído e ganhado novos recursos que, além de fornecer diagnósticos avançados, permitem fazer ajustes finos aos discos rígidos.
Todas as distro Linux atuais incluem o hdparm.
Para começar a usar o programa, portanto, tudo o que você precisa fazer é abrir um terminal.
Cuidados ao usar o hdparm
Antes de continuar, convém dizer que o aplicativo manipula o drive diretamente, o que pode levar à perda de dados ou — no pior dos casos, danos permanentes ao dispositivo.
A documentação do hdparm alerta para o fato de que algumas de suas opções são experimentais e outras, potencialmente perigosas.
Como obter informações completas sobre o HD com hdparm
Para obter informações do dispositivo, use a opção -i
ou -I
.
Ambas produzem resultados diferentes entre si — sendo que a segunda exibe informações mais completas.
Veja como usar:
sudo hdparm -I /dev/sda1 | less
/dev/sda1: ATA device, with non-removable media Model Number: WDC WD1200BEVS-22RST0 Serial Number: WD-WXEZ07353994 Firmware Revision: 04.01G04 Standards: Supported: 7 6 5 4 Likely used: 8 ...
A função do parâmetro less
, acima, é permitir uma pausa do output a cada página.
Você pode usar este exemplo do aplicativo para obter informações sobre qualquer um dos outros dispositivos do seu sistema (DVD, SDD etc).
Para saber se o SMART está ligado, use o comando grep:
sudo hdparm -I /dev/sda1 | grep -i smart
* SMART feature set * SMART error logging * SMART self-test * SMART Command Transport (SCT) feature set
O asterisco, na listagem acima, indica quais recursos estão ativados. No caso, todos.
Como testar a velocidade do HD com o hdparm
Você pode usar o aplicativo para verificar com que rapidez o seu drive entrega dados pro sistema — a opção, para isto, é -t
.
Com esta opção, o comando cronometra o tempo de leitura, para fornecer base para comparações.
A página do manual recomenda executá-lo de duas a três vezes para obter uma amostra de resultados mais relevante.
Dependendo do seu dispositivo, o resultado pode demorar um pouco a aparecer (não mais que alguns segundos).
Veja, abaixo, um exemplo da execução do comando:
sudo hdparm -t /dev/sda1
/dev/sda1: Timing buffered disk reads: 132 MB in 3.02 seconds = 43.75 MB/sec
Se você estiver interessado, este site tem um artigo que descreve melhor como medir o desempenho da sua unidade de disco rígido ou SSD, com o hdparm — onde são abordados alguns métodos adicionais para determinar a performance do drive.
Como obter informações sobre a capacidade do seu HD
Novamente, a opção -I
pode ser invocada para encontrar informações sobre o que o seu dispositivo pode fazer ou não.
Todas as funções listadas são suportadas pelo dispositivo. As que estão marcadas com “*” (asterisco), à esquerda, estão ativas. As outras precisam ser ativadas, se você as quiser usar.
Para saber se o seu dispositivo suporta Advanced Power Management ou Gerenciamento Avançado de Energia, combine o comando com o grep:
sudo hdparm -I /dev/sda | grep -i power
O resultado, abaixo, mostra 4 itens suportados, dos quais, 3 estão ativados e 1 (em destaque) está desativado:
Advanced power management level: 254 * Power Management feature set * Advanced Power Management feature set * Host-initiated interface power management Device-initiated interface power management
Para melhorar as taxas de transmissão, o HD costuma ler vários setores ao mesmo tempo. Quer saber a quantidade de setores de dados que o seu HD está transferindo simultaneamente? Use os seguintes comandos:
sudo hdparm -I /dev/sda | grep -i multiple
Este recurso está listado sob o título R/W multiple sector transfer
. No resultado abaixo, vemos que a capacidade máxima do meu HD é transferir 16 múltiplos setores de cada vez. Atualmente, ele já está operando de acordo com esta capacidade máxima (current). Veja:
R/W multiple sector transfer: Max = 16 Current = 16 * WRITE_{DMA|MULTIPLE}_FUA_EXT
Se o seu HD não estiver operando na capacidade máxima, é possível alterar o valor com o seguinte comando:
hdparm -m16 /dev/sda
/dev/sda: setting multcount to 8
O uso da opção
-m
é muito perigosa. Apenas os drives IDE antigos funcionam corretamente com isto, usando kernels até a versão 2.6.29.
Outros padrões de controladoras de drives provavelmente apresentarão mau funcionamento.
Seja atencioso.
Alguns drives IDE antigos podem ficar mais lentos com a transferência múltipla de setores. Neste caso, pode ser uma boa ideia desligar o recurso:
hdparm -m0 /dev/sda
/dev/sda: setting multcount to 0
Como ajustar o gerenciamento de energia do disco rígido
Vou explicar como usar 3 opções voltada para configurar o sistema de gestão de consumo de energia nos dispositivos de armazenamento magnéticos (HDs).
O gerenciamento agressivo de economia de energia pode aumentar significativamente a duração da bateria do seu notebook. Por outro lado, pode reduzir consideravelmente a vida útil do seu drive — as ações de desligar, ligar, parking, spindown etc. provocam desgastes na parte mecânica do drive.
Veja, a seguir, os parâmetros que serão usados nos exemplos:
-B
— Regula o uso do Advanced Power Management. Os valores possíveis para este parâmetro vão de 1 a 255 — em que os valores mais baixos implicam em uma gestão mais agressiva da energia e valores mais altos privilegiam a melhor performance.
Valores situados entre 1 e 127, permitem o spindown (veja o significado, abaixo); entre 128 e 254, não permitem mais o spindown. Se você definir o valor de-B
para 255, o gerenciamento de energia será totalmente cancelado.-S
— Ajusta o tempo que o drive tem que ficar sem uso, para ser posto em standby. Os valores possíveis são:- 60 = 5 minutos
- 120 = 10 minutos
- 180 = 15 minutos
- 241 = 30 minutos
- 242 = 1 hora
- 243 = 1.5 horas
- 244 = 2 horas
-M
— Se você tem um drive antigo, não espere suporte a este recurso, que consiste em reduzir a velocidade de movimentação das cabeças mecânicas, no intuito de reduzir a emissão sonora.
Mini glossário:
Automatic Acoustic Management (AAM) é um método para reduzir a emissão acústica em dipositivos de armazenamento em massa ATA, como HDs, drives de DVD etc.
Quando um dispositivo tem suporte a este recurso, ele costuma ser ajustado por software ou firmware.
Advanced Power Management (APM), desenvolvido pela Intel, em 1992, vem sendo melhorado enquanto ferramenta de gerenciamento de energia.
Normalmente, as ferramentas se encontram na BIOS e são gerenciadas por softwares do sistema operacional.
Spindown — O sistema de gestão de energia pode reduzir a velocidade de rotação dos discos dentro do drive, até atingir o modo standby.
Parking — Estacionamento dos “braços” mecânicos que suportam as cabeças magnéticas de leitura do drive. Este movimento retira as cabeças de cima dos pratos/discos para evitar que movimentos bruscos façam com que eles se toquem, o que pode causar danos físicos ao dispositivo.
Isto posto, vamos a alguns exemplos de uso destes parâmetros.
Para saber o valor atual do APM, rode o comando com o parâmetro -B
sem valor algum, assim:
sudo hdparm -B /dev/sda
/dev/sda: APM_level = 254
Para alterar o valor para 255, que desativa completamente o recurso, use assim:
sudo hdparm -B 255 /dev/sda
O sistema avisa que desligou o APM:
/dev/sda: setting Advanced Power Management level to disabled APM_level = off
Para usar um valor mais equilibrdo, como 127 (que permite o uso do recurso de spindown), faça assim:
sudo hdparm -B 127 /dev/sda
/dev/sda: setting Advanced Power Management level to 0x7f (127) APM_level = 127
Ajuste do ruído dos drives
Verifique se o AAM está ativo:
sudo hdparm -M /dev/sda
/dev/sda: acoustic = 254 (128=quiet ... 254=fast)
Valores mais baixos, inibem a movimentação da cabeça magnética do HD. Em compensação reduzem o ruído do drive.
Para alterar o valor:
sudo hdparm -M /dev/sda
/dev/sda: setting acoustic management to 128 acoustic = 128 (128=quiet ... 254=fast)
Como configurar o read ahead
A função read ahead (leitura adiantada, em uma tradução livre), presente em drives modernos, faz com que eles leiam alguns setores a mais, adiantados — na pressuposição de que estes dados serão requisitados em seguida. O read ahead ajuda a melhorar significativamente a eficiência do dispositivo.
Verifique se o seu drive tem esta função ativada:
sudo hdparm -a /dev/sda
/dev/sda: readahead = 256 (on)
Se estiver on
, é por que está ativado.
Atualmente, os drives já vêm com o seu próprio read ahead — eles armazenam os dados lidos “a mais” em uma porção de memória chamada buffer
Com esta opção, o hdparm usa parte da memória RAM do sistema para fazer read ahead adicional ao que o dispositivo já faz.
Para alterar o valor do read ahead para 128 use o comando assim:
sudo hdparm -a 128 /dev/sda
/dev/sda: setting fs readahead to 128 readahead = 128 (on)
Você pode usar a opção -A
(maiúsculo) para ligar/desligar o recurso — -A0
, para desligar e -A1
, para ligar. Veja o exemplo:
sudo hdparm -A1 /dev/sda
/dev/sda: setting drive read-lookahead to 1 (on) look-ahead = 1 (on)
Desligar o read ahead vai acarretar uma degradação sensível no desempenho do drive. Portanto, não é aconselhável fazer isto.
Use o buffer do sistema para aumentar a velocidade de gravação
Quando o write-back caching está ligado, o drive armazena os dados a serem gravados em um buffer — desta forma, ele pode aceitar uma maior quantidade de dados e mais rápido — o que leva a uma consequente melhora na velocidade de gravação.
Para ver se o write-back caching é suportado pelo dispositivo e se está ligado, use o comando acompanhado da opção -W
(letra maiúscula):
sudo hdparm -W /dev/sda
/dev/sda: write-caching = 1 (on)
Quando o recurso não é suportado, o sistema retorna uma mensagem semelhante a esta:
/dev/sr0: SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 write-caching = not supported
Cuidado
A opção que lida com o write-back caching é -W (“W” maiúsculo).
A opção com “w” minúsculo faz outra coisa totalmente diferente e é destacada com perigosa pela documentação do hdparm — ela serve para dar RESET no dispositivo e não é para ser usada, a menos que você saiba o que está fazendo.
Você pode usar a opção -W0
, para desligar o recurso e -W1
, para ligar.
Em algumas máquinas, pode ser necessário ativar write-back cache no BIOS do sistema.
Há casos em que é recomendável desligar este recurso.
Se o computador for desligado abruptamente (por falta de energia, por exemplo), todos os dados no cache serão perdidos — antes, mesmo, de serem salvos.
A documentação do servidor de banco de dados PostgreSQL recomenda, inclusive, que você desative o write-back cache nos seus dispositivos de armazenamento.
Torne as mudanças permanentes
Tal como você já deve desconfiar, os ajustes são temporários.
Quando você religar o computador as configurações de gerenciamento de energia automáticas do painel de configurações do seu sistema entram em vigor novamente.
Se você quiser tornar as mudanças no hdparm permanentes, precisa alterar o arquivo de configuração /etc/hdparm.conf
(no Debian/Ubuntu).
Baseado no que você leu aqui, acho que não vai ser difícil fazer estas alterações.
A principal recomendação é ser equilibrado e fazer as mudanças aos poucos, verificando se houve melhora na performance — ou você pode acabar com um sistema inoperante e precisando reinstalar o sistema — se o HD não tiver quebrado 😉
Tenha em mente que o Linux aloca aleatoriamente nomes aos dispositivos. Desta forma, um drive externo pode estar em /dev/sdb
hoje… e amanhã em /dev/sdc
.
Para atribuir os ajustes do hdparm, permanentemente, a um dispositivo, use sua UUID.
Para ter uma lista dos UUID dos seus dispositivos use o seguinte comando:
ls /dev/disk/by-id/
em destaque, o drive Hitachi/LG de CD/DVD externo
ata-TOSHIBA_MK1652GSX_79V9CNRKT ata-TOSHIBA_MK1652GSX_79V9CNRKT-part1 ata-TOSHIBA_MK1652GSX_79V9CNRKT-part2 ata-TOSHIBA_MK1652GSX_79V9CNRKT-part3 usb-HL-DT-ST_DVDRAM_GP08NU6B_HitachLGda000000704-0:0 wwn-0x50000391e370b74b wwn-0x50000391e370b74b-part1 wwn-0x50000391e370b74b-part2 wwn-0x50000391e370b74b-part3
Portanto, para me referir especificamente a este drive, eu devo usar a nomenclatura /dev/disk/by-id/usb-HL-DT-ST_DVDRAM_GP08NU6B_HitachLGda000000704-0:0
Referências:
http://en.wikipedia.org/wiki/Automatic_acoustic_management
http://en.wikipedia.org/wiki/Advanced_Power_Management
http://www.aboutlinux.info/2004/12/boosting-your-hard-drive-performance.html
http://www.linux-magazine.com/Online/Features/Tune-Your-Hard-Disk-with-hdparm
2 replies on “Melhore a performance do seu disco rígido com hdparm”
Para continuar a elaboração da ideia apresentada, vou ter que reinstalar o Ubuntu, ou o Ubuntu Studio. Já usei ambos. Usei muito tempo o Ubuntu, mas ultimamente vinha usando o Ubuntu Studio. Mas, para realizar os testes dessa natureza, qual distro seria melhor, na sua opinião, Sr. Elias? (Eu preciso reinstalar, pois tive problemas com meu HD de 500GB, mas amanhã mesmo já estarei com um novo, para fazer a reinstalação).
Só para esclarecer uma dúvida rápida, com os comandos de APM -B eu conseguiria reduzir a velocidade de rotação do disco rígido? (por exemplo, com um comando -B 127, em que velocidade rodaria o disco?). Ou teria que ser um comando para spindown específico? Ou, alterando o buffer, para reduzir (ou seria aumentar) a velocidade de gravação, eu conseguiria o efeito adequado?
Bom, senhor Elias, ando com umas ideias aqui, e buscando informação útil para estas minhas ideias, encontro este seu artigo. Minhas ideias? Bom, eu fiz um teste bem simplório, com um arquivo de áudio, .mp3, de 4,16MB, de duração de 4min34s, usando o Audacity; no Audacity, fiz o arquivo de áudio ser reproduzido 4 vezes mais rápido, e, ao mesmo tempo, gravei essa reprodução, com velocidade de 4X. O arquivo gravado, e exportado com .mp3, ficou 4 vezes menor.
Então, reabri o arquivo, no Audacity, e reduzi a velocidade de reprodução dele em 4 vezes, para que a reprodução ocorresse normal e durasse o período normal, de 4min34s (pois a gravação a 4X reduziu a sua duração para 1min8s). Depois fiz o mesmo, com uma taxa de 10X.
A essa altura, creio que tenha captado minha ideia. Acontece que, ao reabrir o arquivo gravado em 4 ou 10X, e reduzir a sua velocidade em 4X (ou 10X), para que a duração do arquivo e a sua reprodução por inteiro volte ao normal, bom, os agudos do arquivo (da música) ficam abafados. Isto posto, penso em ir além. Fazer isso diretamente controlando a velocidade dos discos dentro dos HD’s.
O teste com o arquivo de áudio foi só para mim ter uma noção do que eu estava tentando fazer, mas, no caso de usar essa, digamos, técnica, diretamente em HD’s, qualquer arquivo seria (grandemente) reduzido, inclusive de vídeo e de programas. Bom, no caso de áudio, me parece que sinal analógico seria melhor. E, para qualquer outro tipo de arquivo, quem sabe uma modulação de AM (ou até de FM), poderia vir a calhar.
(Eu estou escrevendo isso num windows, mas muito geralmente uso Ubuntu).
Alguma sugestão, Sr. Elias? O HdParm poderia ajudar nisso?
Obrigado
Gerson