如何修改进程优先级?
文章目录
- 1. 摘要
- 2. 命令实现
- 2.1 使用 renice(调整普通进程的优先级)
- 2.2 使用 chrt(调整实时进程的优先级)
- 3. 代码实现
1. 摘要
在实际开发中,我们经常会遇到创建进程的场景,但是往往并不关心它的优先级,当遇到进程间通信发生一些时序问题时,需要调整某一进程的优先级,那么如何修改呢?
本文给出了命令和代码两种实现方式,如果对你有帮助,请点赞、转发👍🚩😊😊😊💐🎉
2. 命令实现
2.1 使用 renice(调整普通进程的优先级)
- ✅功能:修改进程的 nice 值(影响普通进程的时间片分配)。
- 优先级范围:-20(最高优先级)到 19(最低优先级),默认值为 0。
- 普通用户只能降低优先级(即增加 nice 值到 0~19)。
- 提高优先级(nice < 0)需要 sudo 权限。
- ✅命令格式:
sudo renice -n <优先级值> -p <PID>
- ✅示例:
sudo renice -n -10 -p 1234 # 将 PID=1234 的进程优先级设为 -10(需要 root 权限)
renice -n 5 -p 1234 # 将 PID=1234 的进程优先级设为 5(普通用户可执行)
2.2 使用 chrt(调整实时进程的优先级)
-
✅功能:修改进程的 实时调度策略(如 SCHED_FIFO/SCHED_RR)和优先级。
- 实时优先级范围:1(最低)到 99(最高),需 sudo 权限。
- 调度策略:
- SCHED_OTHER:默认的普通调度策略。
- SCHED_FIFO:实时先进先出(无时间片限制,直到主动让出)。
- SCHED_RR:实时轮转(有时间片,相同优先级轮流执行)。
-
✅命令格式:
sudo chrt -p -<策略> <优先级> <PID>
- ✅示例:
sudo chrt -p -f 99 1234 # 设置 PID=1234 为 SCHED_FIFO,优先级 99(最高)
sudo chrt -p -r 50 1234 # 设置 PID=1234 为 SCHED_RR,优先级 50
3. 代码实现
在进程创建时,调整优先级:
#include <thread>
#include <pthread.h>
#include <iostream>
#include <cerrno>
#include <cstring>// 假设 MW_FAILURE 已定义int main() {std::thread sendThread(/* 线程函数 */);// 获取线程的原生句柄(pthread_t)pthread_t threadID = sendThread.native_handle();int policy;struct sched_param param;// 获取当前线程的调度策略和参数if (pthread_getschedparam(threadID, &policy, ¶m) != 0) {std::cerr << "Failed to get scheduling parameters: " << strerror(errno) << std::endl;return MW_FAILURE;}// 设置实时调度策略(如 SCHED_FIFO)param.sched_priority = 20; // 优先级范围:1(最低)~99(最高)int new_policy = SCHED_FIFO;if (pthread_setschedparam(threadID, new_policy, ¶m) != 0) {std::cerr << "Failed to set parameters: " << strerror(errno) << std::endl;return MW_FAILURE;}sendThread.join();return 0;
}
相关文章:

如何修改进程优先级?
文章目录 1. 摘要2. 命令实现2.1 使用 renice(调整普通进程的优先级)2.2 使用 chrt(调整实时进程的优先级) 3. 代码实现 1. 摘要 在实际开发中,我们经常会遇到创建进程的场景,但是往往并不关心它的优先级…...
Mind Over Machines 公司:技术咨询与创新的卓越实践
在信息技术飞速发展的时代,企业面临着前所未有的机遇与挑战。如何巧妙运用技术,优化业务流程、提升竞争力,成为众多企业亟待解决的关键问题。Mind Over Machines(MOM)公司,作为一家在技术咨询领域深耕多年的…...

stm32week15
stm32学习 十一.中断 2.NVIC Nested vectored interrupt controller,嵌套向量中断控制器,属于内核(M3/4/7) 中断向量表:定义一块固定的内存,以4字节对齐,存放各个中断服务函数程序的首地址,中断向量表定…...
新手在使用宝塔Linux部署前后端分离项目时可能会出现的问题以及解决方案
常见问题与解决方案 1. 环境配置错误 问题:未正确安装Node.js/Python/JDK等运行时环境解决: 通过宝塔面板的软件商店安装所需环境验证版本: node -v # 查看Node.js版本 python3 --version # 查看Python3版本2. 端口未正确开放 问题&am…...
《从零构建一个简易的IOC容器,理解Spring的核心思想》
大家好呀!今天我们要一起探索Java开发中最神奇的魔法之一 —— Spring框架的IOC容器!🧙♂️ 我会用最最最简单的方式,让你彻底明白这个看似高深的概念。准备好了吗?Let’s go! 🚀 一、什么是IOC容器&…...

QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口
常用的光模块结构形式: 1)QSFP等效于4个SFP,支持410Gbit/s通道传输,可通过4个通道实现40Gbps传输速率。与SFP相比,QSFP光模块的传输速率可达SFP光模块的四倍,在部署40G网络时可直接使用QSFP光模块…...
tensorflow 1.x
简介 TensorFlow:2015年谷歌,支持python、C,底层是C,主要用python。支持CNN、RNN等算法,分CPU TensorFlow/GPU TensorFlow。 TensorBoard:训练中的可视化。 快捷键:shiftenter执行命令,Tab键进…...
vue3模版语法
Vue 的模板语法(template syntax)是 Vue 框架中用于声明式地绑定 DOM 的方式,核心是将 HTML 与 Vue 实例的数据绑定起来。 下面是常用的 Vue 模板语法总结(以 Vue 3 Composition API 为基础,也适用于 Vue 2 的 Options…...
java加强 -List集合
List集合是Collection集合下的集合的一种,它有序,可重复,有索引。但由于存在不同的底层实现方法,适合的场景也不同。 ArrayList底层是基于数组存储数据的,而LinkedList底层是基于链表存储数据的。因此,前者…...

PXE安装Ubuntu系统
文章目录 1. 服务器挂载Ubuntu镜像2. 修改dhcp配置文件3. 修改tftp配置文件4.复制网络驱动文件和其他配置文件5. http目录下配置文件6. 踩坑记录6.1 Failed to load ldlinux.c326.2 no space left on device6.3 为啥用pxe安装系统时,客户端需要较大的内存࿱…...

uniapp tabBar 中设置“custom“: true 在H5和app中无效解决办法
uniapp小程序自定义底部tabbar,但是在转成H5和app时发现"custom": true 无效,原生tabbar会显示出来 解决办法如下 在tabbar的list中设置 “visible”:false 代码如下:"tabBar": {"custom": true,//"cust…...

ABP-Book Store Application中文讲解 - 前期准备 - Part 2:创建Acme.BookStore + Angular
ABP-Book Store Application中文讲解-汇总-CSDN博客 因为本系列文章使用的.NET8 SDK,此处仅介绍如何使用abp cli .NET 8 SDK SQL sevrer 2014创建Angular模板的Acme.BookStore。 目录 1. ABP cli创建项目 1.1 打开cmd.exe 1.2 创建项目 2. ABP Studio创建项…...

基于k8s的Jenkins CI/CD平台部署实践(三):集成ArgoCD实现持续部署
基于k8s的Jenkins CI/CD平台部署实践(三):集成ArgoCD实现持续部署 文章目录 基于k8s的Jenkins CI/CD平台部署实践(三):集成ArgoCD实现持续部署一、Argocd简介二、安装Helm三、Helm安装ArgoCD实战1. 添加Arg…...
Starrocks 的 ShortCircuit短路径
背景 本文基于 Starrocks 3.3.5 本文主要来探索一下Starrocks在FE端怎么实现 短路径,从而加速点查查询速度。 在用户层级需要设置 enable_short_circuit 为true 分析 数据流: 直接到StatementPlanner.createQueryPlan方法: ... OptExpres…...
JVM——Java字节码基础
引入 Java字节码(Java Bytecode)是Java技术体系的核心枢纽,所有Java源码经过编译器处理后,最终都会转化为.class文件中的字节码指令。这些指令不依赖于具体的硬件架构和操作系统,而是由Java虚拟机(JVM&…...

控制台打印带格式内容
1. 场景 很多软件会在控制台打印带颜色和格式的文字,需要使用转义符实现这个功能。 2. 详细说明 2.1.转义符说明 样式开始:\033[参数1;参数2;参数3m 可以多个参数叠加,若同一类型的参数(如字体颜色)设置了多个&…...

外网访问内网海康威视监控视频的方案:WebRTC + Coturn 搭建
外网访问内网海康威视监控视频的方案:WebRTC Coturn 需求背景 在仓库中有海康威视的监控摄像头,内网中是可以直接访问到监控摄像的画面,由于项目的需求,需要在外网中也能看到监控画面。 实现这个功能的意义在于远程操控设备的…...
DA14585墨水屏学习(2)
一、user_svc2_wr_ind_handler函数 void user_svc2_wr_ind_handler(ke_msg_id_t const msgid,struct custs1_val_write_ind const *param,ke_task_id_t const dest_id,ke_task_id_t const src_id) {// sprintf(buf2,"HEX %d :",param->length);arch_printf("…...

Linux系统下的延迟任务及定时任务
1、延迟任务 概念: 在系统中我们的维护工作大多数时在服务器行对闲置时进行 我们需要用延迟任务来解决自动进行的一次性的维护 延迟任务时一次性的,不会重复执行 当延迟任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者 在 RH…...
Spark 之 YarnCoarseGrainedExecutorBackend
YarnCoarseGrainedExecutorBackend executor ID , 在日志里也有体现。 25/05/06 12:41:58 INFO YarnCoarseGrainedExecutorBackend: Successfully registered with driver 25/05...

【网络原理】数据链路层
目录 一. 以太网 二. 以太网数据帧 三. MAC地址 四. MTU 五. ARP协议 六. DNS 一. 以太网 以太网是一种基于有线或无线介质的计算机网络技术,定义了物理层和数据链路层的协议,用于在局域网中传输数据帧。 二. 以太网数据帧 1)目标地址 …...

相或为K(位运算)蓝桥杯(JAVA)
这个题是相或为k,考察相或的性质,用俩个数举例子,011001和011101后面的数不管和哪个数相或都不可能变成前面的数,所以利用这个性质我们可以用相与运算来把和k对应位置的1都积累起来,看最后能不能拼起来k如果能拼起来k那…...

AI汽车时代的全面赋能者:德赛西威全栈能力再升级
AI汽车未来智慧出行场景正在描绘出巨大的商业图景,德赛西威已经抢先入局。 在2025年上海车展开幕前夕,德赛西威发布2030年全新使命愿景——“创领安全、愉悦和绿色的出行生活”,并推出全栈式智慧出行解决方案Smart Solution3.0、车路云一体式…...
Python函数:从基础到进阶的完整指南
在Python编程中,函数是构建高效、可维护代码的核心工具。无论是开发Web应用、数据分析还是人工智能模型,函数都能将复杂逻辑模块化,提升代码复用率与团队协作效率。本文将从函数基础语法出发,深入探讨参数传递机制、高阶特性及最佳实践,助你掌握这一编程基石。 一、函数基…...

学习Python的第四天之网络爬虫
30岁程序员学习Python的第四天之网络爬虫的Scrapy库 Scrapy库的基本信息 Scrapy库的安装 在windows系统中通过管理员权限打开cmd。运行pip install scrapy即可安装。 通过命令scrapy -h可查看scrapy库是否安装成功. Scrapy库的基础信息 scrapy库是一种爬虫框架库 爬虫框…...

5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming
76个工业组件库示例汇总 开放式PLC编程环境 这是一个开放式PLC编程环境的自定义组件,提供了一个面向智能仓储堆垛机控制的开放式PLC编程环境。该组件采用苹果科技风格设计,支持多厂商PLC硬件,具有直观的界面和丰富的功能。 功能特点 多语…...
数据指标和数据标签
数据指标和数据标签是数据管理与分析中的两个重要概念,它们在用途、形式和应用场景上有显著区别。以下是两者的详细对比: 1. 核心定义 维度数据指标(Data Metrics)数据标签(Data Tags/Labels)定义量化衡量…...

linux中常用的命令(三)
目录 1- ls(查看当前目录下的内容) 2- pwd (查看当前所在的文件夹) 3- cd [目录名](切换文件夹) 4- touch [文件名] (如果文件不存在,新建文件) 5- mkdir[目录名] (创建目录) 6-rm[文件名]&…...

Java 中 AQS 的实现原理
AQS 简介 AQS(全称AbstractQueuedSynchronizer)即抽象同步队列,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。 由类图可以看到,AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队首和队尾元素࿰…...

『Python学习笔记』ubuntu解决matplotlit中文乱码的问题!
ubuntu解决matplotlit中文乱码的问题! 文章目录 simhei.ttf字体下载链接:http://xiazaiziti.com/210356.html将字体放到合适的地方 sudo cp SimHei.ttf /usr/share/fonts/(base) zkfzkf:~$ fc-list | grep -i "SimHei" /usr/local/share/font…...