Como evitar que um processo pendure o computador?

2

Um processo pode fazer com que o computador "congele", por exemplo, ao esgotar a CPU ou trocar. Tem algum jeito de prevenir que isso aconteça? Por exemplo, definindo o máximo% de CPU ou IO MB / s que pode ser concedido a um processo?

    
por Sparkler 06.02.2016 / 22:49

2 respostas

2

Para um comando executado a partir do shell, leia a documentação do shell em ulimit .

Existe uma função ulimit() que faz o mesmo em C.

Existem também vários limites que você pode aplicar por meio de métodos específicos de implementação. No FreeBSD, você pode definir limites por usuário em login.conf , ou usando um comando chamado rctl . Algumas distribuições Linux usam um limits.conf .

Existe um programa chamado cpulimit que pausa um processo para garantir que ele use menos que uma certa quantidade de CPU ao longo do tempo.

E, claro, sempre há nice e renice , se você quiser apenas ajustar prioridades.

    
por 07.02.2016 / 00:12
0

Parcialmente. Veja ulimit , que geralmente é um comando auxiliar do shell. (No bash, help ulimit ). Você pode limitar sua memória, o total de ciclos e tempo da CPU (mas não uma porcentagem) e o tamanho dos arquivos gravados por ela.

Você também pode usar o comando nice . Mas, na realidade, se não houver mais nada exigindo recursos, o bom não terá efeito. Ela só entra em vigor quando vários processos disputam recursos da CPU.

No Linux, uma coisa que você pode fazer é dizer ao OOM killer que este processo deve ser eliminado primeiro quando a memória estiver baixa.

    
por 07.02.2016 / 00:13