Windows 작업 관리자





커널 시간 표시
"CPU사용"의 그래프를 보면 붉은 그래프가 함께 보이고 있는데 이부분은 KernelMode에서 사용된 CPU를 보여주는 것입니다. 위의 화면(성능 텝이 활성화된..)에서 보기메뉴를 선택하면 "커널 시간 표시"라는 메뉴가 나옵니다. 반드시 선택하시기 바랍니다. CPU 사용이 증가하는 구간에서 UserMode, KernelMode 어느곳에서 사용량이 증가되었는지 알 수 있기 때문입니다.

* 약간은 다른 내용이지만 만약 단일 프로세스상에서 동기화를 위해서 Mutex 커널오브젝트(KernelObject)를 사용한다면 UserMode에서 KernelMode 또는 그반대로의 전환을 위한 많은 작업들을 거치게 되면서 CPU를 시간을 낭비하게 됩니다. 이런 경우 처럼 단일 프로세스에서의 스레드 동기화를 구현하려면 CritcalSection등의 SpinLock류의 UserMode 동기화 객체를 이용해서 쓸데없이 Mode를 전환하는데 사용되는 CPU시간를 막는 것이 좋습니다.

PF 사용
가장 많이 혼동하시는 부분이 "CPU사용" 하단의 "PF사용" 부분입니다. 2000에서는 이것을 "Mem Usage"라고 메모리사용(부과 메모리)으로 표기하여 대부분의 사용자들이 실제 RAM(Physical Memory)의 사용량으로 알고 계십니다. 하지만 이부분은 Virtual Address 환경에서 할당된 PageFile들의 전체 크기를 말하는 것입니다.
위 그림에서는 520MB의 물리적인 메모리를 사용하고 있다는 이야기가 아니고 520MB만큼의 PageFile이 사용되고 있다는 이야기 입니다. (상단의 붉은 박스는 동일한 PF값을 나타내고 있다. 520MB = 533300KByte로 전자는 1000B를 1K로 후자는 1024B를 1K 표시한것이다.)

* PageFile에 대해서 부연 설명을 드리면 CPU가 연산을 위해 데이터에 접근할때에 해당 데이터는 Phycicam Memory, 즉 RAM에 존재해야겠죠. 만약 해당 데이터가 들어있는 PageFile이 RAM에 존재하지 않고 Disk상에 위치하고 있다면 PageFault가 발생하게 되면서 Disk상에 존재하고있는 해당PageFile을 RAM으로 불러들이는(Page In) 작업이 수행됩니다.
더불어 RAM의 공간이 모자라면 최근에 사용되지 않았던 Hit Ratio가 낮은 PageFile을 반대로 Disk로 보내는(Page Out) 작업이 수행됩니다.
물리적인 RAM이 부족한 시스템이라면 이러한 PageFile의 Swap(Page In/Out)작업때문에 성능이 저하되겠죠. 이러한 성능저하 현상을 Thrashing이라고 합니다.(스레드들이 서로간에 Context Switching에 시간을 소모해서 원래의 작업을 못하고 성능저하가 발생하는 경우도 Thrasing이라고 한다.)

 


전체
"핸들"(Handle), "스레드"(Thred), "프로세스"(Process).
각각 현재 OS에서 사용중인 전체 개수를 표시해주는 부분입니다.


실제 메모리
실제 PC에 설치되어있는 물리적인 메모리인 RAM의 상태를 표시해 주는 부분입니다.
"전체" 장착되어있는 RAM의 전체 크기.
"사용 가능" CPU가 사용가능한 RAM의 크기.
"시스템 케시" 파일케시와 OS, Application등 전체 시스템에서 사용하는 RAM의 크기.

할당된 메모리
가상메모리(Virtual Memory)를 말해주는 부분으로 Disk, Ram상에 존재하는 전체 PageFile을 표시하는 부분입니다.
"전체" 현재 할당된 가상메모리 크기.
"한도" 총 페이징 파일의 최대 크기.(시스템->고급->성능옵션->고급->가상메모리 에서 설정한 페이징 파일의 최대 크기입니다.)
"최고" 부팅이후에 할당되었던 가상메모리중에서 최고치 값.

커널 메모리
"전체" OS 커널에서 사용중인 메모리의 크기(페이지됨 + 페이지 안 됨)
"페이지됨"(Paged) 커널이 할당한 가상메모리 상태에서의 할당(PageFile)한 크기.
"페이지 안됨"(Nonpaged) 커널이 물리메모리(RAM)상에 직접 할당한 크기.

* 커널이 동작하기 위해선 일부 코드들은 직접 RAM상에 위치해야합니다. 예를 들면 가상메모리 환경에서 Page Directory와 Page Table을 통해서 실제메모리의 PageFrame에 접근하도록 가상메모리를 구현하는 코드 자신은 정작 가상메모리에 위치하고 있을 수 없겠죠. 이러한 코드들은 항상 RAM에 직접 위치해 있게 됩니다.


메모리 사용 (Working Set)
프로세스의 구동을 위한 'EXE과 DLLs'의 'Code와 Data' 에서 실제 물리메모리(RAM)에 존재(Page In)하는 메모리의 크기.

VM 크기 (Private Bytes)
프로세스의 구동을 위한 'EXE과 DLLs'의 'Code와 Data' 에서 다른 프로세스와 공유 할 수 없는 Commit(Page In, Out 모두)된 메모리의 크기.

Virtual Size (Virtual Bytes)
프로세스의 구동을 위한 'EXE과 DLLs'의 'Code와 Data' 에서 공유 가능한 영역과 불가능한 모든 영역의 가상 메모리(Commit, Reserved 모두)의 크기.

출처:http://bluemoon815.tistory.com/6