linux线程优先级和nice值,如何使用nice和renice命令设置Linux进程优先级
在本文中,我们将简要介绍内核调度程序 (也称为进程调度程序 )和进程优先级 ,这些主题超出了本指南的范围。 然后,我们将深入了解一些Linux进程管理 :了解如何运行具有修改优先级的程序或命令,还可以更改运行Linux进程的优先级。
了解Linux内核计划程序
内核调度程序是内核的一个单位,它决定了在所有可运行的进程中执行下一个最合适的进程; 它在系统上的可运行进程之间分配处理器时间。 可运行的进程是等待CPU时间的进程,它已经可以执行了。
调度程序在Linux中构建了多任务的核心,使用基于优先级的调度算法在系统中的可运行进程之间进行选择。 它基于最值得的以及CPU时间的需要对进程进行排序。
了解流程优先级和良好价值
内核存储有关进程的大量信息,包括进程优先级,这仅仅是附加到进程的调度优先级。 具有较高优先级的进程将在具有较低优先级的进程之前执行,而具有相同优先级的进程重复排列在下一个之后。
在Linux中实现了140个优先级和两个不同的优先级范围。 第一个是很好的价值( 优点 ),范围从-20 (最高优先级值)到19 (最低优先级值),默认值为0 ,这是我们将在本指南中发现的。 另一个是实时优先级,默认范围为1到99 ,则100到139用于用户空间。
Linux的一个重要特征是基于动态优先级的调度,这样可以根据您的需要更改(增加或减少)进程的良好价值,稍后将会介绍。
如何检查Linux进程的良好价值
要看到进程的漂亮值,我们可以使用诸如ps , top或htop这些实用程序。
使用用户定义格式的ps命令查看进程的nice值(这里NI列显示进程的准确性)。$ ps -eo pid,ppid,ni,comm
查看Linux处理好的值
或者,您可以使用top或htop实用程序来查看Linux进程,如图所示。$ top
$ htop
使用Top命令检查Linux进程的尼斯值
使用Htop命令检查Linux进程的尼斯值
PR或PRI与NI之间的差异
从上面的顶部和htop输出,你会注意到有一个PR和PRI的列,显示一个进程的优先级。
因此,这意味着:NI - 是一个很好的价值,它是一个用户空间概念,而
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到19PR = 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中运行具有给定尼斯值的命令
在这里,我们将介绍如何优先处理程序或命令的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 1055的teamspe +的优点现在为-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登录的用户的资源限制。
用于定义用户限制的语法如下(并且文件中解释了各种列的可能值):#
现在使用下面的语法,其中硬 - 意味着强制执行硬链接和软手段 - 执行软限制。 priority
或者,在/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 。
有关更多信息,请阅读nice和renice的手册页:$ man nice
$ man renice
您可能还想阅读有关Linux进程管理的以下文章。
在本文中,我们简要介绍了内核调度程序,进程优先级,了解如何运行具有修改优先级的程序或命令,并更改了活动Linux进程的优先级。 您可以通过以下反馈表单分享有关此主题的任何想法。
linux线程优先级和nice值,如何使用nice和renice命令设置Linux进程优先级相关推荐
- Linux线程优先级范围
Linux定义线程优先级范围在头文件<linux/sched.h> /** Priority of a process goes from 0..MAX_PRIO-1, valid RT* ...
- linux降低线程优先级,Linux线程优先级,行为不正常
在下面的代码片段中,我创建了6个线程.各有不同的优先级.全局优先级数组中提到了优先级.我正在根据线索索引在每个线程内连续增加全局变量.如果线程优先级更高,我期待计数更高.但我的输出不遵循优先概念pl. ...
- linux 线程优先级的高低和执行顺序的关系,混乱的Linux内核实时线程优先级
原标题:混乱的Linux内核实时线程优先级 背景 Linux会把进程分为普通进程和实时进程,普通进程采用CFS之类调度算法,而实时进程则是采用SCHED_FIFO或SCHED_RR. 无论优先级高低, ...
- Linux 线程优先级设置(内含C语言版线程创建、绑定CPU和优先级设置代码)
参考链接: https://blog.csdn.net/wushuomin/article/details/80051295 //详细讲解pthread_create 函数 https://blog. ...
- linux 线程优先级 rt_prio static_prio prio normal_prio
转载:https://www.cnblogs.com/tongye/p/9615625.html kthread_create 创建线程的时候是默认的优先级默认的RT线程rt_prio是0,rt_pr ...
- linux 线程优先级算法,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 图 1 RT-Linux结构 RT -Linux的关键技术是通过软件来模拟硬件的中断控制器.当Linux系统要封锁CPU的中断时时,RT-Linux中的实 ...
- Linux中sudo命令设置,Linux下sudo命令的配置与使用方法
sudo的字面意思是代表super user do!对Linux系统管理员或高级用户而言,它是必不可少的最重要的命令之一. 你可曾有过这样的经历:在终端中试着运行某个命令,结果却遇到"拒绝访 ...
- c语言怎么设置cpu优先级,线程优先级,设置,setPriority()方法
package seday08.thread; /** * @author xingsir * 线程优先级 * 线程启动后纳入到线程调度,线程时刻处于被动获取CPU时间片而无法主动获取.我们可以通过调 ...
- linux线程调度函数,Linux调度策略及线程优先级设置
Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务.一旦占用cpu则一直运行.一直运行直到有更高优先级任务到达或自己放弃 3, ...
最新文章
- 小A与欧拉路(牛客-树的直径)
- 模型评估指标micro avg、macro avg和weighted avg的计算方式及区别
- 用Ajax构建关键任务的企业级Web应用 ——《深入Ajax:架构与最佳实践》
- Iterator 和 Iterable的区别
- RocketMQ:Consumer概述及启动流程与消息拉取源码分析
- java poi导入50万数据_java从oracle读取50万条数据写入Excel中抛GC overhead limit exc
- ustc小道消息20220104
- forceinline关键字
- 艾伟_转载:.NET 4.0新特性-- Corrupted State Exceptions
- 使用kubectl管理k8s集群(三十)
- 面向对象VS面向过程
- 大数据之-Hadoop伪分布式_配置文件说明---大数据之hadoop工作笔记0029
- Android网络编程5之OkHttp2.x用法全解析
- 李宏毅机器学习——无监督学习(一)
- No qualifying bean of type ‘com.dao.BookDao‘ available解决
- 常用计算机硬件故障检查方法,电脑硬件常见的故障检测及处理方法
- [学习笔记]数据与科学训练营之五:机器学习
- 约瑟夫环解法大全(C语言版)
- 垂直搜索 vs 通用搜索
- NIB 和 XIB 的区别 转载
热门文章
- 2055. Plates Between Candles
- 网易面试Java开发凉凉经,面试官:基础不牢,技术不够深入,无缘offer,无缘网易......
- GNURadio RTL-SDR之FM接收
- C++ ostream源码
- Flutter学习(一) 状态管理
- Spring Boot学习之旅:(六)springboot 整合 redis 以及 redis 通用工具类
- 暑假博客二:由前序中序遍历生成二叉树
- 写好一篇技术博客的正确姿势是什么
- 《C专家编程》读书记录
- java程序员要去学c 吗_java程序员是否要学c++