Linux

psPRI 列與手冊頁不一致

  • September 18, 2021

**更新:**我的理解是正確的,並且手冊頁ps已更新為現在為 PRI 列聲明以下內容:“程序的優先級。數字越大,優先級越高。”


我一直試圖了解調度優先級在 linux 中是如何工作的。這是我所擁有的:

  • 核心為每個程序使用一個優先級值,範圍從 0 到 139。數字越小,程序的優先級越高。
  • 保留從 0 到 99 的優先級值,所有使用者空間程序的優先級從 100 到 139。
  • Linux 提供了nice使用者可以優先公開和修改的介面。取值範圍從-20 到19 ,nice映射到優先級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
(···)

PRIfromps -o pri39 - priority,第priority18 個欄位從哪裡開始/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

優先級欄位 (18th) in/proc/PID/stat由核心設置fs/proc/array.ctask_struct->prio - 100(via task_prio();MAX_RT_PRIO定義為100)。

引用自:https://unix.stackexchange.com/questions/482197