Linux 进程的优先级nice

另请参阅: 如何监视每个用户基础的Linux进程和设置流程限制

了解Linux内核计划程序

内核调度程序是内核的一个单位,它决定了在所有可运行的进程中执行下一个最合适的进程; 它在系统上的可运行进程之间分配处理器时间。 可运行的进程是等待CPU时间的进程,它已经可以执行了。

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

了解流程优先级和良好价值

内核存储有关进程的大量信息,包括进程优先级,这仅仅是附加到进程的调度优先级。 具有较高优先级的进程将在具有较低优先级的进程之前执行,而具有相同优先级的进程重复排列在下一个之后。

在Linux中实现了140个优先级和两个不同的优先级范围。 第一个是很好的价值( 优点 ),范围从-20 (最高优先级值)到19 (最低优先级值),默认值为0 ,这是我们将在本指南中发现的。 另一个是实时优先级,默认范围为199 ,则100139用于用户空间。

Linux的一个重要特征是基于动态优先级的调度,这样可以根据您的需要更改(增加或减少)进程的良好价值,稍后将会介绍。

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

要看到进程的漂亮值,我们可以使用诸如ps , tophtop这些实用程序。

使用用户定义格式的ps命令查看进程的nice值(这里NI列显示进程的准确性)。

$ ps -eo pid,ppid,ni,comm

查看Linux处理好的值

查看Linux处理好的值

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

$ top
$ htop

使用Top命令检查Linux进程的尼斯值

使用Top命令检查Linux进程的尼斯值

使用Htop命令检查Linux进程的尼斯值

使用Htop命令检查Linux进程的尼斯值

PR或PRI与NI之间的差异

上面的顶部htop输出,你会注意到有一个PRPRI的列,显示一个进程的优先级。

因此,这意味着:

  • NI - 是一个很好的价值,它是一个用户空间概念,而
  • PRPRI - 是进程的实际优先级,如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中运行具有给定尼斯值的命令

在这里,我们将介绍如何优先处理程序或命令的CPU使用情况。 如果您有一个非常CPU密集的程序或任务,但您也明白完成可能需要很长时间,您可以使用nice命令将其设置为高或优先级。

语法如下:

$ nice -n niceness-value [command args] 
OR
$ nice -niceness-value [command args] 	#it’s confusing for negative values
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 1055teamspe +的优点现在为-12 ,对于用户apache拥有的所有进程为-2 。

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

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

观看过程好的价值观

观看过程好的价值观

使用renice命令对用户进程进行的任何更改都可以使用,直到下次重新启动。 要设置永久默认值,请阅读下一节。

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

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

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

#<domain>   <type>  <item>  <value>

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

<username>  <hard|soft>  priority  <nice value>

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

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

# vi /etc/security/limits.d/howtoing-priority.conf

然后在其中添加此配置:

howtoing  hard  priority  10

保存并关闭文件。 从现在开始, howtoing拥有的任何流程将有一个很好的价值10和PR 30 。

有关更多信息,请阅读nicerenice的手册页:

$ man nice
$ man renice 

您可能还想阅读有关Linux进程管理的以下文章。

  1. 如何在Linux中查找和杀死运行进程
  2. 在Linux中终止一个进程的杀死指令,Pkill和Killall命令
  3. 如何监控系统使用情况,中断和排除Linux服务器故障
  4. CPUTool - 限制和控制Linux中任何进程的CPU利用率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值