我正在搜索与进程优先级相关的文档。
在Linux中,相关文档没有提到优先级别或者优先级类别,只提供了nice
值的范围。
用户可以设置该范围内的任意值。内核为优先级提供了最小和最大限制。
目前“GNOME 系统监视器”显示进程优先级名称如“非常高、高、正常、低、非常低”,每个都有自己的优选值范围。
我还没有找到与这些名称相关的任何文档。
2004 年,“GNOME.org” 中提出了一个针对“GNOME 系统监视器”的 Bug 131802。
这个错误描述了“GNOME 系统监视器”不应该引用“nice”。nice 的语义令人困惑,主要是因为较低的值具有较高的优先级。
2011年,A patch在进程表中添加了优先级列,以人性化的方式显示nice值,并默认显示。
我提到了https://bug131802.bugzilla-attachments.gnome.org/attachment.cgi?id=202180
并引用了“gnome-system-monitor”源代码中的函数“get_nice_level()”。
以下是来自同一文件的函数模板。
static gchar *
get_nice_level (gint nice)
{
if (nice < -7)
return _("(Very High Priority)");
else if (nice < -2)
return _("(High Priority)");
else if (nice < 3)
return _("(Normal Priority)");
else if (nice < 7)
return _("(Low Priority)");
else
return _("(Very Low Priority)");
}
这些是我的问题:
GNOME 系统监视器定义的值,它们是该工具特定的吗?
Gnome 系统监视器是否确实将进程设置为该优先级?内核是否也按照 Gnome 系统监视器中更改的优先级来处理该进程?
在哪里可以找到这些针对不同优先级的新定义的优先级类别?这些类别是否在所有发行版中使用?
谢谢。 什里·哈里。
答案1
每个进程都通过其 nice 值来影响内核的调度。这些值的范围是 -20(高优先级)到 +19(低优先级),其中 0 为(默认值),因此关于函数的模板和您的第一个问题,答案是否定的,它们不是特定于工具的。
Linux 对每个进程使用相同的优先级。但是,如果您调用getpriority()
系统调用,您将获得不同的值(从 1 到 40),这样做是为了避免返回负值。
有一本非常好的书您可以参考:Michael Kerrisk 的“Linux 编程接口”,出版于 2010 年。
参考: 内核调度程序的优秀设计