什么情况下top中的ni%不为0

什么情况下top中的ni%不为0

我了解到 ni 代表用于用户空间进程的 cpu,其优度或优先级值已更改,但在我的系统中,即 CentOS Linux release 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 谢谢,拉塞尔

答案1

man 1 top:

ni, nice : 运行好的用户进程的时间

“Niced”应该解释为“比默认值更好”,即“比默认值更好0”。您没有观察到好的流程,因为-10在您的示例中是较少的不错,这不算不错。

例如,这也算不错:

nice -n 1 md5sum /dev/urandom

相关内容