Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

GNU Linux - Otimização do Acesso a Disco

Colaboração: Marcelo de Gomensoro Malheiros

Data de Publicação: 30 de Abril de 2001

O Marcelo me deu uma dica valiosissima para otimizar o tempo de acesso a disco em meu computador com Conectiva GNU/Linux.

Antes da dica porém cumpre lembrar que o comando hdparm deve ser usado com MUITO cuidado, pois algumas opções, se ativadas, podem corromper os dados em seu disco. Na descrição a seguir inclui apenas aqueles parâmetros que podem ser alterados com segurança e ainda assim garantir um ganho de performance substancial, como vocês poderão constatar. Para mais informações sobre o significado dos parâmetros listados, consulte a manpage do comando hdparm com o comando "man hdparm".

Segue abaixo a transcrição do que fiz em minha máquina com algumas observações minhas.

O comando hdparm invocado tendo como parâmetro apenas a unidade de disco que se deseja otimizar fornece os parâmetros de configuração adotados:

  [root@paris /root]# 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     = 1245/255/63, sectors = 20005650, start = 0

Como se pode ver acima, a maioria das opções de otimização estão desativadas (off).

O comando a seguir realiza testes de leitura no disco e nos oferece ao final a taxa de transferência obtida:

  [root@paris /root]# hdparm -t /dev/hda
  /dev/hda:
   Timing buffered disk reads:  64 MB in 16.02 seconds =  4.00 MB/sec

A taxa de transferência foi de 4MB/s, correspondente ao default do sistema.

Vamos então ativar o parâmetro "I/O support":

  [root@paris /root]# hdparm -c 1 /dev/hda
  /dev/hda:
   setting 32-bit I/O support flag to 1
   I/O support  =  1 (32-bit)

Vejamos então que melhoria a alteração deste parâmetro trouxe ao sistema:

  [root@paris /root]# hdparm -t /dev/hda
  /dev/hda:
   Timing buffered disk reads:  64 MB in  9.50 seconds =  6.74 MB/sec

Já obtivemos uma boa melhora, o tempo de acesso a disco caiu quase que pela metade.

Alteremos agora o parâmetro "using_dma":]

  [root@paris /root]# hdparm -d 1 /dev/hda
  /dev/hda:
   setting using_dma to 1 (on)
   using_dma    =  1 (on)

A nossa configuração fica então como:

  [root@paris /root]# hdparm /dev/hda
  /dev/hda:
   multcount    =  0 (off)
   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     = 1245/255/63, sectors = 20005650, start = 0

Façamos outro teste para vermos o ganho obtido:

  [root@paris /root]# hdparm -t /dev/hda
  /dev/hda:
   Timing buffered disk reads:  64 MB in  5.19 seconds = 12.33 MB/sec

O tempo de acesso a disco passou de 4MB/s para 12.33MB/s, uma melhora substancial.

Para ativar o comando hdparm permanentemente, utilize, em sistemas Conectiva Linux e outros derivados do RedHat, o comando ntsysv. Altere antes os parâmetros que se deseja ativar no arquivo /etc/sysconfig/hdparm.

Este arquivo, no meu computador, tem a seguinte forma:

  < A NAME="note# IDE devices " HREF="#textnote# IDE devices ">< SUP># IDE devices #
  #  /dev/hda - primary master
  #  /dev/hdb - primary slave
  #  /dev/hdc - secondary master
  #  /dev/hdd - secondary slave
  DEVICE="/dev/hda /dev/hdb /dev/hdc /dev/hdd"
   
  < A NAME="note# Status " HREF="#textnote# Status ">< SUP># Status #
  #  0 - disable
  #  1 - enable
  STATUS="1 0 0 0"
   
  < A NAME="note# Multiple sector mode (aka IDE Block Mode) " HREF="#textnote# Multiple sector mode (aka IDE Block Mode) ">< SUP># Multiple sector mode (aka IDE Block Mode) #
  #  Common values: 0, 2, 4, 8, 16 (fast)
  MULTCOUNT="-1 -1 -1 -1"
   
  < A NAME="note# IDE 32-bit I/O support " HREF="#textnote# IDE 32-bit I/O support ">< SUP># IDE 32-bit I/O support #
  #  0 - 16-bit (default)
  #  1 - 32-bit (fast)
  #  2 - 16-bit
  #  3 - 32-bit w/ special sync (fast/safe)
  IO_SUPPORT="1 1 1 1"
   
  < A NAME="note# Interrupt-unmask " HREF="#textnote# Interrupt-unmask ">< SUP># Interrupt-unmask #
  # -1 - disable
  #  0 - safe
  #  1 - fast
  UNMASKIRQ="-1 -1 -1 -1"
   
  < A NAME="note# Using DMA " HREF="#textnote# Using DMA ">< SUP># Using DMA #
  # NOTE: only works with a few combinations of drives and interfaces
  # which support DMA and which are known to the IDE driver
  # -1 - disable
  #  0 - safe
  #  1 - fast
  USING_DMA="1 1 1 1"

Veja a relação completa dos artigos de Marcelo de Gomensoro Malheiros

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.98/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1207 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Guia Manga Universo