Estava aqui pensando se não seria possível usar o
cgroups (Linux control groups) para estabelecer um limite de uso de memória RAM ao processo do Skype.
Não há nenhuma referência sobre isso por aí, então estou mesmo é conjecturando, é apenas uma ideia que me ocorreu, não sei se de fato isso funcionaria e como aqui o Skype aparentemente (não testei mais exaustivamente) não parece estar com esse consumo todo de memória, então não foi possível fazer um teste real.
Entender um pouco melhor o que o cgroups faz pode ser visto aqui:
https://en.wikipedia.org/wiki/CgroupsMas vamos imaginar, por simples hipótese, por simples exemplo, que se queira estabelecer um limite de uso de 500MB que o Skype possa usar de memória RAM.
Pelo que consegui fazer aqui o primeiro passo é instalar a biblioteca que dará as ferramentas para estabelecer esse limite:
sudo apt install cgroup-tools
As definições de cgroup estão aqui:
cd /sys/fs/cgroup/memory
Agora criar um cgroup específico para essa finalidade (aqui tenho dúvidas se possa nominar o cgroup de qualquer forma??, mas no teste inicialmente fiz assim):
sudo cgcreate -g memory:myGroupSkype
Note, então, que dentro do diretório acima mencionado estará criado o subdiretório myGroupSkype com várias entradas dentro dele.
Agora, para facilitar, melhor tornar-se root:
sudo su
Alterando uma das entradas no myGroupSkype:
echo $(( 500 * 1024 * 1024 )) > /sys/fs/cgroup/memory/myGroupSkype/memory.limit_in_bytes
exit #para sair do root e voltar ao usuário norma
l
Note que o conteúdo do arquivo:
cat /sys/fs/cgroup/memory/myGroupSkypememory.limit_in_bytes
passou a ser: 524288000
o que corresponde aos 500MB e, em tese, poderia ser qualquer outro número também editado diretamente, desde que suficiente para o programa trabalhar e dentro da disponibilidade física e operacional do sistema.
Agora este ponto aqui é crucial, que é concretamente executar o processo usando aquele limite estabelecido.
Experimente chamar o Skype a partir de um terminal usando a seguinte notação:
sudo cgexec -g memory:myGroupSkype skypeforlinux
Aqui caberiam algumas variações, mas vamos começar testando dessa forma acima.
Caso dê certo uma possibilidade seria acrescentar isso (talvez???) no arquivo /usr/share/applications na linha Exec=/usr/bin/skypeforlinux %U ou qualquer coisa semelhante a isso.
De qualquer forma o primeiro passo é testar da forma mais simples mesmo, chamando a partir do terminal e usando o cgexec da biblioteca cgroup-tools.
Como disse antes, não faço a menor ideia se isso realmente irá funcionar limitando o uso de memória RAM para o Skype e, principalmente, caso de fato limite, se o programa não irá quebrar, isto é, arruinar o processo e fazê-lo terminar (kill).
O problema real é que não sabemos o porquê o Skype está fazendo crescer dessa forma o uso da memória RAM e não há como saber de fato, já que se trata de um código proprietário e não aberto, logo, não é possível examinar diretamente o programa, então a presente proposta é um workaround, isto é, um "quebra-galho" para tentar resolver uma situação posta.
O que consegui foi fazer o Skype ser executado dessa forma, funcionou chamar o Skype assim pela linha de comando, porém como não tenho o problema do uso excessivo da memória acontecendo, não consigo avaliar se o limite imposto está mesmo funcionando ou não ou quaisquer outras consequências no uso do Skype, então só testando aí para vermos o que irá acontecer.
No momento é o que me ocorre, vamos ver se o povo aí contribui com mais alguma ideia ou com testes mais amplos nesse sentido para desenvolvermos a questão.