1.1   "시스템의 CPU 사용량" 은 어떻게 측정되는가?

Solaris 운영체제는 1초에 100번씩 CPU가 어떤 일을 하는지 감시한다. 이때 CPU가 user mode에서 작업을 실행하면 user_tick에 1을 증가 시키고, system mode에서 작업을 실행하면(애플리케이션이 시스템 콜을 호출하여 커널에서 실행되고 있는 경우) system_tick에 1을 증가시킨다.
CPU가 실행할 작업이 없어서 쉬고 있는 경우, I/O(block device: hard disk)를 기다리는 작업이 있으면 wait_tick에 1을 증가시키고, 그렇지 않으면 idle_tick에 1을 증가시킨다.
vmstat나 sar 명령어는 이러한 값을 시스템으로 부터 얻어서 주어진 시간간격(interval) 의 차이 값을 구하여 각각을 백분율(%)로 나타낸 것이 CPU 사용율이다.

만일 sar 명령어로 10초 간격으로 시스템 사용량을 조사하면, sar 명령어는 먼저 위에서 설명한 값을 시스템으로 부터 얻어 오고, 10초 후에 한번 더 얻어와서 2회 측정한 값의 차이 값을 각각의 백분율로 보여 준다.

예를 들어, 10초 간격으로 CPU 사용율을 조사하면,

Tick

First

Second
(10 sec later)

Delta
(Total: 1000)

%

user

230

430

430-230 = 200

200/1000*100 = 20%

system

350

500

500-350 = 150

150/1000*100 = 15%

wait

160

310

310-160 = 150

150/1000*100 = 15%

idle

160

660

660-160 = 500

500/1000*100 = 50%

다음은 CPU 사용율을 알아보는 명령어 sar 와 vmstat 명령어의 결과이다.

# sar -u 1 10
14:43:22    %usr    %sys    %wio   %idle
14:43:23       3       7      26      64
14:43:24       0       5      33      62
14:43:25       1       4      39      56
14:43:26       1       3      40      56

# vmstat 1 
 procs     memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr f0 s0 s1 s1   in   sy   cs us sy id
 0 0 0 2330808 102048 3  18 21  4  4  0  3  0  1  0  0  430  431  339  1  0 99
 0 1 0 674656 95224 215   8 6720 0 0  0  0  0 808 0  0 1879 9666 1871  3 11 86
 0 1 0 674656 89584 190   0 3560 0 0  0  0  0 406 0  0 1601 4239 1064  0  5 94

위의 결과에서 보면, sar 명령어는 CPU 사용량을 %usr(user)와 %sys(system)과 %wio(wait)와 %idle(idle)로 구분하고, vmstat에서는 us(user)와 sy(system)과 id(idle)로 구분한다.
%wio의 값은 CPU의 사용율과는 무관하다. 이 값은 CPU가 놀고 있을 때, IO를 기다리고 있는 프로세스가 있는지 여부를 알아보는 힌트이다.
IO를 기다리는 프로세스가 있다는 것은 그 IO가 완료되면 곧 바로 CPU를 다시 사용할 것이라는 것을 암시한다. 유닉스,솔라리스,scsa,scna,csa,솔라리스학원,유닉스학원,유닉스보안,unix유닉스,솔라리스,scsa,scna,csa,솔라리스학원,유닉스학원,유닉스보안,unix유닉스,솔라리스,scsa,scna,csa,솔라리스학원,유닉스학원,유닉스보안,unix,solaris

sar 와 vmstat 명령어의 결과는 다음과 같은 관계이다.

         sar     vmstat		CPU
---------------------------------------------------
         %usr  =  us		run on user mode
         %sys  =  sy		run on system mode
%wait + %idle  =  id		idle
선 솔라리스 solaris, scsa, scna 선 솔라리스 solaris, scsa, scna 선 솔라리스 solaris, scsa, scna

+ Recent posts