2011-07-06 2 views
14

메모리 그래프 프로세스 탐색기에서 위쪽 그래프는 커밋 내역을 표시합니다. 이것이 OS 레벨에서 실제로 무엇을 나타내는가?프로세스 탐색기 : 커밋 내역 그래프에는 어떤 항목이 있습니까?

이것이 프로세스에 의해 힙에 할당 된 메모리인지 확인하기 위해 필자는 100 MB를 여러 번 점진적으로 malloc 한 작은 프로그램을 작성했습니다. 커밋 내역 그래프는 잠시 동안 증가하여 (최대 1.7GB의 메모리 할당) 프로그램 메모리 할당에도 불구하고 증가하지 않았습니다.

그래서이 그래프는 무엇을 나타 냅니까? 이 정보를 사용하여 Windows 상태를 이해하고 분석하는 방법은 무엇입니까?

답변

20

커밋 수준은 시스템의 모든 프로세스에 할당 된 익명 가상 주소 공간의 양입니다. (예를 들어, mmap 파일에서 파일 기반 가상 주소 공간을 포함하지 않습니다.) 프로세스 탐색기에서 'Commit History'그래프는이 값의 시간 경과에 따른 크기를 보여줍니다.

가상 메모리가 할당되고 파싱되는 방식 때문에 (가상 주소 공간의 페이지를 백업하는 실제 RAM은 처음 접촉 할 때까지 반드시 할당되는 것은 아닙니다.)이 현재 '커밋'수준은 최악의 경우를 나타냅니다 순간)에 시스템이 생겨날 수 있습니다. Linux와는 달리 Windows는 RAM에 대한 약속 (주소 공간)을 제공하지 않으며 페이징 파일을 통해 위장하거나 가짜로 만들 수 없습니다. 따라서 커밋 수준이 시스템 (대략 RAM + 페이지 파일 크기)의 한계에 도달하면 새 주소 공간 할당은 실패하지만 기존 가상 주소 공간 영역의 새로운 용도는 실패하지 않습니다. 이 값에서 그릴 수있는 시스템에 대한

어떤 결론 :

  • 을이 값이 현재 RAM (커널과 시스템 오버 헤드를 제외하고)보다 작은 경우는, 다음 시스템을 교체하기가 매우 어렵다 (최악의 경우 모든 것이 메모리에 저장되어야하기 때문에 페이징 파일을 사용하십시오.
  • 이 값이 실제 메모리 사용량보다 훨씬 큰 경우 일부 프로그램은 많은 가상 주소 공간을 할당하지만 아직 사용하지 않습니다.
  • 응용 프로그램을 종료하면 모든 가상 주소 공간이 정리되므로 커밋 된 메모리 사용이 줄어들 수 있습니다.

실험 결과 유효성이 검사되었습니다. 난 당신이 주소 공간 제한 (윈도우의 32 비트 프로세스가 limited to 2GB ... 어쩌면 300MB의 분열, 도서관 및 텍스트에 사라 졌어요?)에 만난 것 같아요.).

+2

"이 값이 실제 메모리 사용량보다 훨씬 큰 경우 일부 프로그램은 많은 가상 주소 공간을 할당하지만 아직 사용하지 않습니다."라고 말하면 어떤 프로그램이 모든 가상 주소 공간을 할당하고 있는지 확인하는 방법이 있습니까? 내 시나리오에서는 8GB의 RAM이 있지만 12.2는 커밋 된 시스템이고 6.4의 실제 RAM이 사용되는 것을 볼 수 있습니다. 내 상자가 느려지지만 아직 프로세스 탐색기에서 I/O가 거의 없거나 (디스크에 크랭크를 돌리지 않음) 거의 CPU 사용이 없기 때문에 RAM 가용성 문제가 발생합니다. –