在本文中,我们将简要解释内核调度程序(也称为进程调度程序)和进程优先级,这些主题超出了本指南的范围。
然后我们将深入了解 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 值
或者,您可以使用 top 或 htop 实用程序来查看 Linux 进程的好值,如图所示。
top
htop
使用 Top 命令检查 Linux 进程的良好值
使用 Htop 命令检查 Linux 进程的 Nice 值
PR 或 PRI 与 NI 之间的区别
从上面的 top 和 htop 输出中,您会注意到有一列名为 PR
和 PRI
接收性地显示了进程的优先级。
因此,这意味着:
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 中运行具有给定 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 进程的优先级。
您可以通过下面的反馈表分享有关此主题的任何想法。
资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载