Sunday, December 5, 2010

Aumentando a velocidade de resposta do desktop

Recentemente Mike Galbraith escreveu um código para ser acrescido ao Linux (kernel) que melhora a velocidade de resposta do computador quando sobrecarregado. Provavelmente veremos isso no kernel 2.6.37. 
Enquanto o kernel não fica pronto para nosso sistema operacional, Lennart Poettering, um desenvolvedor da Red Hat, inventou um jeito de produzir o mesmo efeito sem alterar o kernel, podendo ser aplicado imediatamente. Eu testei, e, apesar de não conseguir notar diferença, realizei alguns testes ("benchmarks") com o programa chamado hardinfo (que está nos repositórios do Ubuntu) que realmente indicaram melhora na performance. 
Aqui estão as instruções para serem usadas no Ubuntu (para outras distros ver aqui).
Atualização de 08/01/2011: compare a diferença na performance feita pela equipe do Phoronix.

1) Lembre sempre de trocar "user" pelo seu nome de usuário (provavelmente o mesmo nome da pasta que fica dentro de /home/)

2) Edite o arquivo /etc/rc.local (gksu gedit /etc/rc.local) e acrescente as seguintes linhas antes do "exit 0" 

mkdir -p /dev/cgroup/cpu 
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

3) Salve o arquivo e depois o torne executável digitando isto no terminal: 
sudo chmod +x /etc/rc.local 
4) Edite o arquivo ~/.bashrc (gedit ~/.bashrc) e acrescente as seguintes linhas (lembre de trocar user pelo seu nome de usuário):



if [ "$PS1" ] ; then
   mkdir -p -m 0700 /dev/cgroup/cpu/user/$$ > /dev/null 2>&1
   echo $$ > /dev/cgroup/cpu/user/$$/tasks
   echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release
fi
5) Edite o arquivo /usr/local/sbin/cgroup_clean (gksu gedit /usr/local/sbin/cgroup_clean) e acrescente as seguintes linhas (lembre de trocar user pelo seu nome de usuário):
#!/bin/sh
if [ "$*" != "/user" ]; then
rmdir /dev/cgroup/cpu/$*
fi
 6) Salve o arquivo e depois o torne executável digitando isto no terminal: 
sudo chmod +x /usr/local/sbin/cgroup_clean
7) Por fim, reinicie o computador ou execute o seguinte comando:
sudo /etc/rc.local