Qual é o comportamento do kernel do Linux quando os processos em um cgroup atingem seu limite de memória?

3

O controlador de recursos de memória para cgroups v1 permite definir limites de uso de memória em um cgroup em particular usando o arquivo memory.limit_in_bytes . Qual é o comportamento do kernel do Linux quando esse limite é atingido?

Em particular:

  • O OOM do kernel mata o processo e, em caso afirmativo, o oom_score do processo é levado em consideração, ou é o processo que solicitou a memória que causou a morte do limite?
  • Ou o pedido de memória seria rejeitado e, nesse caso, o processo só morreria se não tratasse de tal evento?
por dippynark 01.07.2018 / 20:48

1 resposta

2

Por padrão, a OOM está supervisionando os cgroups.

memory.oom_control

contains a flag (0 or 1) that enables or disables the Out of Memory killer for a cgroup. If enabled (0), tasks that attempt to consume more memory than they are allowed are immediately killed by the OOM killer. The OOM killer is enabled by default in every cgroup using the memory subsystem; to disable it, write 1 to the memory.oom_control file:

  ~]# echo 1 > /cgroup/memory/lab1/memory.oom_control

When the OOM killer is disabled, tasks that attempt to use more memory than they are allowed are paused until additional memory is freed.

Referências

por 02.07.2018 / 07:29