Linux nice/renice 命令 - 进程的NI、PRI属性

进程NI、PRI属性联系
  • 共同影响进程调度:NI和PRI都是Linux进程调度机制中的重要参数,它们共同决定了进程在CPU资源竞争中的优先级。NI值通过影响PRI值来间接影响进程的调度顺序。
  • NI值可调整以改变PRI值:用户可以通过调整进程的NI值来间接改变其PRI值。具体来说,NI值是一个修正值,系统会根据NI值来调整进程的PRI值。通常,NI值越小(更负),PRI值也会相应减小,意味着进程的优先级提高;反之,NI值越大(更正),PRI值也会相应增大,意味着进程的优先级降低。
  • 共同反映进程优先级:虽然NI和PRI是两个不同的属性,但它们都反映了进程的优先级。NI值是用户可修改的优先级修正值,而PRI值是系统根据NI值和其他因素计算得出的实际优先级值。
进程NI、PRI属性区别

1)定义不同

  • NI(Nice值):是用户空间对进程优先级的一个表示,它是一个可以修改的修正值,用于调整进程的优先级。NI值的范围是-20(最高优先级)到19(最低优先级)。
  • PRI(Priority,优先级):是系统内部用于调度进程的实际优先级值。PRI值是根据NI值和其他因素(如进程类型、系统负载等)计算得出的,用户无法直接修改PRI值。

2)修改权限不同

  • NI值:用户(包括普通用户和超级用户)可以通过nice命令或renice命令来设置或修改进程的NI值。但需要注意的是,普通用户只能将NI值设置为0到19之间的值,而超级用户(root用户)可以将NI值设置为-20到19之间的任何值。
  • PRI值:用户无法直接修改PRI值,它是系统根据NI值和其他因素自动计算得出的。

3)作用方式不同

  • NI值:作为用户可修改的优先级修正值,NI值直接反映了用户对进程优先级的期望。通过调整NI值,用户可以间接地影响进程的调度顺序。
  • PRI值:作为系统内部用于调度的实际优先级值,PRI值综合了NI值、进程类型、系统负载等多种因素,是系统调度进程时的重要依据。PRI值越小,表示进程的优先级越高,越有可能被CPU优先执行。
nice命令

        nice 命令在 Linux 系统中用于调整进程的优先级。在 Unix 和类 Unix 系统中,包括 Linux,每个进程都有一个与之关联的优先级,这个优先级决定了进程获得 CPU 资源的顺序。

        默认情况下,每个进程都以所谓的“nice 值”0 开始,这个值是可以调整的,范围从 -20(优先级最高)到 19(优先级最低)。

        nice 命令的基本语法包括一个可选的 -n 参数,后跟 nice 值和要运行的命令。如果不使用 -n 参数,则默认将 nice 值设置为 10(即降低进程的优先级)。

语法:nice [-n] [nice值] command

 

renice命令

        renice 命令在 Linux 系统中用于改变正在运行的进程的优先级(nice 值)。

基本语法和参数

renice [nice值] -p PID...

renice [nice值] -g PGRP...

renice [nice值] -u USER...
  • nice值指定新的 nice 值。
  • -p后面跟一个或多个进程 ID(PID),用于指定要修改 nice 值的进程。

  • -g后面跟一个或多个进程组 ID(PGRP),用于指定要修改 nice 值的进程组中的所有进程。 

  • -u后面跟用户名,用于指定要修改 nice 值的该用户启动的所有进程。 

 

注意事项:

1)默认情况下,普通用户只能将进程的 nice 值设置为大于 0 的值,以降低其优先级。只有 root 用户才能设置负的 nice 值来提高进程的优先级。

2)只有超级用户(root)或具有相应权限的用户才能降低进程的 nice 值(即增加其优先级)。尝试增加(即降低优先级)任何进程的 nice 值时,普通用户通常不会遇到权限问题。

3)nice 值是相对于进程的默认优先级(nice 值 0)的增量。因此,设置 nice 值为 5 意味着进程的优先级比默认优先级低 5 个单位,而设置 nice 值为 -5 则意味着进程的优先级比默认优先级高 5 个单位(但这需要 root 权限)。

4)进程的最终优先级还受到其他因素的影响,如进程的实时优先级(如果设置了的话)和系统的调度策略。然而,在大多数情况下,nice 值是调整进程优先级的主要手段

答疑

问:linux 进程的NI/PRI决定的优先级越高相对于低优先级的进程获取的系统资源越多怎末理解?

        首先,这里所说的“系统资源”主要是指CPU时间片。在Linux系统中,CPU时间被划分成若干个时间片(timeslice),每个进程在获得CPU时都会分配到一个时间片。当进程的时间片用完时,它会被放回就绪队列中等待下一次调度。

        在Linux中,时间片的大小是由内核调度器决定的,并且对于大多数系统来说,这个时间片是固定的,对所有进程都是相同的。这意味着,无论进程的优先级如何,它们每次被调度时获得的时间片长度通常是相同的。

        其次,进程的优先级(PRI值)主要影响的是进程被调度执行的频率优先级高的进程会更频繁地被调度到CPU上执行这样,在单位时间内优先级高的进程会获取更多的时间片,获取更多的资源去执行。

此外,还需要注意的是,Linux系统的调度算法是复杂的,它不仅仅基于进程的优先级进行调度。系统还会考虑其他因素,如进程的等待时间、CPU使用率、系统负载等,以综合决定进程的调度顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值