quinta-feira, 1 de setembro de 2011

HDPARM (Debian e Mandriva)

Os hd's de hoje possuem diversas tecnologias que podem ser ativadas via software para melhorar o desempenho do disco. Algumas distribuições em linux sequer ativam o DMA dos discos.
E para solucionar esse problema podemos utilizar o hdparm, esse software vem por padrão na maioria das distribuições, sua instalação é simples.
O hdparm pode ser utilizado tanto para manipular tecnologias que aprimoram o I/O dos hd's quanto para coletar informações detalhadas do dispotivo e também para analisar o I/O do disco.
A sintaxe para utilização desde comando é simples:

          # hdparm <parametro> <dispositivo>


1/5 - Instalando:

Debian:
          # root@debian:/# apt-get install hdparm
Mandriva:
          # [root@mandriva /]# urpmi hdparm

2/5 - Informações:
Para coletar informações do seu disco, pode utilizar os comandos abaixo:

          # hdparm <dispositivo>       Informações básicas
          # hdparm -i <dispositivo>    Informações detalhadas
          # hdparm -I <dispositivo>   Informações brutalmente detalhadas.

3/5 - Recursos básicos:
Alguns recursos básicos a se analisar são:

          - multcount;
          - using_dma;
          - readahead;  

MULTCOUNT representa setores múltiplos, ele permite a transferência de múltiplos setores por interrupção de I/O. Basicamente incrementa velocidade de escrita e leitura.
USING_DMA (acesso direto a memória) acredito que o nome já diz tudo :D, apenas comentando que este recurso é fundamental para melhorar a performance do disco.
READaHEAD trabalha basicamente emulando uma memória cache, ele permite que o disco faça a leitura dos dados antes de transferi-los.

4/5 - Ativando os recursos:

Ativando multicount:
          # hdparm -m16 /dev/sda
Obs: o valor 16 deve ser retirado através do comando hdparm -i /dev/sda visualizando a opção MaxMultSect, este recurso é utilizando em casos de hd ide.

Ativando DMA:
          # hdparm -X /dev/sda
Obs: Este recurso também é efetivo em discos IDE, e normalmente não recomendado para hd's sata.
Normalmente placas mãe recentes controlam o DMA através da bios.

Ativando READaHEAD:
          # hdparm -a16 /dev/sda
Obs: O valor 16 deste recurso também foi baseando no relatório que o  comando hdparm -i resultou observando o parâmetro MultSect.

5/5 - Testando:
Para analisar se as alterações estão fazendo efeito, inicie com um teste:

          # hdparm -tT /dev/sda

Este comando irá analisar a velocidade de leitura (T) e escreita (t) do disco.
É muito importante testar, pois você pode acabar deixando o seu computador mais lento.

Um pequeno exemplo:

          # hdparm -tT /dev/sda/
 Timing cached reads:   1598 MB in  2.00 seconds = 798.50 MB/sec
 Timing buffered disk reads:  136 MB in  3.02 seconds =  45.02 MB/sec

Agora:
          # hdparm -A0 /dev/sda
Obs: -A1 ativa o recursos de leitura adiantada e -A0 desativa o recuso.

Testando novamente:
          # hdparm -tT /dev/sda
 Timing cached reads:     2 MB in  2.84 seconds = 721.88 kB/sec
 Timing buffered disk reads:    4 MB in  5.78 seconds = 708.13 kB/sec

É visível a diferente de leitura e escrita certo?

Bem é isso, agora pode "tunar" seu disco. :D

quarta-feira, 6 de julho de 2011

IPERF :D (Debian e Mandriva)

O iperf trabalha com a arquitetura cliente/servidor, com ele podemos podemos medir a velocidade de uma rede utilizando protocolos tcp e udp.

1/4 - Instalando o Iperf:

Debian:
         # root@debian:/# apt-get install iperf
Mandriva:
         # [root@mandriva /]# urpmi iperf


2/4 - Usando Cliente/Servidor :

Servidor: 
         # root@linux:/# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

Cliente:
          # root@linux:/# iperf -c 10.0.0.1 (supondo que o ip do servidor seja 10.0.0.1)
------------------------------------------------------------
Client connecting to 10.0.0.1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 10.0.3.10 port 55857 connected with 10.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec    113 MBytes  94.6 Mbits/sec

3/4 - Buffer de transmissão:

Para aumentar o buffer de transmissão basta utilizar a opção "-w" tanto no cliente como no servidor.

Ex: Servidor- # iperf -s -w 200MB  
      Cliente   - # -perf -c 10.0.0.1 -w 200MB 

Obs: Podemos usar diversas medidas como K,MB,GB.

4/4 - Usando protocolo UDP:

Para utilizar udp no teste basta acrescentar a opção "-u".

Ex: Servidor - # iperf -s -u
      Cliente    - # iperf -c 10.0.0.1 -u