Linux

在什麼情況下 ni% in top 不是 0

  • April 3, 2021

我了解到 ni 代表用於更改 niceness 或優先級值的使用者空間程序的 cpu,但是在我的系統中,即 CentOS Linux 版本 7.9.2009 (Core),我做了下面的測試,所有測試結果都是,ni 是總是 0。誰能幫我理解 ni% 什麼時候會改變?

ProNoChange 是一個消耗一些 cpu 的簡單過程。

場景1:

 taskset -c 31 ./PriNoChange 50 &

 taskset -c 31 nice -n -10 ./PriNoChange 50 &

 taskset -c 31 chrt --rr 50 ./PriNoChange 50 &

結果:

3 個過程的最高結果

場景2:通過setpriority改變程式碼中的niceness,然後執行程序,仍然ni為0

 int which = PRIO_PROCESS;
 id_t pid = getpid();
 int ret;
 int priority = -10;
 ret = setpriority(which, pid, priority);

通過 setpriority 改變 niceness 謝謝,羅素

來自man 1 top

ni, nice : 執行 niced 使用者程序的時間

“Nice”應該被解釋為“比預設更好”,即“比預設更好0”。您沒有觀察到 niced 程序,因為-10在您的範例中不太好,它不算是 niced。

例如,這算作 niced:

nice -n 1 md5sum /dev/urandom

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