두 프로세스 간의 메모리 사용량을 어떻게 비교해야 합니까?

두 프로세스 간의 메모리 사용량을 어떻게 비교해야 합니까?

나는 두 개의 프로세스를 가지고 있고 그들의 메모리를 비교하고 어느 프로세스가 더 많은 메모리 소비를 가지고 있는지 알아내고 싶습니다( /proc/[pid]/statusLinux에서 사용됨). 그러나 일부 필드를 해석하는 방법이 혼란스럽습니다(의미하는 바가 아님 - 각 필드가 무엇을 나타내는지 알고 있음).

  1. 두 프로세스 모두 VmPeak4505kB입니다. 이는 동일한 양의 메모리를 사용한다는 의미입니까? 가상 메모리에는 RAM, 스왑 영역 등이 포함되어 있으므로 이것이 우려되는 영역입니까?
  2. VmRSS프로세스 A의 크기는 704kB이고 프로세스 B의 크기는 740kB입니다. 이는 물리적 RAM에 더 많은 메모리가 할당되기 때문에 프로세스 B가 더 집약적이라는 것을 의미합니까? 게다가 B는 RSSAnon에서 더 높지만 (어떤 방식으로든 고려한다면) RSSFile에서는 더 낮습니다 .VmPTE
  3. B에는 200개의 자발적 컨텍스트 스위치가 있고 A에는 1083개가 있습니다. 이것이 메모리 소비와 어떤 관련이 있습니까?

여기서 진짜 문제는 다른 무엇보다 나의 기억 지식 부족인 것 같아서 무지에 대해 사과드립니다.

답변1

"자발적 컨텍스트 전환"은 프로세스가 자발적으로 CPU를 포기하는 경우입니다. 이는 기본적으로 시스템 호출이 이루어질 때마다 수행됩니다. 비자발적 전환은 예를 들어 프로세스가 리소스를 기다려야 하고 CPU를 빼앗아가는 페이지 오류로 인해 발생합니다. 메모리 사용량과 관련이 없습니다.

현재 사용량이 최고조에 달하고 있습니다. 그러나 프로세스가 대부분의 실행 시간 동안 1MiB를 사용하고 때로는 짧은 기간 동안 4MiB로 최고치에 도달하거나 3MiB를 지속적으로 사용하는 경우 상황은 분명히 매우 다릅니다. 이는 오해의 소지가 있습니다. 프로그램이 4MiB를 할당할 수 있지만 나머지는 비활성 상태인 동안 실제로는 1MiB를 적극적으로 사용합니다. 그 부분은 별 차이 없이 교체가 가능합니다.

정확히 무엇을 달성하려고 합니까? 쪼개려고 하기보다는 정말 관심 있는 성능 데이터를 측정해 비교하는 것이 더 좋습니다.

관련 정보