O arquivo memory.stat de um cgroup lista o uso do cache de página para esse cgroup (nos campos cache e total_cache). Como é derivado o uso do cache de página?
Por exemplo, o arquivo a.txt é aberto pelos cgroups A e B. A e B mantêm seu próprio cache de a.txt? Ou o cache de a.txt é compartilhado entre A e B? Se for compartilhado, o uso do cache de página do memory.stat para A e B será incrementado na mesma quantidade (quantidade total)?
Além disso, por que memory.stat não inclui um campo para cache de buffer ou cache de troca?
A distribuição é Linux Mint 18.2.
Responder1
Isso é discutido na seção 2.3 dohttps://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt...
2.3 Contabilidade de Página Compartilhada
As páginas compartilhadas são contabilizadas com base na abordagem de primeiro toque. O cgroup que primeiro toca uma página é contabilizado na página. O princípio por trás desta abordagem é que um cgroup que usa agressivamente uma página compartilhada acabará sendo cobrado por isso (uma vez que ela seja descarregada do cgroup que a trouxe - isso acontecerá sob pressão de memória).
Quanto às outras questões...
Desde o Linux 2.4, o buffer foi adicionado ao cache (vejahttps://stackoverflow.com/a/14671569). Como tal, você não encontrará um campo separado para buffer em memory.stat.
Para que o swap seja listado em memory.stat, é provável que o kernel precise ser compilado com CONFIG_MEMCG_SWAP_ENABLED.