Não tenho certeza se isso responde à sua pergunta, mas encontrei este script perl que afirma fazer exatamente o que você procura para. O script implementa seu próprio sistema para impor os limites ao acordar e verificar o uso de recursos do processo e seus filhos. Parece estar bem documentado e explicado e foi atualizado recentemente.
Como o slm disse em seu comentário, os cgroups também podem ser usados para isso. Você pode ter que instalar os utilitários para gerenciar cgroups, supondo que você esteja no Linux, você deve procurar por libcgroups
.
sudo cgcreate -t $USER:$USER -a $USER:$USER -g memory:myGroup
Certifique-se de que $USER
é seu usuário.
Seu usuário deve então ter acesso às configurações de memória do cgroup em /sys/fs/cgroup/memory/myGroup
.
Você pode definir o limite para, digamos 500 MB, fazendo isso:
echo 500000000 > /sys/fs/cgroup/memory/myGroup/memory.limit_in_bytes
Agora vamos executar o Vim:
cgexec -g memory:myGroup vim
O processo do vim e todos os seus filhos devem estar limitados a usar 500 MB de RAM. No entanto , acho que esse limite só se aplica à RAM e não à troca. Quando os processos atingirem o limite, eles começarão a trocar. Eu não tenho certeza se você pode contornar isso, eu não consigo encontrar uma maneira de limitar o uso de swap usando cgroups.