[Linux] Nice & Renice

반응형

이번 글에서는 Linux 에서 Nice 와 Renice 명령어를 사용하는 방법에 대해 알아보겠습니다.

명령어 요약

# show process's niceness
top

# show process's niceness
ps -l 

# check system default niceness
nice

# assign lower nice value (+2 lower priority)
nice -2 top

# assign higher nice value (-10 higher priority) 
nice --10 top

# find PID of process
pidof [process]

# renice of PID
renice 5 [PID]

1. Niceness

niceness(nice value)란 각 process 별로 launch 시점에 할당 받은 priority (우선순위) 를 의미합니다.

niceness 값은 -20 부터 +19 까지 가질 수 있으며 -20 은 가장 높은 우선순위를, +19는 가장 낮은 우선순위를 의미합니다.

이때 niceness 값이 작으면 작을수록 (우선순위가 높을수록) CPU 에게 많은 자원을 할당받습니다.

1-1) view niceness (top)

process 별 niceness 값은 top 명령어로 확인할 수 있습니다.

top

top 명령어로 출력된 값중 'NI' 컬럼의 값이 각 process 들의 niceness value 를 의미합니다.

1-2) view niceness (ps)

ps 명령어의 -l 옵션을 사용해도 process 의 niceness 값을 확인할 수 있습니다.

ps -l

결과 값으로 각 process 별 PRI(우선순위) 와 NI(Niceness) 값을 확인할 수 있습니다.

PRI(priority) 값은 0 부터 139 까지 가질 수 있으며 0 은 가장 높은 우선순위를, 139는 가장 낮은 우선순위를 의미합니다.

기본적으로 PRI(priority) 값은 NI(niceness) 값을 기반으로 계산됩니다.

예를 들어 다음과 같은 process 들이 존재 할 때

위에서부터 3개의 process 는 default niceness 값인 0을 할당받았으며,

맨 아래의 process 는 -20 의 nicessness 값을 할당받아

다른 process 들 보다 우선순위가 높으므로 (PRI 값이 낮으므로) CPU 에게 더 많은 자원을 할당받게 됩니다.

1-3) default niceness

system 에 의해서 실행되는 대부분의 process 들은 다음과 같이 '0' 의 nicenss 값을 가집니다.

system 의 default niceness 값을 확인하고 싶으면 다음과 같이 입력합니다.

nice

결과는 다음과 같이 0 인 것을 확인할 수 있습니다.

1-4) -20 niceness

system 에 중요한 process 들은 다음과 같이 -20 의 높은 우선순위의 niceness 값을 부여 받습니다.

일반적으로 자식 process 는 부모 process 의 niceness 값을 상속받습니다.

2. Change Niceness

특정 process 를 실행할 때 사용자 지정 niceness 값을 할당할 수도 있습니다.

2-1) lower priority

default niceness 값보다 낮은 우선 순위를 부여하기 위해선 '-' 를 사용합니다.

예를 들어 top 명령어를 실행할 때 niceness 값을 2 만큼 낮추고 싶다면 다음과 같이 입력합니다.

nice -2 top 

이는 top process의 niceness 값을 2만큼 빼라, 즉 'top process의 우선순위를 2만큼 낮춰라' 라는 의미로 해석할 수 있습니다.

실제 위 명령어를 실행한 뒤 ps 명령어로 NI 값을 확인해보면

default niceness 값인 0 에서 2가 더해진 (우선순위가 2만큼 낮아진) 것을 확인할 수 있습니다.

2-2) higher priority

반대로 default niceness 값보다 높은 우선 순위를 부여하기 위해선 '--' 를 사용합니다.

예를 들어 top 명령어를 실행할 때 niceness 값을 10 만큼 높히고 싶다면 다음과 같이 입력합니다.

nice --10 top

이는 top process 의 niceness 값을 10만큼 더해라, 즉 'top process의 우선순위를 10만큼 높여라' 라는 의미로 해석할 수 있습니다.

실제 위 명령어를 실행한 뒤 ps 명령어로 NI 값을 확인해보면

default niceness 값인 0 에서 10 이 빼진 (우선순위가 10만큼 높아진) 것을 확인할 수 있습니다.

3. Renicing Running Process

process 의 launch 시점이 아닌, 동작중인 process 의 niceness 값도 변경할 수 있습니다.

먼저 process의 niceness 값을 변경하기 위해선 해당 process 의 PID 값을 알아야 합니다.

PID 값을 확인하기 위해선 pidof 명령어를 사용할 수 있습니다.

예를 들어 top process 의 PID 값을 확인하기 위해선 다음과 같이 입력합니다.

pidof top

현재 제 system 에서 top process 의 PID 값은 3538 입니다.

동작중인 top process 의 nicenss 값을 변경하기 위해선 renice 명령어를 사용합니다.

예를 들어 top process 의 renicess 값을 5 로 변경하기 위해선 다음과 같이 입력합니다.

renice 5 3538

그 결과 다음과 같이 top process 의 nincess 값이 5 로 변경된 것을 확인할 수 있습니다.


반응형

'Linux' 카테고리의 다른 글

[Linux] Job Scheduling (At)  (0) 2021.03.31
[Linux] Signal  (0) 2021.03.30
[Linux] Process States  (0) 2021.03.28
[Linux] Ping  (0) 2021.03.27
[Linux] DMIDECODE (System Management BIOS)  (0) 2021.03.13

댓글

Designed by JB FACTORY