Ontem a noite, um amigo me questionou sobre o consumo de memória RAM e a quantidade de swap usada em um sistema linux. Dentre outras coisas, ele queria saber o motivo de todo mundo usar o dobro da memória RAM como swap.
Eu lhe expliquei que isso era mais uma convenção, e que era necessário no tempo em que as pessoas dispunham de pouca RAM em seus computadores, mas que hoje isso não é mais válido e que no caso do desktop dele - que contem 1gb de RAM - alocar 1gb do hd como swap seria de longe mais que suficiente.
Hoje, que surpresa! O pessoal do NixCraft fez uma
matéria tratando justamente desse assunto. ( Acho que eles mantem câmeras secretas na minha casa )
No artigo da NixCraft vi que minha explicação não foi 100%, pois um dos motivos de antigamente se usar o dobro da RAM como swap é o fato de que o sistema de gerenciamento de memoria do “Linux de antigamente” não era tão eficiente quanto do “Linux da atualidade”.
As políticas sugeridas no NixCraft são:
for normal server (Web / Mail etc):
1. Swap space == Equal RAM size (if RAM < 2GB)
2. Swap space == 2GB size (if RAM > 2GB)
My friend who is a true Oracle GURU recommends something as follows for heavy duty Oracle server with fast storage such as RAID 10:
1. Swap space == Equal RAM size (if RAM < 8GB)
2. Swap space == 0.50 times the size of RAM (if RAM > 8GB)
De modo geral em meus servidores, faz algum tempo que tenho adotado a política do RAM == SWAP, exceto nos casos de servidores pequenos, com 512 de RAM ou menos, nesses raros casos ainda uso a regra do dobro.
A mesma política adoto nos micros de casa, Notebook c/ 1gb de RAM e de swap, pc de mesa c/ 512 de RAM e 1gb de swap.
Resolvi pegar o uso da swap de algumas máquinas e postar aqui.
- Notebook c/ 1 gb de RAM (em quanto escrevo esse artigo ) - 13 mb
- Desktop c/ 512 mb de RAM (em quanto jogo uma partida de tremulous no Gnome) - 142 mb
- Servidor c/ 2 gb de RAM ( 4 instâncias do Tomcat e 1 do Mongrel ) - 300 mb
* Um último adendo. O artigo do NixCraft faz uma ressalva quanto ao uso de RAM em máquinas que fazem uso da função de suspender para o disco, nesses casos o dobro da RAM como swap ainda é necessário.
Mas e você? quanta swap está usando no momento? Vamos lá, não se acanhe, poste nos comentários.
Recentemente procurando material sobre escalabilidade/alta disponibilidade, esbarrei em uma matéria do
highscalability.com sobre o mmo EVE Online. O texto é muito bom e recomendo a leitura, mas vou replicar aqui alguns detalhes que me chamaram a atenção.
- são 300.000 usuários cadastrados
- suporta até 40.000 usuários concorrentes(conectados ao mesmo tempo)
- Stackless Python é usado tanto no servidor quanto no cliente.
- o banco de dados usado é o SQL Server da microsoft
- o cluster de banco de dados roda sobre SSD
Ainda segundo o texto, os discos SSD ajudam MUITO no desempenho do sistema. Assim que eles ficarem mais acessíveis eu compro um para testes.
Ultimamente tem se falado muito sobre as modificações no processo de boot do linux feitas por dois desenvolvedores da Intel. As estimativas são de que em breve teremos máquinas com o boot de 10 segundos. Legal não?
Para medir o tempo do boot foi usado o Bootchart um simpático pacote que vem nos repositórios do ubuntu! A instalação é da forma tradicional:
apt-get install bootchart
E pronto! Apenas isso, prático não? O resultado você pode conferir em um pós-boot no diretório /var/log/bootchart/
Eis aqui o bootchart gerado no meu Notebook.
Quem assim como eu não gosta do utilitário de gerenciamento de rede do Gnome, pode ficar surpreso com a versatilidade e o poder do /etc/network/interfaces.
Editando esse arquivo você pode criar interfaces virtuais, executar scripts pre/post e uma série de outras coisas que não serão abordadas aqui, mas caso você tenha interesse elas são abordadas aqui: /usr/share/doc/ifupdown/example/network-interfaces
Read more…
Aqui vai uma dica para melhor acompanhamento do bash_history: o uso de data/hora no arquivo, especialmente útil se você divide com mais pessoas o acesso/usuário a uma máquina.
Dessa forma você pode saber quem foi o infeliz que deu um rm -rf naquela pasta super importante baseando-se na hora de acesso!
o procedimento é trivial, e consiste em adicionar uma linha ao seu ~/.bashrc.
Read more…
Se você já quis um arquivo de configuração para fazer um programa/script ter uma cara mais profissional, eis aqui uma solução simples em python. Read more…
* Achado em algum site por aí !
O Servidor
cat perl-srv.pl
use IO::Socket;
my $sock = new IO::Socket::INET (
LocalHost => ‘localhost’,
LocalPort => ‘7070′,
Proto => ‘tcp’,
Listen => 1,
Reuse => 1,
);
die ” Nao foi possivel criar um socket” unless $sock;
my $new_sock = $sock->accept();
while (<$new_sock>) {
print $_;
#$new_sock = $sock->accept()
}
close($sock);
O Cliente
cat perl-cli.pl
use IO::Socket;
my $sock = new IO::Socket::INET (
PeerAddr => ‘localhost’,
PeerPort => ‘7070′,
Proto => ‘tcp’,
);
die “Nao foi possivel criar o socket\n” unless $sock;
print $sock “1 2 3 testando\n”;
close($sock);

* Essa fui obrigado a postar!
A algum tempo atrás precisei escrever um pequeno script em perl para envio de e-mails, o objetivo era criar um sistema de alerta personalizado para uma empresa em que trabalhava.
Vasculhando a internet encontrei dúzias de código que se propunham a resolver meu problema, grande parte era falho, ou tinha alguma limitação.
Continue lendo esse post!
Chegou mais um ano e como foi Dezembro será Janeiro… uma loucura! Pretendo esse ano me dedicar um pouco mais aos estudos (Perl e (Python ou C++)) e curtir um pouco do verão alem é claro, de tocar uma série de projetos próprios que ficaram de lado em 2007! Agora que estou armado com um Toshiba A215, ninguém me segura!
Vai ter uma penca de novidades rolando por aqui, quem viver… verá!