Como evitar alta latência perto da situação da OOM?

2

Caso de teste mínimo quando o sistema Linux não tem swap (ou executa sudo swapoff -a antes do teste). Corra seguindo o bash one-liner como usuário normal:

while true; do date; nice -20 stress --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 + 4000;}' < /proc/meminfo)k --vm-keep -m 1 --timeout 10s; sleep 5s; done

e execute o seguinte bash one-liner com shell de raiz de alta prioridade (por exemplo, sudo nice -n -19 bash ):

while true; do NS=$(date '+%N' | sed 's/^0*//'); let "S=998000000 - $NS"; S=$(( S > 0 ? S : 0)); LC_ALL=C sleep "0.$S"; date --iso=ns; done

O processo de alta prioridade deve executar date a cada segundo com a maior precisão possível. No entanto, mesmo que esse processo esteja sendo executado com prioridade -19 , o processo em segundo plano em execução na prioridade 20 poderá causar grandes atrasos. Parece que não há limite para a latência induzida pelo processo de baixa prioridade em segundo plano porque atrasos mais altos podem ser ativados aumentando o valor stress --timeout .

Existe uma maneira de limitar a latência máxima e matar automaticamente o stress , se necessário, para conseguir isso? O aumento de /proc/sys/vm/user_reserve_kbytes ou /proc/sys/vm/admin_reserve_kbytes ou /proc/sys/vm/min_free_kbytes parece não ajudar. / p>     

por Mikko Rantalainen 10.02.2018 / 18:59

1 resposta

2

Por favor considere tentar * o patch do kernel de esta questão, pois parece fazer o trabalho (evitar alta latência perto oom) para mim até agora (mesmo usando o seu código da questão para testá-lo) e também estou evitando uma tonelada de disco debulhando (por exemplo, quando eu compilar o firefox que normalmente causou o congelamento do sistema operacional devido a ficar sem memória)

O patch evita a remoção de Active(file) páginas, mantendo (pelo menos) as páginas de códigos executáveis na RAM, para que os comutadores de contexto não causem kswapd0 (?) para relê-los (o que causaria muita leitura de disco e um sistema operacional congelado ).

* ou até mesmo sugerindo uma maneira melhor?

    
por 29.08.2018 / 13:20