Memory(Private Bytes, Working Set, Virtual Bytes)
Private Bytes
- 실행 파일이 요청한 메모리양 (실제로 사용하는 양과 다를수 있음)
- 메모리 맵(공유 DLL)등을 제외
Working Set
- 프로세스에 의해 사용되는 총 물리메모리
- 메모리 맵(공유 DLL)파일과 다른 리소스도 포함되므로 Private Bytes 보다 정확한 측정값
Virtual Bytes
- 전체 프로세스에서 차지하는 전체 가상 주소 공간
- 메모리 매핑파일(공유 DLL)을 포함한다는 점에서 Working Set 과 유사하지만 대기 목록의 데이터와 이미 페이징되어 디스트의 페이지 파일에 저장되어있는 데이터도 포함
- 로드가 심한 시스템의 모든 프로세스에서 사용되는 총 Virtual Bytes는 실제로 시스템에 비해 많은 메모리를 추가.
Private Bytes(PB) | Working Set(WS) | Virtual Bytes(VB) |
---|
실제 할당된 메모리 + 페이지파일 사용량 | non-paged PB + 메모리 매핑 파일 | WS + Paged PB + 대기목록 |
내용 정리
http://stackoverflow.com/questions/1984186/what-is-private-bytes-virtual-bytes-working-set
윈도우는 가상 메모리 방식으로 프로세스 메모리를 관리한다. 그런데 가상 메모리라는 것이 페이지 파일(Pagefile, pagefile.sys)을 이용하는 것이기 때문에 순수하게 물리 메모리(RAM)만을 이용하는 것보다 속도가 느릴 수 밖에 없다.
물리메모리에 상주해 있는 데이터는 단순히 해당 주소를 참조해서 Read/Write하면 되지만, 페이지 파일에 존재하는 데이터를 Read/Write 하려면 페이지폴트(Page Fault), 페이지 스왑(Page Swap)과정을 거쳐야만 하기 때문이다.
따라서 윈도우는 이를 좀더 보완하기 위해서 프로세스 워킹 셋(Process Working Set)이라는 것을 두어서 프로세스의 메모리 처리 속도를 향상 시켜준다. 즉 프로세스가 자주 참조하는 데이터를 물리 메모리 영역에 상주시켜서 페이지 폴트나 페이지 스왑 과정 없이 해당 데이터를 참조할 수 있게 해준다.
각 프로세스는 자신만의 프로세스 워킹 셋을 가지며, 프로세스 워킹셋에는 해당 프로세스가 자주 참조하는 코드 페이지(Code Pages)와 데이터 페이지(Data Pages)가 포함된다.
만약, 프로세스가 프로세스 워킹 셋에 존재하지 않는 페이지를 참조하게 되면 페이지 폴트가 발생한다. 그리고 VMM(Virtual Memory Manager)은 해당 페이지를 프로세스 워킹 셋에 추가한다. 물리 메모리가 부족한 상황에서는 VMM이 물리 메모리 확보를 위해서 프로세스 워킹셋에서 오랫동안 참조되지 않은 페이지와 자주 참조되지 않은 페이지를 제거한다. 이러한 과정을 Trim이라고 하며, Trim 작업이 많이 수행될수록 페이지 폴트가 발생하는 빈도는 증가하게 된다.
페이지 폴트의 발생 빈도가 증가하면 그만큼 메모리 처리속도가 증가할 수 있다고 볼 수 있겠지만, 어차피 자주 참조되지 않는 페이지들은 프로세스 워킹셋에서 제거하는 것이기 때문에 그 영향은 미비하다고 볼수 있으며, 오히려 효율적인 메모리 활용과 가용 메모리 공간 확보 측면의 장점을 가진다고 볼 수 있다.
출처 : http://egloos.zum.com/yunsoul/v/4973792