Existe uma maneira de reservar alguma RAM para um processo para evitar que ele pare de responder?

1

Eu gostaria que um terminal de texto permanecesse responsivo, mesmo que qualquer aplicativo desonesto tentasse alocar toda a RAM.

Os processos filhos do terminal devem poder usar essa RAM reservada também.

É possível reservar RAM para um processo e seus filhos?

    
por ardabro 15.01.2016 / 12:53

1 resposta

3

O kernel do Linux Grupos de Controle é o que você está procurando. Com cgroups, você pode limitar a quantidade de recursos que certos processos podem usar, incluindo memória. Então, no seu caso, você criaria pelo menos dois cgroups. Uma delas limitaria o acesso à memória a todos os processos no sistema para talvez 90% da sua RAM total. Então o segundo teria acesso a toda a RAM. Você colocaria seu processo de terminal no segundo cgroup. Existem muitos recursos na web que cobrem como configurar seus cgroups e isso depende de sua distribuição e versão do kernel.

Outra opção mais simples é simplesmente desabilitar o swap na sua máquina. A "falta de resposta" que você observa é o seu sistema operacional usando o espaço de troca. Quando você o desabilita, o oom_killer terminará o processo que monopoliza toda a memória para que o sistema não pare de travar.

    
por 15.01.2016 / 15:08