进程优先级是否有定义的类别..?

进程优先级是否有定义的类别..?

我正在搜索与进程优先级相关的文档。

在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)");
}

这些是我的问题:

  1. GNOME 系统监视器定义的值,它们是该工具特定的吗?

  2. Gnome 系统监视器是否确实将进程设置为该优先级?内核是否也按照 Gnome 系统监视器中更改的优先级来处理该进程?

  3. 在哪里可以找到这些针对不同优先级的新定义的优先级类别?这些类别是否在所有发行版中使用?

谢谢。 什里·哈里。

答案1

每个进程都通过其 nice 值来影响内核的调度。这些值的范围是 -20(高优先级)到 +19(低优先级),其中 0 为(默认值),因此关于函数的模板和您的第一个问题,答案是否定的,它们不是特定于工具的。

Linux 对每个进程使用相同的优先级。但是,如果您调用getpriority()系统调用,您将获得不同的值(从 1 到 40),这样做是为了避免返回负值。

有一本非常好的书您可以参考:Michael Kerrisk 的“Linux 编程接口”,出版于 2010 年。

参考: 内核调度程序的优秀设计

相关内容