실행중인 프로세스를 취소 하여 우선 순위 (소위 "nice value")에 우선 순위를 부여 할 수 있습니다 . UNIX 우선 순위 척도는 다소 반 직관적입니다. 음수 값은 프로세스가 동시 프로세스보다 선호됩니다. 즉 "더 많은"우선 순위를 갖습니다.
따라서 PID를 통해 프로세스를 "느리게"시도 할 수 있습니다.
# lower priority of a process
renice +1 "PID"
이것을 실행할 때마다 "nice value"프로세스는 1 씩 증가합니다. +1
물론 정수 값을 사용할 수 있습니다 .
nice 명령을 사용하면 +10 nice 값 조정으로 프로세스를 시작할 수 있습니다 (옵션으로 변경 -n
). 예를 들면 다음과 같습니다.
# start a CPU-intensive task with low priority
nice ./cpu-hog
그러나 "nice value"는 시스템의 다른 프로세스보다 특정 프로세스를 실행하는 스케줄러가 선호하는 정도에만 영향을 미칩니다. 컴퓨터가 기본적으로 유휴 상태 인 경우 하나의 단일 프로세스의 "nice value"를 높이면 해당 프로세스가 100 %를 차지 하지 않습니다. CPU. 나는 getpriority (2) 맨 페이지 에서 인용합니다 : (Emphasis added by me.)
상대적으로 좋은 가치가 프로세스 스케줄링에 영향을 미치는 정도는 Unix 시스템과 Linux에서 커널 버전에 따라 다릅니다. 커널 2.6.23부터 Linux는 좋은 값의 상대적인 차이가 훨씬 더 강한 효과를 갖는 알고리즘을 채택했습니다. 이로 인해 시스템에 다른
우선 순위로드 가있을 때마다 매우 낮은 값 (+19)이 프로세스에 CPU를 거의 제공하지 않습니다 ._
그 이유는 프로세스가 UNIX와 유사한 커널에서 실행되는 방식에 있습니다. 커널이 프로세스를 실행하기로 결정할 때마다 해당 프로세스는 특정 (고정 및 짧은) 시간 동안 CPU 코어를 완전히 제어합니다. "좋은 값"은 커널 스케줄러가 프로세스에 시간 슬롯을 제공하려는 빈도에 영향을 줄 수 있지만, 일단 스케줄되면 프로세스가 일정 시간 동안 방해받지 않고 실행된다는 사실을 변경할 수는 없습니다.
따라서 CPU 속도를 늦추지 않으면 시스템에 CPU 액세스를 위해 경쟁 할 수있는 다른 프로세스가없는 경우 프로세스를 느리게 실행할 수있는 방법이 없습니다.