讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux 进程优先级与调度策略实战

小芳姑娘_9130

小芳姑娘_9130

发布时间:2026-01-29 19:41:02

|

511人浏览过

|

来源于php中文网

原创

真实优先级取决于调度策略:普通进程pri=20+ni,实时进程pri=100+rtprio;需用ps -eo pid,comm,ni,pri,cls,rtprio或top启用CLS/RTPRIO列查看,renice对实时进程无效,chrt需先配置ulimit -r或limits.conf。

linux 进程优先级与调度策略实战

如何用 ps 和 top 看清进程的真实优先级?

ps 和 top 显示的 “PRI”、“NI”、“PR” 容易让人混淆,尤其当调度策略不是默认的 SCHED_OTHER 时。真实优先级(即内核调度器实际使用的值)取决于策略类型,不能只看 NI(nice 值)。

  • ps -eo pid,comm,ni,pri,cls,rtprio 是最实用的组合:其中 cls 显示调度类(如 TS 表示 CFS,FF 表示 SCHED_FIFO),rtprio 对实时进程才有意义,pri 是内核内部的静态优先级(范围 0–139),但注意:对普通进程,pri = 20 + ni;对实时进程,pri = 100 + rtprio
  • top 默认不显示调度策略,按 f 进入字段管理,启用 CLS 和 RTPRIO 列,否则你会误以为所有进程都走 CFS
  • 常见错觉:看到某个进程 NI = -5 就以为它“很优先”,但如果它是 cls=TS 且没设 rtprio,那它和 NI = 0 的进程在 CFS 下竞争 CPU 的权重其实只差一点点——nice 值对响应延迟影响远不如调度类切换来得剧烈

用 chrt 设置实时调度策略时为什么总报 “Operation not permitted”?

这不是权限不够,而是默认情况下非 root 用户无法使用 SCHED_FIFO 或 SCHED_RR。内核通过 RLIMIT_RTPRIO 限制实时优先级使用,即使你用 sudo 启动程序,若未显式提升该 limit,仍会失败。

  • 检查当前限制:ulimit -r,通常返回 0(表示禁止)
  • 临时提权(需 root):sudo ulimit -r 99 && exec sudo -s 不生效,正确做法是先用 sudo bash,再在该 shell 中运行 ulimit -r 99,然后启动目标进程
  • 更稳妥的方式是修改 /etc/security/limits.conf:
    </li></ul><ul><li>soft rtprio 99  </li><li>hard rtprio 99  
    注意:该配置仅对新登录会话生效,且要求 PAM limits 模块已启用(检查 /etc/pam.d/common-session 是否含 pam_limits.so)

renice 对实时进程完全无效?

是的。renice 只修改 NI 字段,而 NI 仅被 CFS(SCHED_OTHER / SCHED_BATCH)读取。一旦进程被 chrt -f 设为 SCHED_FIFO,它的调度行为就彻底脱离 nice 机制。

Session Observer
Session Observer

监控OpenClaw会话、令牌、上下文及状态,用于查询用量或模型信息。

下载
  • 你执行 renice -20 $(pidof myproc) 后再用 ps -o pid,ni,cls 查看,NI 会变,但 cls 仍是 FF,且调度器完全忽略该 NI 值
  • 实时进程的“优先级”由 rtprio 决定(范围 1–99),必须用 chrt --fifo 50 ./myproc 或 chrt -p 50 $PID 修改
  • 错误操作示例:chrt -f 10 ./a.out & renice -20 $! —— 后者毫无意义,还可能误导你认为“双重加成”

为什么改了 NI 却看不出 CPU 分配变化?

CFS 不是按“固定时间片”分配 CPU,而是基于 vruntime(虚拟运行时间)做红黑树调度。NI 影响的是进程的“权重”,而非抢占时机或时间片长度。低 nice 值(如 -10)只是让该进程在同等时间内获得约 2.5 倍于 NI=0 进程的 CPU 时间,但前提是:它真正在跑、且有其他可运行进程在竞争。

  • 验证方法:用两个计算密集型进程(如 yes > /dev/null &),一个 renice -10,一个保持默认,再用 pidstat -u 1 观察 %CPU 分布,才能看到权重差异
  • 容易忽略的干扰项:I/O 等待、锁竞争、cgroup 限频、CPU affinity(taskset)都会掩盖 nice 效果
  • 最典型的失效场景:单核机器上只有一个 CPU 密集型进程在跑,无论 NI 是多少,它都占满 100% —— 因为没有竞争者,权重无从体现

真正难调的从来不是数字本身,而是搞清哪个调度器在管这个进程、它有没有实际竞争、以及你的观测工具是否在看对的字段。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

549

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1678

2024.03.01

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

580

2023.10.17

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

876

2023.10.18

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

1886

2025.08.19

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

3990

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3413

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2573

2023.06.30

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

100

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn