Posso negar o uso do espaço de troca para um processo específico (e tê-lo apenas morto)?

3

Durante o desenvolvimento de alguns softwares, um programa em teste às vezes consome toda a memória, prossegue para entrar no espaço de troca e começar a debater o disco, levando a uma queda previsível na capacidade de resposta ao ponto que eu geralmente alterno para outro terminal. faça o login e mate o processo manualmente.

O que eu gostaria é que este processo em particular seja morto antes de começar a comer o espaço de swap como se não houvesse amanhã. Eu encontrei uma página github em que matar processos com um watchdog é discutido (e de fato, feito) - link - e eu poderia alterar isso codifique um pouco para procurar e matar apenas este programa defeituoso específico, mas seria bom se eu pudesse simplesmente negar o uso do espaço de swap para um processo nomeado e simplesmente ser morto. Eu suponho ainda mais desajeitadamente, é bom para ele obter uma pequena quantidade de espaço de troca no curso normal das coisas; é só quando está em uma missão para consumir toda a memória do universo que precisa matar.

    
por Moschops 07.05.2016 / 11:06

1 resposta

3

Eu não acho que haja uma maneira de limitar o espaço de troca, a menos que você modifica o programa para solicitar apenas memória não-swappable , que, mesmo que possível, provavelmente seria impraticável.

No entanto, o que você pode e deve fazer é limitar o total quantidade de memória disponível para o processo . Você pode usar cgroups (a nova maneira geral), ulimit ( setrlimit , da maneira tradicional), ou o timeout .

    
por 07.05.2016 / 11:29