[Linux] Nice & Renice
- Linux
- 2021. 3. 29.
이번 글에서는 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 |