본문 바로가기

c c++ mfc

프로세스의 최대 Commit Memory Size 구하기

반응형

안녕하세요, 오늘은 프로세스의 최대 Commit Memory Size를 어떻게 구하는지에 대해 알아보겠습니다.


Commit Memory는 운영 체제가 프로세스에 할당한 메모리 중 실제로 사용하고 있는 부분을 말합니다. 

이 값은 시스템 자원의 사용률을 파악하는 데 중요한 지표입니다. 특히, 리소스가 제한적인 시스템에서는 이 값을 정확하게 알아야 합니다.

#include <windows.h>
#include <psapi.h>
#include <tchar.h>
#include <iostream>

int main()
{
  // 대상 프로세스의 PID, 이 값은 예시로 12345로 대체됩니다.
  DWORD processId = 12345;

  // 대상 프로세스의 핸들 얻기
  HANDLE processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId);

  if (processHandle != NULL)
  {
    // PROCESS_MEMORY_COUNTERS_EX 구조체 생성
    PROCESS_MEMORY_COUNTERS_EX pmc;
    ZeroMemory(&pmc, sizeof(pmc));
    pmc.cb = sizeof(pmc);

    // 프로세스의 메모리 정보 가져오기
    if (K32GetProcessMemoryInfo(processHandle, (PROCESS_MEMORY_COUNTERS*)&pmc, sizeof(pmc)))
    {
      std::cout << "최대 Commit Memory Size : " << pmc.PeakPagefileUsage << " bytes" << std::endl;
    }

    // 핸들 닫기
    CloseHandle(processHandle);
  }

  return 0;
}

이 코드는 processId 변수에 PID를 지정한 후, OpenProcess() 함수를 호출하여 대상 프로세스의 핸들을 얻습니다. 그런 다음 K32GetProcessMemoryInfo() 함수를 호출하여 대상 프로세스의 메모리 정보를 가져옵니다. 마지막으로 프로세스 핸들을 닫습니다. pmc.PeakPagefileUsage는 대상 프로세스가 Commit 한 메모리의 최대 양을 바이트 단위로 나타냅니다. (할당된 메모리를 해제하더라도 Commit한 메모리는 유지될 수 있습니다.)

 

위의 코드로 구해진 값이 올바른지 비교하기 위해서는 아래의 방법으로 확인할 수 있습니다.

  • Windows에서의 Commit Memory Size 측정 Windows에서는 'Performance Monitor'라는 도구를 사용하여 프로세스의 Commit Memory Size를 확인할 수 있습니다.
    • 시작 메뉴에서 'Performance Monitor'를 검색하고 실행합니다.
    • 왼쪽 패널에서 'Performance Monitor' > 'Monitoring Tools' > 'Performance Monitor' 순서로 들어갑니다.
    • 화면 중앙의 그래프 아래에 있는 '+' 버튼을 클릭합니다.
    • 나타나는 창에서 'Process' 카테고리를 찾아 확장합니다.
    • 이 카테고리 내부에 있는 'Commit Bytes' 항목을 선택하고, 오른쪽 패널에서 원하는 프로세스를 선택합니다.

 

이상으로 Commit Memory Size 구하는 방법을 알아보았습니다.

다음 글에서도 유용한 내용으로 찾아오겠습니다.


감사합니다.

반응형