深入理解进程优先级
目录
引言
一、进程优先级基础
1.1 什么是进程优先级?
1.2 优先级与系统性能
二、查看进程信息
2.1 使用ps -l命令
2.2 PRI与NI的数学关系
三、深入理解Nice值
3.1 Nice值的特点
3.2 调整优先级实践
四、进程特性全景图
五、优化实践建议
结语
引言
在操作系统中,进程优先级决定了CPU资源分配的先后顺序。就像医院急诊科会根据患者病情的轻重缓急安排就诊顺序一样,系统通过优先级确保关键任务优先执行。理解进程优先级不仅能帮助我们优化程序性能,还能在多任务环境中提升系统整体效率。
一、进程优先级基础
1.1 什么是进程优先级?
进程优先级(Priority)是操作系统为每个进程分配的数值,决定其获取CPU资源的顺序。数值越小优先级越高,就像VIP通道的号码牌,数字小的客户能更快获得服务。
1.2 优先级与系统性能
在多任务系统中,合理配置优先级可以:
-
确保关键任务(如系统服务)快速响应。
-
限制后台任务(如文件下载)的资源占用。
-
通过
CPU亲和性将进程绑定到特定CPU核心,避免资源争抢(例如使用taskset命令将视频渲染进程固定到CPU3)。
二、查看进程信息
2.1 使用ps -l命令
在终端输入 ps -l 会显示类似信息:

关键字段解析:
-
UID:执行者身份(如用户ID 1001)
-
PID:进程身份证(54116)
-
PPID:父进程ID(显示进程的"家族关系")
-
PRI:实时优先级(默认80)
-
NI:优先级修正值(Nice值)
2.2 PRI与NI的数学关系
新优先级 = 原始优先级 + Nice值
即:
PRI(new) = PRI(old) + NI
示例:某进程默认PRI=80,若设置NI=-5,则新优先级为75,获得更快的执行机会。
三、深入理解Nice值
3.1 Nice值的特点
-
取值范围:-20(最高优先级)到19(最低)
-
普通用户只能调低优先级(0→19)
-
需要root权限才能设置负值(提升优先级)
3.2 调整优先级实践
通过top命令动态调整:
-
运行
top后按r键 -
输入目标进程PID
-
输入新Nice值(如-5)
-
观察PRI值变化
注意:过度提升优先级可能导致系统不稳定,就像让普通车辆频繁使用应急车道会影响真正需要优先通行的车辆。
四、进程特性全景图
| 特性 | 描述 | 现实类比 |
|---|---|---|
| 竞争性 | 进程争夺有限CPU资源 | 双11抢购热门商品 |
| 独立性 | 进程拥有独立地址空间,互不干扰 | 酒店房间隔音效果 |
| 并行 | 多进程在多个CPU上同时运行 | 多条收银通道同时结账 |
| 并发 | 单个CPU通过快速切换"同时"推进多个进程 | 服务员同时照看多桌顾客点餐 |
五、优化实践建议
-
关键服务优先:将Web服务器进程Nice值设为-10,确保快速响应
-
后台任务降级:设置备份任务的NI=15,避免影响用户体验
-
CPU绑定:使用
taskset -c 3 ./program将计算密集型任务绑定到核心3 -
实时监控:通过
htop动态观察优先级变化(颜色越红表示优先级越高)
结语
掌握进程优先级就像学会交通管制,通过合理调度让重要任务畅通无阻。记住:系统优化不是追求所有进程高速运行,而是让关键任务获得应有的资源。
相关文章:
深入理解进程优先级
目录 引言 一、进程优先级基础 1.1 什么是进程优先级? 1.2 优先级与系统性能 二、查看进程信息 2.1 使用ps -l命令 2.2 PRI与NI的数学关系 三、深入理解Nice值 3.1 Nice值的特点 3.2 调整优先级实践 四、进程特性全景图 五、优化实践建议 结语 引言 在操…...
python中的flask框架
Flask 是一个用Python编写的轻量级Web应用框架 基于WSGI和Jinja2模板引擎 被称为“微框架”,其核心功能简单,不捆绑数据库管理、表单验证等功能,而是通过扩展来增加其他功能 Flask提供最基本的功能,不强制使用特定工具或库 通…...
微信小程序案例2——天气微信小程序(学会绑定数据)
文章目录 一、项目步骤1 创建一个无AppID的weather项目2 进入index.wxml、index.js、index.wxss文件,清空所有内容,进入App.json,修改导航栏标题为“中国天气网”。3进入index.wxml,进行当天天气情况的界面布局,包括温…...
【Linux网络编程】之守护进程
【Linux网络编程】之守护进程 进程组进程组的概念组长进程 会话会话的概念会话ID 控制终端控制终端的概念控制终端的作用会话、终端、bash三者的关系 前台进程与后台进程概念特点查看当前终端的后台进程前台进程与后台进程的切换 作业控制相关概念作业状态(一般指后…...
MarkupLM:用于视觉丰富文档理解的文本和标记语言预训练
摘要 结合文本、布局和图像的多模态预训练在视觉丰富文档理解(VRDU)领域取得了显著进展,尤其是对于固定布局文档(如扫描文档图像)。然而,仍然有大量的数字文档,其布局信息不是固定的࿰…...
了解AI绘图,Stable Diffusion的使用
AI绘图对GPU算力要求较高。 个人电脑配置可参考: CPU:14600kf 盒装 显卡:RTX 4080金属大师 OC,16G显存 主板:z790吹雪d4 内存:芝奇皇家戟4000c18,162G 硬盘:宏基gm7000 1T 散热:追风…...
jakarta EE学习笔记-个人笔记
WebServlet注解:声明一个类为Servlet Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface WebServlet {// 指定Servlet的影子String name() default ""; // 匹配地址映射(URL)String[] value() default {};// …...
Kokoro 开源文本转语音引擎上线!多语言支持,无需联网,浏览器内极速运行
Kokoro 是一款轻量级的开源文本转语音(TTS)引擎,凭借其高效能和轻量化设计,迅速在技术社区中引起关注。本文将详细介绍 Kokoro 的主要特点,并提供在浏览器和 Python 环境中的代码示例,帮助您快速上手。 1. Kokoro:可在浏览器中运行的 TTS 引擎 1.1 简介 Kokoro 是一个…...
VSCode使用总结
1、VSCode左边资源窗口字体大小设置 方法一(使用,已成功) 进入安装目录Microsoft VS Code\resources\app\out\vs\workbench(如果是下载的压缩包,解压后resources\app\out\vs\workbench) 打开文件 workbench.desktop.main.css 搜…...
淘宝分类详情数据获取:Python爬虫的高效实现
在电商领域,淘宝作为中国最大的电商平台之一,其分类详情数据对于市场分析、竞争对手研究以及电商运营优化具有不可估量的价值。通过Python爬虫技术,我们可以高效地获取这些数据,为电商从业者提供强大的数据支持。 一、为什么选择…...
DeepSeek LLM 论文解读:相信长期主义开源理念可扩展大语言模型(DeepSeek 吹响通用人工智能的号角)
论文链接:DeepSeek LLM: Scaling Open-Source Language Models with Longtermism(相信长期主义开源理念可扩展大语言模型) 目录 摘要一、数据处理(一)数据清洗与丰富(二)分词器与词汇设置 二、模…...
嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?
2025年,全球AI领域最震撼的突破并非来自算力堆叠的超级模型,而是中国团队DeepSeek通过开源策略,推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言,被称作“核弹级别”的操…...
【EPSG 坐标系系统完全解析(二)(万字详述)】
地理坐标系系统完全解析(万字详述) 第一章 坐标系基础理论(2000字) 1.1 地球空间参照系 1.1.1 地球椭球体模型 参考椭球参数对比: 椭球体长半轴(m)短半轴(m)使用国家/…...
fastchat 部署大模型
大模型实战--Llama3.1大模型部署及启动Web UI、OpenAI API实操 - 简书一、背景 随着人工智能技术的飞速发展,大模型(Large Language Models, LLMs)已成为自然语言处理领域的核心工具。这些模型以其强大的语言理解和生成能力,...ht…...
【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统
在当前数字化时代,网络安全已成为企业发展的重要组成部分。对于使用OpenVPN的企业而言,确保远程访问的安全性尤为重要。安当ASP身份认证系统凭借其强大的功能和便捷的集成方式,为OpenVPN的二次登录认证提供了理想的解决方案,特别是…...
协议-ACLLite-ffmpeg
是什么? FFmpeg是一个开源的多媒体处理工具包,它集成了多种功能,包括音视频的录制、转换和流式传输处理。FFmpeg由一系列的库和工具组成,其中最核心的是libavcodec和libavformat库。 libavcodec是一个领先的音频/视频编解码器库&…...
树和二叉树_7
树和二叉树_7 一、leetcode-102二、题解1.引库2.代码 一、leetcode-102 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 样例输入:root [3,9,20,null,nu…...
【C#】一维、二维、三维数组的使用
在C#中,数组是用于存储固定数量相同类型元素的数据结构。根据维度的不同,可以分为一维数组、二维数组(矩阵阵列)、三维数组等。每增加一个维度,数据的组织方式就会变得更加复杂。 一维数组 一维数组是最简单的数组形…...
Dubbo 3.x源码(30)—Dubbo Consumer服务调用源码(2)发起远程调用
基于Dubbo 3.1,详细介绍了Dubbo Consumer服务调用源码。 上文我们学习了,Dubbo 发起服务调用的上半部分源码,我们学习到了FailoverClusterInvoker最终会通过服务提供者Invoker#invoke发起RPC调用,下面我们来学习Dubbo 发起服务调用…...
学习日记-250207
一.论文 1.Prompt Learning for News Recommendation 任务不一致(LLM与实际任务)产生prompt提示。 Prompt Learning for News Recommendation 论文阅读 SIGIR2023-CSDN博客 2.GPT4Rec: A Generative Framework for Personalized Recommendation and…...
Rocky Linux9安装Zabbix7.0(精简版)
Linux 系统版本 Rocky Linux release 9.3 (Blue Onyx) 注意:zabbix 7以上版本不支持CentOS 7系统,需要CentOS 8以上, 本教程支持CentOS9及Rocky Linux 9 在Rocky Linux release 9.3测试通过 Linux环境准备 关闭防火墙和selinux #关闭防…...
网络分析工具—WireShark的安装及使用
Wireshark 是一个广泛使用的网络协议分析工具,常被网络管理员、开发人员和安全专家用来捕获和分析网络数据包。它支持多种网络协议,能够帮助用户深入理解网络流量、诊断网络问题以及进行安全分析。 Wireshark 的主要功能 数据包捕获与分析: …...
C++开发(软件开发)常见面试题
目录 1、C里指针和数组的区别 2、C中空指针请使用nullptr不要使用NULL 3、http/https区别和头部结构? 4、有了mac地址为什么还要ip地址?ip地址的作用 5、有了路由器为什么还要交换机? 6、面向对象三大特性 7、友元函数 8、大端小端 …...
云原生后端|实践?
云原生(Cloud Native)是一种构建和运行应用程序的方法,它充分利用云计算的优势,包括弹性、可扩展性、高可用性和自动化运维。云原生后端开发通常涉及微服务架构、容器化、持续集成/持续部署(CI/CD)、服务网…...
WEB攻防-文件下载文件读取文件删除目录遍历目录穿越
目录 一、文件下载漏洞 1.1 文件下载案例(黑盒角度) 1.2 文件读取案例(黑盒角度) 二、文件删除 三、目录遍历与目录穿越 四、审计分析-文件下载漏洞-XHCMS 五、审计分析-文件读取漏洞-MetInfo-函数搜索 六、审计分析-…...
to_csv保存指定列的方法
df是DataFrame的数据,它的列为[代码, 名称, 最高, 最低] 现在我只想将‘代码’、“名称”两列内容存入csv,实现如下: columns_to_save [代码, 名称] df.代码 df.代码.apply("{}".format)#此行可以防止代码之前的0被忽略掉 d…...
MySQL数据库(七)SQL 优化
一 插入数据 采用方法 1 批量插入 2 手动提交事务 3 主键顺序插入 4* 使用load插入指令数据 二 主键优化 1 数据组织方式 在InnoDB存储引擎中,表中的数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表 2 页分裂 页可以为空也可…...
使用EVE-NG实现单臂路由
一、基础知识 1.三层vlan vlan在三层环境中通常用作网关vlan配上ip网关内部接口ip 2.vlan创建步骤 创建vlan将接口划分到不同的vlan给vlan配置ip地址 二、项目案例 1、项目拓扑 2、项目实现 PC1配置 配置PC1IP地址为192.168.1.10/24网关地址为192.168.1.1 ip 192.168.1…...
flask开发的网站,后端服务关闭后,可以找回之前的数据的吗
如果使用 Flask 开发的网页,后端服务关闭后,是否还能找回数据取决于数据的存储方式: 可能找回数据的情况: 数据库存储(MySQL、PostgreSQL、SQLite 等) 如果 Flask 连接的是持久化数据库,即使后…...
疯狂SQL转换系列- SQL for Milvs2.4
鉴于Milvus仍在不停的迭代新版本,推出新功能,其SDK目前并不稳定。目前其2.4版本的SDK接口已与之前的2.2版本有了较大的差别,功能上也有了一定的调整。为此,我们重新提供了针对[Milvus2.4](https://github.com/colorknight/moql-tr…...
