IA/System Admin

[v6] process scheduling (Niceness)

kiostory 2011. 5. 30. 15:38

시간 할당을 더 덜 받도록 하여 cpu 사용 시간을 늘이는 설정


-20 ~ +19

기본 0

낮을수록 cpu 할당 많이 받음


renice 또는 top에서 변경가능

또는 시작시 지정


테스트용 프로세스 5개 생성

[root@server4 oshu]# cat /dev/zero > /dev/null &
[1] 27763
[root@server4 oshu]# cat /dev/zero > /dev/null &
[2] 27764
[root@server4 oshu]# cat /dev/zero > /dev/null &
[3] 27765
[root@server4 oshu]# cat /dev/zero > /dev/null &
[4] 27766
[root@server4 oshu]# cat /dev/zero > /dev/null &
[5] 27768



top으로 보니 생성한 프로세스가 약 20%씩 cpu를 사용하고 있음
[root@server4 oshu]# top

top - 01:24:33 up  6:53,  4 users,  load average: 2.15, 0.55, 0.18
Tasks: 168 total,   6 running, 162 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.7%us, 96.3%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    503392k total,   456400k used,    46992k free,    11196k buffers
Swap:   557048k total,    22772k used,   534276k free,   145528k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
27763 root      20   0 98.5m  548  440 R 20.3  0.1   0:37.38 cat               
27765 root      20   0 98.5m  544  440 R 20.0  0.1   0:06.04 cat               
27768 root      20   0 98.5m  544  440 R 20.0  0.1   0:05.25 cat               
27764 root      20   0 98.5m  544  440 R 19.6  0.1   0:06.45 cat               
27766 root      20   0 98.5m  548  440 R 19.6  0.1   0:05.83 cat               
    1 root      20   0 19232  880  668 S  0.0  0.2   0:00.64 init              
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd       



특정 프로세스의 nice값을 수정 0->10으로 우선순위 밀리도록!

[root@server4 oshu]# renice -n 10 27766
27766: old priority 0, new priority 10
[root@server4 oshu]#


확인해보니 방금 nice값을 올린 프로세스 cpu 사용율 떨어짐

Tasks: 168 total,   6 running, 162 sleeping,   0 stopped,   0 zombie
Cpu(s):  4.0%us, 96.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    503392k total,   456532k used,    46860k free,    11224k buffers
Swap:   557048k total,    22772k used,   534276k free,   145540k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
27765 root      20   0 98.5m  544  440 R 24.6  0.1   0:24.64 cat               
27763 root      20   0 98.5m  548  440 R 24.2  0.1   0:55.97 cat               
27764 root      20   0 98.5m  544  440 R 24.2  0.1   0:25.04 cat               
27768 root      20   0 98.5m  544  440 R 24.2  0.1   0:23.85 cat               
27766 root      30  10 98.5m  548  440 R  2.3  0.1   0:18.67 cat      



다시 그놈을 nice 높임 10->-5

[root@server4 oshu]# renice -n -5 27766
27766: old priority 10, new priority -5
[root@server4 oshu]#


그놈 cpu 점유율이 가장 높아짐

top - 01:27:04 up  6:55,  4 users,  load average: 4.76, 2.30, 0.89
Tasks: 168 total,   6 running, 162 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.7%us, 97.3%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    503392k total,   456524k used,    46868k free,    11240k buffers
Swap:   557048k total,    22772k used,   534276k free,   145540k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
27766 root      15  -5 98.5m  548  440 R 43.1  0.1   0:26.71 cat               
27763 root      20   0 98.5m  548  440 R 14.2  0.1   1:09.77 cat               
27765 root      20   0 98.5m  544  440 R 14.2  0.1   0:38.42 cat               
27768 root      20   0 98.5m  544  440 R 14.2  0.1   0:37.64 cat               
27764 root      20   0 98.5m  544  440 R 13.9  0.1   0:38.84 cat               
27758 root      20   0 14940 1192  868 R  0.3  0.2   0:00.35 top  


프로세스 하나를 더 생성함. 생성시 nice값을 지정했음 5

[root@server4 oshu]# nice -n 5 cat /dev/zero > /dev/null &
[6] 27784


nice값 5로 구동됨

Tasks: 169 total,   7 running, 162 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.0%us, 97.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    503392k total,   456664k used,    46728k free,    11252k buffers
Swap:   557048k total,    22772k used,   534276k free,   145572k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
27766 root      15  -5 98.5m  548  440 R 41.1  0.1   0:56.25 cat               
27763 root      20   0 98.5m  548  440 R 13.6  0.1   1:19.46 cat               
27768 root      20   0 98.5m  544  440 R 13.6  0.1   0:47.35 cat               
27764 root      20   0 98.5m  544  440 R 13.2  0.1   0:48.52 cat               
27765 root      20   0 98.5m  544  440 R 13.2  0.1   0:48.11 cat               
27784 root      25   5 98.5m  548  440 R  4.6  0.1   0:00.89 cat               
    1 root      20   0 19232  880  668 S  0.0  0.2   0:00.64 init     




TOP에서 직접 nice값 변경 : 단축키 r

top - 01:28:54 up  6:57,  4 users,  load average: 5.59, 3.31, 1.41
Tasks: 169 total,   7 running, 162 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.6%us, 96.0%sy,  0.3%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    503392k total,   456664k used,    46728k free,    11260k buffers
Swap:   557048k total,    22772k used,   534276k free,   145568k cached
PID to renice: 27766
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
27766 root      15  -5 98.5m  548  440 R 41.4  0.1   1:13.10 cat               
27763 root      20   0 98.5m  548  440 R 13.6  0.1   1:24.99 cat               
27764 root      20   0 98.5m  544  440 R 13.6  0.1   0:54.06 cat               
27765 root      20   0 98.5m  544  440 R 13.6  0.1   0:53.64 cat               
27768 root      20   0 98.5m  544  440 R 13.6  0.1   0:52.87 cat               
27784 root      25   5 98.5m  548  440 R  4.3  0.1   0:02.69 cat               
    1 root      20   0 19232  880  668 S  0.0  0.2   0:00.64 init   


프로세스id를 입력하고 엔터, nice값을 입력하고 엔터

Renice PID 27766 to value: 15
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
27766 root      15  -5 98.5m  548  440 R 41.4  0.1   1:13.10 cat               
27763 root      20   0 98.5m  548  440 R 13.6  0.1   1:24.99 cat               
27764 root      20   0 98.5m  544  440 R 13.6  0.1   0:54.06 cat               
27765 root      20   0 98.5m  544  440 R 13.6  0.1   0:53.64 cat               
27768 root      20   0 98.5m  544  440 R 13.6  0.1   0:52.87 cat               
27784 root      25   5 98.5m  548  440 R  4.3  0.1   0:02.69 cat  



renice됨 -5 -> 15로!

op - 01:30:01 up  6:58,  4 users,  load average: 5.87, 3.87, 1.74
Tasks: 169 total,   7 running, 162 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.7%us, 96.0%sy,  0.3%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    503392k total,   457192k used,    46200k free,    11280k buffers
Swap:   557048k total,    22772k used,   534276k free,   145564k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
27764 root      20   0 98.5m  544  440 R 22.9  0.1   1:03.77 cat               
27763 root      20   0 98.5m  548  440 R 22.5  0.1   1:34.70 cat               
27765 root      20   0 98.5m  544  440 R 22.5  0.1   1:03.35 cat               
27768 root      20   0 98.5m  544  440 R 22.5  0.1   1:02.59 cat               
27784 root      25   5 98.5m  548  440 R  7.6  0.1   0:05.87 cat               
27766 root      35  15 98.5m  548  440 R  1.0  0.1   1:38.57 cat     


테스트 마치고 cat 수행중인 프로세스 모두 kill

[root@server4 oshu]# killall cat