일반적인 소프트웨어의 메모리 사용량이 과장되어 있습니까?

일반적인 소프트웨어의 메모리 사용량이 과장되어 있습니까?

여러 프로세스가 동일한 공유 라이브러리(예: Gtk)를 사용하고 있다고 가정합니다. 아마도 mmap라이브러리 파일과 물리적으로 RAM이 공유되는 것 같습니다.

그러나 시스템 모니터에 표시되는 것처럼 각 프로세스의 메모리 크기에 라이브러리 크기가 추가되어 숫자가 과장됩니다. 이것이 정확합니까?

답변1

실제 메모리 계산은 공유 메모리를 개인 메모리와 분리하지만 일부 도구는 프로세스 메모리 사용량을 표시할 때 이를 집계합니다. 또한 cgroup은 해당 메모리 사용에 대한 프로세스 비용을 청구하므로 cgroup에 최대 메모리 제한이 있는 경우 이것이 중요합니다.

이것은 프로세스의 메모리 사용을 과장하지 않으며 실제로 해당 메모리를 사용하고 있습니다. 그러나 프로세스 그룹의 총 메모리 사용량을 보고 결합된 총계만 보면 실제 사용량보다 결과가 부풀려집니다. 각 프로세스가 사용하는 라이브러리를 자세히 살펴보지 않고 공유 라이브러리가 재사용되는 횟수를 알 수 있는 간단한 방법은 없습니다. 단, cgroup에서는 이를 올바르게 고려해야 합니다.

따라서 프로세스 그룹의 실제 메모리 사용을 알고 싶고 프로세스를 모두 동일한 메모리 cgroup에 추가하는 것이 정당하다고 생각한다면 이것이 정답을 제공할 것입니다.

관련 정보