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

2 comentários :

Anônimo disse...

A velocidade do USB realmente é maior que o do HD? não acredito que funcione.

Unknown disse...

Imagine o seguinte, que o Hd tem um tempo de aceleração pior que o USB, mas a velocidade final é maior.

o HD demora 10s para atingir 300km/s
o USB demora 1s para atingir 100km/s.

o tempo de latência de acesso do USB é menor e quanto mais esgotada a memoria principal, maior a vantagem do USB.
Além disso, para acessar partes diversas do HD, ele tem que acelerar até encontrar o dado, já o USB tem o mesmo tempo de latência para qualquer acesso em qualquer área da flash.