Tenho a sensação de que este documento irá ajudá-lo muito (Seção 5.5 e 5.2 especialmente). Vou tentar resumir o melhor que posso aqui.
A melhor explicação que tenho é que os números fornecidos em memory.usage_in_bytes
não são incrivelmente precisos, mas têm a intenção de fornecer uma ideia geral sobre a quantidade de memória que alguma coisa está usando. É provável que memory.stat
forneça uma ideia mais precisa, embora mais complexa, da memória usada por diferentes processos. Se o uso de memória não aparecer aí, você pode ter um problema muito maior.
EDITAR: Se você continuar lendo na parte 5.2 desse documento, há algumas informações adicionais:
Only anonymous and swap cache memory is listed as part of 'rss' stat. This should not be confused with the true 'resident set size' or the amount of physical memory used by the cgroup. 'rss + file_mapped" will give you resident set size of cgroup. (Note: file and shmem may be shared among other cgroups. In that case, file_mapped is accounted only when the memory cgroup is owner of page cache.)
Nesse caso, ainda não funciona o que você está vendo, o que me leva a acreditar que o proprietário do processo de caixa virtual não é o proprietário de todos os caches de página em uso pelo processo de caixa virtual.
A última verificação de sanidade que eu aconselharia seria verificar o log killer da OOM e ver se o killer da OOM está ativo. Quando o assassino da OOM está ativo, você pode obter resultados estranhos dos registros de memória.