Aproveitando uma pergunta aqui no blog, lá vou eu instalar novamente o systemd em meu Wheezy para implementar o uso do ZRAM com o systemd.
systemd
E tudo começa com a instalação do systemd:
# apt-get update # apt-get install systemd-sysv libpam-systemd systemd-gui # echo "systemd-sysv hold"|dpkg --set-selections
Os passos acima remove o sysvinit e o substitue pelo systemd, para maiores detalhes sugiro que leiam o artigo original:
Instalação do systemd no Debian Wheezy
zram
Fazendo uso de um PKGBUILD do Arch Linux, comecemos a implementar seu uso no Debian:
$ wget https://aur.archlinux.org/packages/zr/zramswap/zramswap.tar.gz $ tar -zxvf zramswap.tar.gz $ chmod +x zramswap/zramctrl $ sudo mkdir /usr/lib/systemd/{scripts,system} $ sudo cp zramswap/zramctrl /usr/lib/systemd/scripts/zramctrl $ sudo cp zramswap/zramswap.service /usr/lib/systemd/system/zramswap.service $ sudo systemctl enable zramswap.service $ sudo systemctl start zramswap.service $ sudo swapon -a $ sudo swapon -s
E pronto!
Antes de mais nada, valeu pelo how-to edps.
Agora vamos testar aqui pra ver se consigo “casar” systemd+zram
CurtirCurtir
OK.
CurtirCurtir
Então algumas considerações sobre o que noitei.
Primeiro: Tive que desabilitar a linha que tinha no fstab:
#tmpfs /var/run tmpfs nodev,nosuid,size=512M,noatime,mode=1777 0 0
Só com ela comentada o systemd funciona bacana. A segunda coisa que note é que pelo método utilizando o sysinit (que tem aqui no blog) o sistema reconhece como swap o tamanho de toda a RAM + SWAP. Ou seja no meu sistema seria 2.2gb de RAM + 512 de swap.
Já com esse método do systemd o novo valor informado para o swap é de 967mb. Não sei qual a explicação. Mas utilizando o zram no ElementaryOS através da instalação do zram-config o valor informado também era o da Memória RAM + swap.
Vou fazer os testes aqui se tem alguma implicação do desempenho/estabilidade do sistema em ambos os métodos e se chegar a alguma conclusão relevante posto aqui. De qualquer forma. Reitero os agradecimentos.
CurtirCurtir
Duas considerações:
não alterei a entrada do tmpfs em meu fstab, a minha está assim:
tmpfs /tmp tmpfs nodev,nosuid,noexec,size=1024M,mode=1777 0 0
E como não vinha utilizando o ZRAM em meu Wheezy, apenas instalei o mesmo, adicionei o pacote na tag hold para não ser removido e substituído pelo systemd e não fiz nenhuma alteração em /etc/default/grub.
CurtirCurtir
Olá Edinaldo, ótima dica!
Esse procedimento deixa o debian mais rápido?
CurtirCurtir
Não só o sistema em si, como o boot que é excessivamente mais rápido que o normal e dessa vez não utilizei nenhum artifício em /etc/default/grub.
A única desvantagem que vejo no systemd é no manejo dos serviços, pois no sysvinit me parece que existe mais controle.
CurtirCurtir
A propósito, pergunta de Newbie! O systemd no Debian entende o arquivo /etc/init.d ?
Eu consigo utilizar essa entrada normalmente para adicionar serviços no boot do sistema?
CurtirCurtir
Automaticamente os serviços são portados para o novo sistema, acho que pelo invoke-rc.d ou update-rc.d, para mais veja:
http://gnutwoall.wordpress.com/2013/05/11/instalacao-do-systemd-no-debian-wheezy/
CurtirCurtir
Muito obrigado! Funcionou perfeitamente comigo e aumentou substancialmente a performance.
CurtirCurtir
OK muchacho!
CurtirCurtir
Hoje estava dando uma lida entre as diferenças do zram, zcache, zswap. Acabei observando que o zswap já se encontra no mainline do kernel desde a versão 3.11 para ativá-lo basta inserir na linha de boot do grub a opção zswap.enabled=1
Para conferir se foi ativado, após carregar o sistema rode o comando dmesg | grep zswap.
Em síntese e a grosso modo a diferença entre o zram e o zswap é que o zram cria uma “swap” compactada na memória ram enquanto o zswap compacta os dados que seriam enviados para swap (em disco) para após gravá-los na swap. Tendo este último como vantagem a redução de I/O disk ao custo de um pouco de processamento.
Estou avaliando os dois para ver se algum apresenta alguma vantagem sobre outro.
CurtirCurtir
Valeu! brigado pela informação, vou testar.
CurtirCurtir
aproveitando que a matéria fala sobre swap, é possivel desalocar a memória swap do hd e colocá-la na memoria ram(2x4gb)?
CurtirCurtir
O melçhor para esse propósito é usar ZRAM:
http://gnutwoall.wordpress.com/2013/10/19/systemd-zram-no-debian-wheezy/
E jogar os diretório temporários na RAM (isto é, adicionando as linhas abaixo em /etc/fstab):
tmpfs /tmp tmpfs nodev,nosuid,noexec,size=1024M,mode=1777 0 0
tmpfs /var/spool tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
* na 1ª linha, 1024M, indica a metade da RAM de meu sistema.
** dependendo do sistema, podem ocorrer erros com o uso das linhas 2 e 3 (por causa do squid entre outros que façam uso do diretório citado).
CurtirCurtir
Aqui utilizo dessa forma:
# Move /tmp to RAM
tmpfs /tmp tmpfs nodev,nosuid,size=1G,noatime,mode=1777 0 0
tmpfs /var/lock tmpfs nodev,nosuid,size=100M,noatime,mode=1777 0 0
# Não habilitar o /var/run se usar o systemd
#tmpfs /var/run tmpfs nodev,nosuid,size=512M,noatime,mode=1777 0 0
CurtirCurtir
Ou também desabilitar a swap (não que seja uma boa ideia) 😉
CurtirCurtir
Aqui, usando OpenBox e num Debian com apenas 2GBs de RAM, eu não uso SWAP e ainda jogo /tmp na RAM!
CurtirCurtir
Estou nesse momento rodando um Debian Wheezy com ZRAM pelo Sysvinit e a Swap virou algo verdadeiramente inútil pra mim!
Apenas criei uma partição de 256mb para ela. Estou com MATE Desktop 1.4 e 2GB de RAM. Simplesmente não tenho do que reclamar!
Estou brincando com outras otimizações que valeriam a pena serem comentadas. O e4rat que acelerou consideravelmente meu tempo de boot. Mesmo sendo antiga, continua valendo a pena!
CurtirCurtir
Quando eu faço essas estripulias geralmente é apenas para teste, costumo deixar o meu sistema rodando o mínimo de serviços possível, atualmente nem SWAP venho usando, e olha que tenho apenas 2GBs de RAM.
CurtirCurtir
Nunca consegui um tutorial que fizesse o e4rat funcionar. Pode disponibilizar o passo-a-passo?
CurtirCurtir
Por um acaso alguém sabe qual o metodo de compressão usado nesse arquivo do arch? (v.g. gzip, lzo, lz4)? Ou sabe como verifico isso?
O motivo é o seguinte: Conforme verifiquei sobre o assunto o método que utiliza o lz4 é relatado como uns dos melhores por ser mais rápido e não requerer tanto do processador. Contudo a taxa de compressão fica menor do que as dos demais. Comparando entre tempo e processamento exigido e compressão final acho que o lz4 é um opção mais interessante pra máquinas com processadores mais fracos ou monocores. Isto, porque, aqui no meu note velinho com um Turion monocore de 2.2ghz as vezes quando o sistema comprime a RAM ele apresenta um “lag” de alguns segundos até a finalização. Acho que isso pode ser amenizado/solucionado com a troca do método de compressão. Alguém tem alguma ideia de onde partir?
CurtirCurtir
Não tenho idéia brother.
CurtirCurtir
Dai uma procurada rápida mas não achei nada também. Só achei as opções para o uso no zswap. Acabando a monografia volto a pesquisar se encontrar compartilho por aqui.
CurtirCurtir
Então depois de mais algumas pesquisas vi que o modulo do zram a partir do kernel 3.14 deveria possibilitar a escolha entre os métodos de compressão lzo e lz4.
Contudo na distro que uso (aptosid) no kernel padrão aparece apenas o lzo para lista o método de compressão basta o comando: cat /sys/block/zram0/comp_algorith
Utilizando o kernel do liquorix com o mesmo comando verifiquei que há os dois métodos (lzo e lz4). Todavia, seguindo o comando para setar o lz4: echo lz4 > /sys/block/zram0/comp_algorith recebo a mensagem que “o dispositivo está em uso ou ocupado”
Alguém tem alguma ideia do que posso estar fazendo errado?
CurtirCurtir
Fiquei pensando em uma coisa. Pelo que vi o script que roda na inicialização para ativar o zram é que seta os valores e opções. Então será que a escolha do método de compressão não seria feita nesse script? A questão é como seria… não manjo nada de edição de script.
CurtirCurtir
Creio eu que a escolha entre o método de compressão deve ser feita imediatamente após o comando “modprobe zram” no script de inicialização:
system(“modprobe zram “ZRAM_PARM”=” cpucount)
system(“echo lz4 > /sys/block/zram0/comp_algorith”)
Lembrando que o algoritmo lz4 só está disponível a partir da série 3.15 do kernel -> http://en.wikipedia.org/wiki/Zram
Tente parar o serviço:
$ sudo systemctl start zramswap.service
Editar o script “/usr/lib/systemd/scripts/zramctrl” e startar o serviço novamente.
CurtirCurtir
Edit: O comando correto para parar o serviço é:
$ sudo systemctl stop zramswap.service
CurtirCurtir
Pois é. Acho que as configurações são feitas logo depois de subir o módulo. Ao menos foi isso que vi nos artigos que falavam sobre o zram. Vou tentar parar o script e fazer tudo manualmente para ver se funciona. Depois, dá pra pensar como implementar isso no script.
CurtirCurtir