본문 바로가기
Operating system

[Memory] Virtual Memory, Nonpaged pool, Paged pool, Commit byte

by 권성호 2021. 12. 2.

https://github.com/prometheus-community/windows_exporter/blob/master/docs/collector.process.md

 

GitHub - prometheus-community/windows_exporter: Prometheus exporter for Windows machines

Prometheus exporter for Windows machines. Contribute to prometheus-community/windows_exporter development by creating an account on GitHub.

github.com

window os, process 모니터링을 위해,

위 링크의 windows_process_private_bytes, windows_process_pool_bytes,windows_process_virtual_bytes 를 이해하기 위해 작성된 글 입니다.


OS의 요구 페이징과 프로세스 구동 시 메모리 할당에 대한 기본 지식이 있다고 가정합니다.

 

 

1.  Virtual Memory Size

  • 디스크로부터 페이지를 swapping 하는 방식을 통해 물리 메모리의 한계 이상으로 주소 공간을 가질 수 있다.
  • windows_process_virtual_bytes  메트릭은 특정 프로세스가 사용하기로 예약된 가상 주소 공간의 크기를 의미한다.
  • 이 공간이 크다고 해서 실제 해당 프로세스가 메모리를 많이 쓰는 것은 아니다. 

2.  Commit Memory Size

  • 예약된 가상 주소 공간에서 실제로 사용하기 위해 할당받은 메모리 크기를 의미한다.
  • 가상 메모리 관점에서 할당을 받는다는 것은, 해당 페이지가 실제로 쓰인다는 것을 의미하고 이를 위해 물리적인 프레임과 메핑 되어 있다는 것을 의미한다.
  • 가상 메모리가 commit 된 상태라도 페이지 폴트가 발생할 수 있다.(실제 물리 메모리에 프레임이 없을 수 있다.)
  • 하지만, 곧 사용될 영역이기 때문에 요구 페이징 기법으로 인한 스와핑이 발생해 물리 메모리에 해당 프레임이 올라올 것이다.
  • 즉, windows_process_private_bytes는 실제 프로세스가 사용하기 위해 할당받은 가상 메모리 크기를 의미한다.
  • 참고

3.  Nonpaged pool

  • 페이징 과정에서 필연적으로 페이지 폴트 발생으로 인한 스와핑이 발생한다. 
  • 즉, 페이지는 언제든지 디스크에 다녀올 수 있다.
  • 그런데 이러한 스와핑이 너무 많이 발생하게 되면, 실제 로직을 수행하는 것보다 스와핑에 cpu 시간을 더 소비하게 될 우려가 있다.
  • 이를 방지하기 위해 스와핑이 어떤 상황에도 발생하지 않는 메모리 영역을 지정해 두었는데, 그것이 nonpaged pool이다.
  • nonpaged pool 메모리 공간을 프로세스가 할당받게 되면 해당 영역은 항상 메모리에 상주해 있기 때문에 페이지 폴트가 발생하지 않고 스와핑도 발생하지 않는다. 
  • nonpaged pool은 물리 메모리 수준의 개념이다.
    • 디스크 스와핑을 하지 않는 특수한 물리 메모리 영역이라고 생각하면 편하다.
  • 참고
 

Non-Paged Pool

윈도우즈에서 내부적으로, 시스템이 사용하려는 메모리 공간을 제한되게 확보하는 것들이 있는데, 그 중에서 하나가 Non-Paged Pool이다. Memory Limits for Windows Releases http://msdn.microsoft.com/en-us/li..

elky.tistory.com

4.  Paged pool

  • 우리가 흔히 알고 있는 요구 페이징 구조에서 일반적인 프레임이 할당되는 물리 메모리를 의미한다.
  • 해당 영역의 메모리는 필요시 스와핑이 발생한다.

windows_process_pool_bytes는 paged pool이나 nonpaged pool의 크기를 나타낸다. 물리 메모리 수준의 개념이다.

'Operating system' 카테고리의 다른 글

CPU 스케줄링  (0) 2021.11.03
Thread  (0) 2021.10.31
Process - 프로세스간 통신(IPC < Socket < RPC)  (0) 2021.10.30
Process - 프로세스의 이해  (0) 2021.10.16

댓글