Isso não é um bug. Aparentemente, a contabilidade da memória do cgroup inclui páginas de cache de disco que foram usadas pelos processos. Se desejar, você pode pedir para descartar as páginas de cache que pertencem a um cgroup usando force_empty
.
Você pode se perguntar sobre páginas de cache que são usadas por vários cgroups. cgroup-v2.rst
(o sucessor da versão que estou usando) nos diz:
A memory area is charged to the cgroup which instantiated it and stays charged to the cgroup until the area is released. Migrating a process to a different cgroup doesn't move the memory usages that it instantiated while in the previous cgroup to the new cgroup.
A memory area may be used by processes belonging to different cgroups. To which cgroup the area will be charged is in-deterministic; however, over time, the memory area is likely to end up in a cgroup which has enough memory allowance to avoid high reclaim pressure.
cgroup-v1/memory.txt
também diz que "páginas estão vinculadas exclusivamente a LRUs por memc", então provavelmente também funciona de maneira semelhante à descrição acima. Este documento é mais difícil de confiar, já que começa com um aviso de que está "irremediavelmente desatualizado e pede uma reescrita completa".
Ou seja. force_empty
solicita que todas as páginas sejam descartadas imediatamente. Se houver outro cgroup que também queira usá-lo, ele terá que lê-lo novamente no disco.