Para um melhor desempenho, os dados que são solicitados constantemente deverão ser armazenados em uma partição no inicio do disco rígido. Esta área é a mais rápida e checa a ser 60% mais rápida que o final do HD (em alguns modelos). Em especial, a partição de boot, swap e binários do sistema poderão ser armazenados nesta partição para aumentar a velocidade da carga de programas e não prejudicar a performance do sistema quando o uso da partição de troca (swap) for necessária.
Em discos rígidos grandes (6GB ou maiores) é recomendável criar no mínimo uma
partição pequena para /boot
, outra para
/
, outra para swap
e outra para
/usr
. Ficando distribuídas da seguinte maneira no disco
rígido:
BBRRRRRRRRRRRRRRRRRRRRR RRRRRRRRRRRRRRRRRRRRRRR SSSSSSSSSSUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUUUUUU B - /boot R - Raíz / S - Swap U - /usr
Mas a swap não ficaria ainda mais rápida sendo a primeira partição no disco?
Sim e não: Realmente fica rápida (na teoria conforme explicado acima), mas
levando em consideração que o deslocamento das cabeças de leitura/gravação do
disco rígido leva certo tempo, é mais vantajoso mantê-la entre as 2 partições
mais acessadas, isto diminui o tempo de acesso caso um programa esteja fazendo
uso constante de /
ou /usr
e
precisar
trocar dados na partição swap
.
Além do mais, a partição /
geralmente é pequena (no máximo
800M) deixando a swap em uma área muito próxima do inicio do disco rígido. Com
base nisto, você poderá ter uma melhor visão técnica para a construção de suas
partições dependendo da função do sistema.
Em sistemas que utilizam um disco rígido dedicado para fazer
swap
, a ligação deste em uma placa controladora independente
aumentará bastante a performance do sistema, pois enquanto o disco principal
ligado em sua controladora estiver fazendo uma operação de leitura, o outro
poderá estar fazendo sua operação de swap simultaneamente. O mesmo não
acontece quando dois discos rígidos IDE estão ligados no mesmo cabo (isto não
acontece no SCSI).
O hdparm é 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 embaixo 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 desempenho 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 comando
hdparm -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
0
para transferência de dados em 16 bits,1
para 32 bits e3
para 32 bits com uma seqüencia especial de sincronismo (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.
0
desativa DMA e1
ativa. Note que nem todos os chipsets aceitam esta operação. Esta usada em conjunto com a opção-X
oferece um excelente ganho 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 deboot:
ou no arquivo/etc/lilo.conf
. - xfermode
-
Modificado pela opção -X[num]. Permite selecionar o melhor modo de transferência 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 SUPORTA, 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 interrupções de processador durante o processamento das interrupções de disco.
0
desativa esta função e1
ativa. Use esta opção com cuidado e sob seu próprio risco: algumas placas 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. - readonly
-
Modificado com -r[num]. Coloca o disco em modo somente leitura. A montagem da 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 antecipadamente 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 padrã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 selecionado 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 utilize o comando
hdparm -t /dev/hd?
, para fazer testes com o uso de cache,
use o comando hdparm -T /dev/hd?
.
OBS: Se o Linux resetar 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
Toda vez que acessamos um arquivo ou diretório da máquina
Linux a data/hora é atualizada. Em máquinas
normais isto é
OK mas em servidores onde o acesso a arquivos é constante (como no diretório
/var/spool
em servidores de e-mail ou
/usr/
em servidores diskless) é recomendável desativar
esta característica. Isto reduzirá a quantidade de buscas das cabeças do disco
rígido para a atualização deste atributo e conseqüentemente aumentará a
performance na gravação de arquivos (o disco rígido usa o sistema mecânico para
ler/gravar dados, muito mais lento que a memória RAM eletrônica).
chattr -R +A /var/spool
O atributo +A
desativa a gravação da "data de acesso" dos
arquivos e sub-diretórios dentro de /var/spool
. Para
desativar a atualização da "data de acesso" para toda a partição, você pode
incluir a opção de montagem noatime
no seu
/etc/fstab
:
/dev/hda1 /var/spool ext2 defaults,noatime 0 1
OBS: O Linux utiliza três atributos de data para controle de arquivos:
-
atime
- Data/Hora de acesso: é atualizado toda vez que o arquivo é lido ou executado. -
mtime
- Data/Hora da modificação, atualizado sempre que alguma modificação ocorre no arquivo ou no conteúdo do diretório. Esta é mais interessante que actime
principalmente quando temos hardlinks. -
ctime
- Data/Hora da última modificação do inodo do arquivo.
Em partições onde a gravação é freqüente (como na própria
/var/spool
) a desativação do atributo
atime
além de melhorar o desempenho do disco, não fará muita
falta.
Copyright © 1999-2020 - Gleydson Mazioli da Silva