Uso da memória no Linux [duplicado]

2

Como configurar o limite do processo para uso da memória?

Semelhante ao limite de arquivos abertos em /etc/security/limits.conf :

ubuntu           soft    nofile          4096
ubuntu           hard    nofile          8192

Por exemplo Enquanto eu estou lançando o script python com% raweval de dados json do arquivo 1.1G, python ocupa toda a RAM, enquanto cria objetos em torno de cada dict e list in json.txt . Pendurou minha máquina por 20 a 30 minutos. Depois disso:

# python read_data.py
Killed

O Ubuntu System está muito estável hoje. Sua recuperação de pendurado. Troque para 8Gb de uso. RAM completamente vazia, script saindo.

Estou tentando encontrar, esse limite, qual killed do meu script é configurável? Posso sintonizar meu sistema de tal forma que cada processo, que ocupa mais de 70% do tamanho atual da memória RAM, seja simplesmente interrompido ou interrompido ou algo do tipo?

    
por youblind 29.08.2014 / 13:08

1 resposta

1

Usando o mesmo arquivo limits.conf , você pode limitar:

  • data - tamanho máximo de dados (KB)
  • memlock - espaço de endereçamento máximo bloqueado na memória (KB)
  • rss - tamanho máximo do conjunto de residentes (KB)
  • as - limite de espaço de endereço (KB)
  • stack - tamanho máximo da pilha (KB)

Então, você pode fazer muito bem. Depois de configurar limites, você pode verifique este nível com ulimit -a → você também pode usar este programa para defini-los. Para usar limits.conf , você precisa de pam_limits.so .

E a última coisa é o que matou seu roteiro. Eu acho que poderia ser o assassino da OOM. Um recurso no kernel do Linux que mata processos mal comportados quando eles coma toda a memória real;) Use dmesg para descobrir se o assassino foi usado. Haverá muitas informações sobre os candidatos a matar e qual processo foi precisamente morto.

Felicidades,

    
por 29.08.2014 / 13:34