cgroup의 memory.stat 파일에는 해당 cgroup의 페이지 캐시 사용량이 나열됩니다(cache 및 total_cache 필드). 페이지 캐시 사용량은 어떻게 파생되나요?
예를 들어, a.txt 파일은 cgroup A와 B 모두에서 열립니다. A와 B는 모두 a.txt의 자체 캐시를 유지합니까? 아니면 A와 B 간에 a.txt 캐시가 공유됩니까? 공유하는 경우 A와 B 모두에 대한 memory.stat의 페이지 캐시 사용량이 동일한 양(총량)만큼 증가합니까?
또한 memory.stat에 버퍼 캐시 또는 스왑 캐시에 대한 필드가 포함되지 않는 이유는 무엇입니까?
Distro는 Linux Mint 18.2입니다.
답변1
이에 대해서는 섹션 2.3에서 논의됩니다.https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt...
2.3 공유 페이지 회계
공유 페이지는 첫 번째 터치 접근 방식을 기반으로 계산됩니다. 페이지를 처음 접하는 cgroup이 페이지로 간주됩니다. 이 접근 방식의 기본 원칙은 공유 페이지를 공격적으로 사용하는 cgroup이 결국 그에 대한 비용을 청구하게 된다는 것입니다(이를 가져온 cgroup에서 비용이 청구되지 않으면 이는 메모리 부족으로 인해 발생합니다).
다른 질문으로는...
Linux 2.4부터 버퍼가 캐시에 추가되었습니다(참조:https://stackoverflow.com/a/14671569). 따라서 memory.stat에서는 버퍼에 대한 별도의 필드를 찾을 수 없습니다.
memory.stat에 스왑이 나열되려면 CONFIG_MEMCG_SWAP_ENABLED를 사용하여 커널을 컴파일해야 할 수 있습니다.