여러 프로세스가 동일한 공유 라이브러리(예: Gtk)를 사용하고 있다고 가정합니다. 아마도 mmap
라이브러리 파일과 물리적으로 RAM이 공유되는 것 같습니다.
그러나 시스템 모니터에 표시되는 것처럼 각 프로세스의 메모리 크기에 라이브러리 크기가 추가되어 숫자가 과장됩니다. 이것이 정확합니까?
답변1
실제 메모리 계산은 공유 메모리를 개인 메모리와 분리하지만 일부 도구는 프로세스 메모리 사용량을 표시할 때 이를 집계합니다. 또한 cgroup은 해당 메모리 사용에 대한 프로세스 비용을 청구하므로 cgroup에 최대 메모리 제한이 있는 경우 이것이 중요합니다.
이것은 프로세스의 메모리 사용을 과장하지 않으며 실제로 해당 메모리를 사용하고 있습니다. 그러나 프로세스 그룹의 총 메모리 사용량을 보고 결합된 총계만 보면 실제 사용량보다 결과가 부풀려집니다. 각 프로세스가 사용하는 라이브러리를 자세히 살펴보지 않고 공유 라이브러리가 재사용되는 횟수를 알 수 있는 간단한 방법은 없습니다. 단, cgroup에서는 이를 올바르게 고려해야 합니다.
따라서 프로세스 그룹의 실제 메모리 사용을 알고 싶고 프로세스를 모두 동일한 메모리 cgroup에 추가하는 것이 정당하다고 생각한다면 이것이 정답을 제공할 것입니다.