如何更改 Linux 中正在运行的进程的优先级

在本文中,我们将简要解释内核调度程序(也称为进程调度程序)和进程优先级,这些主题超出了本指南的范围。

然后我们将深入了解 Linux 进程管理:了解如何以修改的优先级运行程序或命令,以及如何更改正在运行的 Linux 进程的优先级。

了解 Linux 内核调度程序

内核调度程序是内核的一个组件,负责从所有准备执行的进程中选择接下来运行的最合适的进程。

它管理系统上这些进程之间的 CPU 时间分配。 当一个进程仅等待 CPU 时间并准备好执行时,该进程被认为是可运行的。

调度程序构成了 Linux 中多任务处理的核心,它使用基于优先级的调度算法在系统中的可运行进程之间进行选择。 它根据最值得的进程以及对 CPU 时间的需求对进程进行排名。

了解进程优先级和良好的价值

内核存储了大量有关进程的信息,包括进程优先级,即附加到进程的调度优先级。 具有较高优先级的进程将先于具有较低优先级的进程执行,而具有相同优先级的进程则被一个接一个地重复调度。

Linux 中总共实现了 140 个优先级和两个不同的优先级范围。 第一个是良好的价值(niceness),范围从 -20 (最高优先级值)到 19 (最低优先级值),默认值是 0,这就是我们将在本指南中发现的内容。

另一个是实时优先级,默认范围为 1 到 99,然后 100 到 139 用于用户空间。

Linux 的一个重要特性是基于优先级的动态调度,它允许根据您的需要更改(增加或减少)进程的好值,我们稍后会看到。

如何检查 Linux 进程的良好价值

要查看进程的良好值,我们可以使用 ps、top 或 htop 等实用程序。

要以用户定义的格式使用 ps 命令查看进程的良好值(此处为 NI 该列显示了流程的优点)。

ps -eo pid,ppid,ni,comm

查看 Linux 进程 Nice 值查看 Linux 进程 Nice 值

或者,您可以使用 top 或 htop 实用程序来查看 Linux 进程的好值,如图所示。

top
htop

使用 Top 命令检查 Linux 进程的良好值使用 Top 命令检查 Linux 进程的良好值
使用 Htop 命令检查 Linux 进程的 Nice 值使用 Htop 命令检查 Linux 进程的 Nice 值

PR 或 PRI 与 NI 之间的区别

从上面的 top 和 htop 输出中,您会注意到有一列名为 PRPRI 接收性地显示了进程的优先级。

因此,这意味着:

  • NI – 是nice值,这是一个用户空间的概念,而
  • PR 或者 PRI – 是 Linux 内核所看到的进程的实际优先级。

如何计算 PR 或 PRI 值

Total number of priorities = 140
Real time priority range(PR or PRI): 0 to 99
User space priority range: 100 to 139

尼斯值范围 (NI):-20 至 19

PR = 20 + NI
PR = 20 + (-20 to + 19)
PR = 20 + -20 to 20 + 19
PR = 0 to 39 which is same as 100 to 139.

但如果你看到一个 rt 它不是下面屏幕截图中显示的数字,它基本上意味着该进程正在实时调度优先级下运行。

Linux rt进程Linux rt进程

如何在 Linux 中运行具有给定 Nice 值的命令

在这里,我们将了解如何确定程序或命令的 CPU 使用率的优先级。 如果您有一个非常占用 CPU 资源的程序或任务,但您也知道它可能需要很长时间才能完成,则可以使用nice 命令将其设置为高或有利的优先级。

语法如下:

nice -n niceness-value [command args]
OR
nice -niceness-value [command args]
OR
nice --adjustment=niceness-value [command args]

重要的:

  • 如果未提供任何值,nice 默认设置优先级为 10。
  • 没有nice默认情况下运行的命令或程序的优先级为零。
  • 只有 root 才能运行具有更高优先级或高优先级的命令或程序。
  • 普通用户只能运行低优先级的命令或程序。

例如,您可以使用以下 Nice 命令以特定优先级启动程序或命令,而不是使用默认优先级启动程序或命令。

sudo nice -n 5 tar -czf backup.tar.gz ./Documents/*
OR
sudo nice --adjustment=5 tar -czf backup.tar.gz ./Documents/*

您还可以使用第三种方法,该方法有点令人困惑,特别是对于负的好感值。

sudo nice -5 tar -czf backup.tar.gz ./Documents/*

更改Linux中进程的调度优先级

正如我们之前提到的,Linux 允许基于优先级的动态调度。 因此,如果程序已经在运行,您可以使用以下形式的 renice 命令更改其优先级:

renice -n -12 -p 1055
renice -n -2 -u apache

更改进程优先级更改进程优先级

从下面的示例顶部输出中,PID 1055 的 teampe+ 的性能现在为 -12 对于用户 apache 拥有的所有进程来说是 -2

仍然使用这个输出,你可以看到公式 PR = 20 + NI 代表,

PR for ts3server = 20 + -12 = 8
PR for apache processes = 20 + -2 = 18

关注流程美好价值观关注流程美好价值观

您使用 renice 命令对用户进程的好值所做的任何更改仅在下次重新启动之前适用。 要设置永久默认值,请阅读下一节。

如何设置特定用户进程的默认 Nice 值

您可以在/etc/security/limits.conf 文件中设置特定用户或组的默认nice 值。 其主要功能是定义通过 PAM 登录的用户的资源限制。

为用户定义限制的语法如下(文件中解释了各个列的可能值):

#

现在使用下面的语法,其中“硬”意味着强制执行硬链接,“软”意味着强制执行软限制。

priority

或者,在 /etc/security/limits.d/ 下创建一个文件,该文件覆盖上面主文件中的设置,并且这些文件按字母顺序读取。

首先为用户howtoing创建文件/etc/security/limits.d/howtoing-priority.conf:

vi /etc/security/limits.d/tecmint-priority.conf

然后添加这个配置:

tecmint hard priority 10

保存并关闭文件。 从现在开始,howtoing拥有的任何进程的nice值为10,PR为30。

有关更多信息,请阅读 Nice 和 renice 的手册页:

man nice
man renice

在本文中,我们简要解释了内核调度程序和进程优先级,了解了如何使用修改后的优先级运行程序或命令,并更改了活动 Linux 进程的优先级。

您可以通过下面的反馈表分享有关此主题的任何想法。

资讯来源:由0x资讯编译自TECMINT。版权归作者Aaron Kili所有,未经许可,不得转载

资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载

上一篇 2024年 5月 31日
下一篇 2024年 5月 31日

相关推荐