프로세스를 실행할 때 리눅스 커널은 각 프로세스에 CPU를 할당합니다.
이때 스케줄링 우선순위
가 존재합니다.
우선순위는 -20 ~ +19
의 범위로 정해지고, 숫자가 낮을 수록 우선순위가 높다는 의미입니다.
쉘은 기본적으로 모든 프로세스를 스케줄링 우선순위 0
으로 실행합니다.
스케줄링 우선순위를 설정할 수 있는 명령입니다.
nice -n <우선순위> <실행 명령>
-n
옵션은 붙이지 않아도 무방합니다.
-n
옵션을 쓰지 않고는 아래와 같이 쓸 수 있습니다.
nice -<우선순위>
하지만 위와 같은 방법은 음수를 표현시 대시(-
)가 2개 연속으로 붙어 혼란을 줄 수 있기 때문에 -n
옵션을 붙여서 사용하시는 것을 추천합니다.
기본적으로 쉘은 우선순위가 높아지는 것을 막아놨습니다.
그래서 아래와 같이 명령을 실행하면 권한 문제(Permission denied)
가 발생합니다.
$ nice -n -10 ./test1 > result1 &
[3] 589807
$ nice: cannot set niceness: Permission denied
[3]- Done nice -n -10 ./test1 > result1
하지만 명령은 그대로 실행됩니다.
이미 실행 중인 프로세스의 우선순위를 변경하고 싶다면 renice
를 이용합니다.
renice -n <우선순위> -p <PID>
$ ./test1 &
[3] 589940
$ ps -p 589940 -o pid,ppid,ni,cmd
PID PPID NI CMD
589940 583315 0 /bin/bash ./test1
NI
는 우선순위
입니다.
$ renice -n 10 -p 589940
589940 (process ID) old priority 0, new priority 10
$ ps -p 589940 -o pid,ppid,ni,cmd
PID PPID NI CMD
589940 583315 10 /bin/bash ./test1
우선순위
가 변경된 것을 확인할 수 있습니다.
nice, renice
가능nice, renice
가능루트 사용자
는 어떤 프로세스에 어떤 우선순위로든 nice, renice
명령 가능