Systemd + ZRAM no Debian Wheezy


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

zram-install

E pronto!

Systemd + ZRAM no Debian Wheezy

28 comentários sobre “Systemd + ZRAM no Debian Wheezy

  1. hiltongil disse:

    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.

    Curtir

    1. edps disse:

      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.

      Curtir

    1. edps disse:

      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.

      Curtir

  2. hiltongil disse:

    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.

    Curtir

    1. edps disse:

      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).

      Curtir

      1. hiltongil disse:

        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

        Curtir

  3. 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!

    Curtir

    1. edps disse:

      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.

      Curtir

  4. hiltongil disse:

    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?

    Curtir

      1. hiltongil disse:

        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.

        Curtir

  5. 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?

    Curtir

  6. 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.

    Curtir

    1. Leandro Nkz disse:

      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.

      Curtir

      1. 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.

        Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s