segunda-feira, 16 de junho de 2008

Melhorando desempenho do Linux (usando o pendrive)

Em um último post que fiz, sobre melhorar o desempenho do Windows, tendo como ferramenta em mãos um pendrive (, não coloquei o Linux como outro SO beneficiado.

Bem... eu realmente não esqueci. É que o tema merece um capitulo à parte e usando a mesma teoria (veja o artigo comentado acima para entender melhor) podemos melhorar o Linux também.

Mas lembrando que os benefícios são inversamente proporcionais a quantidade de memória física disponível, ou seja, um servidor com 256MB de ram rodando web (apache) + email (postfix) + banco de dados (postgresql) + antispam + webmail + alguns usuários simultâneos (uns 50) já são o suficiente para pouco desempenho do sistema.

Não vou entrar nos detalhes sobre o custo da compra de mais memória ou troca de equipamento. Pois certamente sempre é possível fazer um bom negócio e , com um pouco de investimento, adquirir um equipamento melhor. Assim consideramos nesse nosso experimento apenas a melhoria com um pendrive de 256M ou mais.

A vantagem é a ativação da memória virtual por USB sem precisar desligar o equipamento. Se não sabe exatamente do que estou falando, ainda reforço para você a leitura do artigo comentado no começo do texto.

Então vamos com a mão na massa!

Primeiro seu servidor tem que estar habilitado com a capacidade de USB. Falo aqui de um kernel relativamente novo (2.6.xx apesar de já funcionar bem com o 2.4.xx e 2.2.xx).

Drivers USB:
se seu kernel não esta com os modulos carregados automaticamente, não há problema; carregue o drive usb_storage, ele carregará os outros drivers necessários (como o usbhid, uhci_hcd).

se observar pelo comando dmesg | grep sd , voltará a seguinte informação:
-------.-----------.-----------.-----------.---------.-
USB Mass Storage support registered.
usb-storage: device scan complete
scsi 2:0:0:0: Direct-Access Kingston DataTraveler 2.0 PMAP PQ: 0 ANSI: 0 CCS
sd 2:0:0:0: [sdd] 15646720 512-byte hardware sectors (8011 MB)
sd 2:0:0:0: [sdd] Write Protect is off
sd 2:0:0:0: [sdd] Mode Sense: 23 00 00 00

sd 2:0:0:0: [sdd] Assuming drive cache: write through
sd 2:0:0:0: [sdd] 15646720 512-byte hardware sectors (8011 MB)
sd 2:0:0:0: [sdd] Write Protect is off
sd 2:0:0:0: [sdd] Mode Sense: 23 00 00 00
sd 2:0:0:0: [sdd] Assuming drive cache: write through
sdd: sdd1 sdd2 -------.-----------.-----------.-----------.---------.-


Ok, o drive USB esta disponível, mas como usar a memória virtual?

Você pode fazer o seguinte:

1) Se o pendrive for exclusivamente para isso (apenas se for pequeno):

voce pode formatar o pendrive inteiro com o comando

# mkswap /dev/sdd1

Para adicionar o swap(memória virtual) ao sistema em operação:

# swapon -p 1 /dev/sdd1

onde o "-p 1 " significa que a prioridade é ligeiramente maior que o algum outro sistema swap já montado.

2) se o pendrive será usado, em parte, como um de 8G, repartiremos no seguinte:

7,5G para arquivos e 0.5G no swap.

fdisk /dev/sdd

e a seguinte sequência de teclas de comandos:
d -> n -> p -> 1 -> -> +7500M ->
n -> p -> 2 -> -> -> a -> 1 -> t -> 2 -> 82 -> w

onde :

d -> o d é para apagar a partição existente (faça um backup dos dados antes de apagar tudo)
n -> isso criará uma nova partição
p -> a partição será primária
1 -> o número da partição
-> seria a prória tecla "enter" do teclado
+7500M -> significa adicionar 7500Mbytes (ou 7,5G e se tirar isso dos 8G, ainda sobrará 0.5 G)
a -> diz quem será a partição primária
t -> modifica o tipo do sistema de arquivos
82 -> o tipo de sistema de arquivos é o "linux swap"

para finalizar o "w" que grava tudo que foi feito e ativa as modificações.

nesse momento é só repetir o processo das dicas do item 1:

você pode formatar o pendrive inteiro com o comando

# mkswap /dev/sdd2

Para adicionar o swap(memória virtual) ao sistema em operação:

# swapon -p 1 /dev/sdd2


Com o servidor mencionado no começo do artigo a adição de uma memória flash USB 2.0 de mais de 256M ,isso por causa da quantidade da memória, ou mais de 4G ,por cauda do desempenho das tecnologias mais atuais, é uma maneira simples, rápida e pouco intrusiva, sem abrir equipamento ou parar o sistema.

Com esse artifício o servidor web tem uma resposta melhor e nos gráficos por mês, aumentou em 20% nos acessos por minuto, e 50% nos acesso ao I/O (entrada e saída) do pendrive.

Ainda pude me arriscar a ligar o antivírus, pois apesar do recurso gastar um bom processamento, o sistema operacional consegue liberar e recuperar a memória virtual rápidamente com o pendrive.

sábado, 14 de junho de 2008

Melhorando desempenho do Windows XP/2000 (usando o pendrive)

Lendo alguns artigos sobre os aperfeiçoamentos feitos no Windows Vista e fiquei curioso sobre o ReadyBoost.
Diz o anuncio da MS que essa tecnologia permite que o Windows, aumente a performance de carga e uso das aplicações. Fiquei me perguntando, como é que funciona?

A idéia baseia-se na arquitetura das memórias flash USB (os PenDrives). Diferentemente dos discos rígidos (os HDs), nas memórias flash o tempo para acessar qualquer lugar na memória é, praticamente, nulo.

Significa que um arquivo extremamente fragmentado no pendrive terá quase a mesma velocidade que o acesso de um arquivo gravado linearmente. Mas o que isso significa?

Vejamos uma situação prática. Você esta trabalhando num escritório de um cliente, desenvolvendo um sistema para ele, o computador disponível tem um processador relativamente bom de 1.8GHz (AMD), com 512MB de ram, 1 HD de 80GB e Windows XP. Porém depois de abrir o navegador (Firefox) para ver o resultado feito por uma interface de desenvolvimento - IDE - (NetBeans) que conecta em um banco de dados (Postgresql) que é alimentado por informações digitadas em uma plataforma de editoração de banco (OpenOffice). Pronto... seu computador ficou impraticavelmente lento e se reparar bem na luzinha do HD, estará piscando incansavelmente.

A luz pisca pois o SO (WinXP) esta usando a memória virtual, pois a real acabou, e significa que esta lendo e gravando movimentando-se para vários lugares aleatóriamente em um arquivo especial chamado c:\pagefile.sys . E se na tela eu mudo do navegador para a IDE o SO vai começar a descarregar dados do firefox no pagefile e ler, do mesmo arquivo, dados do NetBeans. além disso é possível que partes do programa tenham que ser relidos.

Como o pagefile e o IDE estão no mesmo disco, então espera-se carregar um e, depois, carrega-se o outro.

Agora faremos o seguinte, colocamos um pendrive de 8G, configuramos um arquivo de memória virtual nele e, por fim, fazemos todo o nosso trabalho. O que muda?

As diferenças são as seguintes:

- os dados em memória dos programas são lidos e gravados em várias partes da memória flash, que tem o acesso randomico mais rápido.
- enquanto isso é possível ler partes do programa do HD, que esta desfragmentado (espero!) e se foram peços grandes, terão o benefício da leitura sequencial de alta velocidade.

A velocidade de leitura e gravação randomica do USB + a velocidade de leitura e gravação sequencial do HD.Isso somado ao paralelismo do acesso simultâneo dos dois discos.

Sim há ganho de performance. O efeito prático mais visível é no momento da troca de tarefas, quando sem o pendrive o primeiro e o segundo programas ficam momentâneamente travados enquando o disco enlouquecedoramente pisca. Já com o pendrive, apenas a primeira tarefa fica ligeiramente enrroscada, já a segunda começa a ser desenhada e as luzes do pendrive e do HD piscam simultâneamente.

Para habilitar essa facilidade acesse as propriedades do computador, avançado, desempenho, configurações, opções de desempenho, avançado,memoria virtual, alterar; nas opções de unidade coloque o drive do pendrive e escolha um tamanho personalizado, inicial 1024 e final 1024 , em seguida basta clicar "definir" e dar os consecutivos "OK"s. Não é necessário reiniciar.



Esse percurso de configuração é parecido no Windows 2000 e no 2003.

E é claro, quanto mais memória ram você tiver ( maior ou igual que1G) menos precisará dessa técnica