고쳐 쓰다:내 이해는 정확합니다. PRI 열에 대해 다음 내용을 읽도록 매뉴얼 페이지가 ps
업데이트되었습니다. "프로세스의 우선 순위. 숫자가 높을수록 우선 순위가 높습니다."
나는 Linux에서 스케줄링 우선순위가 어떻게 작동하는지 이해하려고 노력해 왔습니다. 이것이 내가 얻는 것입니다:
- 커널은 각 프로세스에 대해 0부터 139까지의 우선순위 값을 사용합니다. 숫자가 낮을수록 프로세스의 우선순위가 높아집니다.
- 0부터 99까지의 우선순위 값은 유지되며, 모든 사용자 공간 프로세스는 100부터 139까지의 우선순위를 갖습니다.
- Linux는
nice
사용자에게 공개되고 사용자가 수정할 수 있는 우선순위인 인터페이스를 제공합니다. 값의nice
범위는 -20에서 19까지이며 우선 순위는 100에서 139까지 매핑됩니다. 우선순위 값과 마찬가지로 값이 낮을수록nice
프로세스의 우선순위가 높아집니다.
지금 내 질문은 다음과 같습니다.PRI 열은 무엇을 의미합니까 ps
?
매뉴얼 페이지에는 다음과 ps
같이 나와 있습니다.
pri PRI priority of the process. Higher number means lower priority.
그러나 값의 범위는 0에서 39까지이며 경험적으로 19 - nice
.
nice
이러한 관계로 인해 열에 표시된 우선순위는 PRI
"숫자가 높을수록 우선순위가 낮아진다"를 만족 시킬 수 없습니다 .
내가 무엇을 놓치고 있나요?
이 동작을 보여주는 예:
root@kali:~# ps -ao pid,comm,pri,nice
PID COMMAND PRI NI
6153 cat 19 0
(···)
root@kali:~# renice -n -10 -p 6153
6153 (process ID) old priority 0, new priority -10
root@kali:~# ps -ao pid,comm,pri,nice
PID COMMAND PRI NI
6153 cat 29 -10
(···)
답변1
에서 , 18번째 장면은 어디에 PRI
있습니까 ?ps -o pri
39 - priority
priority
/proc/PID/stat
손상되지 않은 필드를 원하면 proc/PID/stat
를 사용하여 얻을 수 있습니다 ps -o priority
.
네가 원한다면진짜 우선순위, 를 통해 얻을 수 있습니다 ps -o pri_baz
.
ps -o pri_foo
이 값에 대한 다른 흥미로운 수정 사항은 , ps -o pri_bar
및 를 통해 얻을 수 있습니다 ps -o opri
.
나는 당신에게 거짓말을 하지 않았습니다. 소스코드를 보시면 됩니다여기.
알아채다 /proc/PID/stat
:
우선순위 필드(비트 18)는 /proc/PID/stat
커널에 의해 설정됩니다.fs/proc/array.c
task_struct->prio - 100
(를 통해task_prio()
;MAX_RT_PRIO
로써 정의 된 100
).