Linux 进程调度与进程优先级管理详解|nice/renice/chrt 实操教程 ⚙️
Linux 进程调度与进程优先级管理详解nice/renice/chrt 实操教程 ⚙️前言Linux 服务器同时运行成百上千个进程CPU 资源有限内核依靠进程调度器分配 CPU 时间片。不同业务进程重要程度不同我们可以手动调整进程优先级让核心业务优先占用算力降低后台消耗型任务资源占用。本文完整讲解 Linux 实时 / 非实时调度策略、nice 值、nice/renice/chrt实操命令生产环境直接可用。一、Linux 进程调度器基础 系统进程数量通常远大于 CPU 核心数内核调度器通过时间片轮转、优先级划分实现 “多进程同时运行” 的视觉效果。单时间片约 10~20ms进程轮流抢占 CPU。进程调度器可粗略分为两类实时调度器系统中重要的进程由实时调度器调度获得CPU能力强。非实时调度器系统中大部分进程由非实时调度器调度获得CPU能力弱。核心结论所有实时调度进程优先级全部高于非实时普通进程。1. 实时调度器高优先级业务用于服务器核心关键程序抢占 CPU 能力极强包含两种调度策略SCHED_FIFO 先入先出进程拿到 CPU 后持续运行直到进程主动让出 CPU、IO 阻塞或被更高优先级实时进程抢占。SCHED_RR 时间片轮询同优先级实时进程平分固定 CPU 时间片时间片耗尽切换下一个同优先级进程。实时调度内核防护参数防止占满 CPU为避免实时进程耗尽 CPU 导致服务器卡死、SSH 无法连接内核提供 3 个限制参数kernel.sched_rt_runtime_us1 秒周期内实时进程最多占用 0.95s默950000uskernel.sched_rt_period_usCPU 分配总周期默认 1s1000000us剩余 0.05s 固定留给普通非实时进程保障系统基础服务可用。kernel.sched_rr_timeslice_msSCHED_RR 策略单次时间片默认 100ms范围 1~100ms实时进程优先级区间1~99数字越大优先级越高。2. 非实时调度器绝大多数普通进程日常程序、脚本、后台任务都属于此类三种调度策略SCHED_OTHERSCHED_NORMAL标准分时调度系统默认策略依靠nice值区分相对优先级绝大多数业务进程使用。SCHED_BATCH 批量任务调度后台批量计算任务减少频繁 CPU 切换适合长时间跑计算程序。SCHED_IDLE 极低空闲调度优先级比 nice19 还要低仅系统极度空闲时才会分配 CPU。二、管理进程优先级2.1 非实时进程优先级nice 值全解nice 值常规系统上运行的大多数进程都使用SCHED_OTHER调度策略。由于并非所有进程都同等重要因此可以为使用SCHED_OTHER调度策略运行的程序指定相对优先级称为nice值。有40种不同级别的nice值范围-20最高优先级到19最低优先级nice 值越高代表优先级越低获取CPU能力越弱。nice 值越低代表优先级越高获取CPU能力越强。注意当不存在CPU资源竞争时即使nice值高的进程也可以获得足够CPU资源。nice 值查看top 命令进入 top 界面后NI 列即为进程 nice 值直观查看全量进程优先级与 CPU 占用。ps命令[rootserver ~16:20:37]# ps -o nice,cmd $(pgrep systemd)NI CMD0/usr/lib/systemd/systemd --switched-root--system--deserialize220/usr/lib/systemd/systemd-journald0/usr/lib/systemd/systemd-udevd0/usr/lib/systemd/systemd-logind默认情况下子进程将继承父进程的nice值通常为0。[rootserver ~16:21:05]# md5sum /dev/zero [1]2608[rootserver ~16:21:41]# ps -o pid,nice,command $$2608PID NI COMMAND23060-bash26080md5sum /dev/zero# $$ 代表当前终端中运行的 shell 程序 PID实时调度器进程优先级和非实时调度器进程优先级对比如下结论优先级最低的实时调度器进程的优先级高于优先级最高的非实时调度器进程的优先级。nice 命令[rootserver ~16:23:33]# nice --h用法nice[选项][命令[参数]...]Run COMMAND with an adjusted niceness,whichaffects process scheduling. With no COMMAND, print the current niceness. Niceness values range from-20(most favorable to the process)to19(least favorable to the process). Mandatory arguments to long options are mandatoryforshort options too. -n,--adjustmentNaddinteger N to the niceness(default10)--help显示此帮助信息并退出--version显示版本信息并退出 注意您的shell 内含自己的nice 程序版本它会覆盖这里所提及的相应 版本。请查阅您的shell 文档获知它所支持的选项。 GNU coreutils online help:http://www.gnu.org/software/coreutils/请向http://translationproject.org/team/zh_CN.html报告nice 的翻译错误 要获取完整文档请运行info coreutilsnice invocation示例# nice值默认是10[rootserver ~16:23:41]# nice md5sum /dev/zero [2]2696[rootserver ~16:24:00]# ps -o pid,nice,commandPID NI COMMAND18840-bash26080md5sum /dev/zero269610md5sum /dev/zero27010ps-opid,nice,command权限规则普通用户只能调高 nice 值降低优先级只有 root 可设置负数值提升优先级。普通用户无法设置负数会提示权限不足# 设置一个负数优先级[liuleleserver ~16:25:29]$nice-n-2md5sum /dev/zero[1]2852[liuleleserver ~16:25:49]$ nice: 无法设置优先级: 权限不够 ^C[liuleleserver ~16:25:56]$ps-opid,nice,command2852PID NI COMMAND28520md5sum /dev/zero# 设置一个正数优先级[liuleleserver ~16:26:11]$nice-n2md5sum /dev/zero[2]2908[liuleleserver ~16:26:51]$ps-opid,nice,command2908PID NI COMMAND29082md5sum /dev/zerorenice 命令nice只能在启动前设置renice可在线修改已运行进程的 nice无需重启程序。[liuleleserver ~16:28:08]$renice--help用法renice[-n]优先级[-p|--pid]pid...renice[-n]优先级-g|--pgrppgid...renice[-n]优先级-u|--user用户... 选项 -g,--pgrpid将参数解释为进程组 ID -n,--priority数字指定nice增加值 -p,--pidid将参数解释为进程 ID(默认)-u,--username|id将参数解释为用户名或用户 ID -h,--help显示帮助文本并退出 -V,--version显示版本信息并退出 更多信息请参阅 renice(1)。修改上面示例中产生的进程的优先级。[liuleleserver ~16:28:14]$renice-n228522852(进程 ID)旧优先级为0新优先级为2[liuleleserver ~16:29:04]$ps-opid,nice,command2852PID NI COMMAND28522md5sum /dev/zero普通用户只能升高进程nice值不能降低。[liuleleserver ~16:28:14]$renice-n228522852(进程 ID)旧优先级为0新优先级为2[liuleleserver ~16:29:04]$ps-opid,nice,command2852PID NI COMMAND28522md5sum /dev/zero[liuleleserver ~16:29:24]$ 登出[rootserver ~16:29:33]# renice -n -2 28522852(进程 ID)旧优先级为2新优先级为-2[rootserver ~16:29:51]# renice -n -2 29082908(进程 ID)旧优先级为2新优先级为-2[rootserver ~16:30:15]# ps -o pid,nice,command 2852 2908PID NI COMMAND2852-2md5sum /dev/zero2908-2md5sum /dev/zerotop 内快速修改进程优先级执行top进入监控界面按下快捷键r输入需要调整的进程 PID输入新 nice 值回车生效2.2 实时调度策略chrtchrt命令用于获取和设置实时调度器进程优先级以及更改进程调度器。[rootserver ~17:01:54]# chrt --helpShow or change the real-time scheduling attributes of a process. Set policy: chrt[options]prioritycommand[arg...]chrt[options]--pidprioritypidGet policy: chrt[options]-ppidPolicy options: -b,--batchsetpolicy to SCHED_BATCH -d,--deadlinesetpolicy to SCHED_DEADLINE -f,--fifosetpolicy to SCHED_FIFO -i,--idlesetpolicy to SCHED_IDLE -o,--othersetpolicy to SCHED_OTHER -r,--rrsetpolicy to SCHED_RR(default)Scheduling options: -R, --reset-on-forksetSCHED_RESET_ON_FORKforFIFO or RR -T, --sched-runtimensruntime parameterforDEADLINE -P, --sched-periodnsperiod parameterforDEADLINE -D, --sched-deadlinensdeadline parameterforDEADLINE Other options: -a, --all-tasks operate on all the tasks(threads)fora given pid -m,--maxshow min and max valid priorities -p,--pidoperate on existing given pid -v,--verbosedisplay status information -h,--help显示此帮助并退出 -V,--version输出版本信息并退出 更多信息请参阅 chrt(1)。示例# 查看进程优先级范围chrt不能用于调整非实时进程nice值优先级。[rootserver ~17:03:53]# chrt -mSCHED_OTHER min/max priority:0/0 SCHED_FIFO min/max priority:1/99 SCHED_RR min/max priority:1/99 SCHED_BATCH min/max priority:0/0 SCHED_IDLE min/max priority:0/0 SCHED_DEADLINE min/max priority:0/0# 以SCHED_RR调度器和优先级为5运行md5sum进程# -r, --rr set policy to SCHED_RR (default)[rootserver ~17:14:24]# chrt -r 5 md5sum /dev/zero [1]4664[rootserver ~17:14:44]# ps -o pid,cls,command 4664PID CLS COMMAND4664RR md5sum /dev/zero# 修改进程调度器和优先级# -f, --fifo set policy to SCHED_FIFO[rootserver ~17:15:09]# chrt -f --pid 10 4664[rootserver ~17:16:22]# ps -o pid,cls,command 4664PID CLS COMMAND4664FF md5sum /dev/zero# 修改进程调度器为非实时# -o, --other set policy to SCHED_OTHER[rootserver ~17:20:00]# chrt -o --pid 0 4664[rootserver ~17:20:12]# ps -o pid,cls,command 4664PID CLS COMMAND4664TS md5sum /dev/zero参数速查-fSCHED_FIFO 策略-rSCHED_RR 策略-oSCHED_OTHER 普通分时策略-p对已存在 PID 进行操作-m查看所有调度策略优先级区间三、nice vs chrt 核心区别总结 工具作用对象优先级范围使用权限适用场景nice/renice非实时 SCHED_OTHER 进程-20~19普通用户仅能设正数root 全权限后台日志、批量脚本、普通业务chrt实时进程 FIFO/RR1~99仅 root 可用数据库、消息队列、核心高可用服务系统中区分实时调度和非实时调度的进程# FF实时# TS非实时[rootserver ~17:01:39]# ps axo pid,class,command| sort -k2PID CLS COMMAND300FF[irq/16-vmwgfx]7FF[migration/0]11FF[watchdog/0]279TS[ata_sff]772TS avahi-daemon:chroothelper753TS avahi-daemon: running[server.local]2749TS-bash4143TS-bash716TS /bin/bash /usr/local/bin/study861TS /bin/bash /usr/sbin/ksmtuned18TS[bioset]19TS[bioset]四、生产环境运维实操警示 ✨数据库、中间件等核心服务可通过 chrt 设置实时调度保障高并发下响应速度磁盘备份、文件校验、日志统计等耗 CPU 脚本使用nice 10降低优先级避免抢占业务资源服务器 CPU 满载卡顿优先排查 nice 为 - 20 或实时高优先级进程防止独占 CPU普通业务程序不要随意设置实时调度避免触发内核 rt 限制导致系统异常

相关新闻

政务 AIGC 落地实践:北软公文助手全功能解析

政务 AIGC 落地实践:北软公文助手全功能解析

政务公文标准化、合规化、高效率是数字政府建设核心诉求,传统人工撰写、校核、排版模式存在格式不规范、政治合规风险、重复工作量大等痛点。基于大模型构建专业化公文智能工具成为行业落地主流方案。本文基于北软 PKUSE 推出的北软公文助手,从底层底座、…

2026/10/18 6:35:45 阅读更多 →
降重降AI工具测评:哪款更靠谱

降重降AI工具测评:哪款更靠谱

提交论文前的最后一个深夜,你在屏幕前反复切换知网查重报告和AIGC检测结果。重复率压到了8%,但AIGC率却赫然标着42%。降重降AI的工具试了七八个,有的把专业术语改得面目全非,有的改完AIGC率纹丝不动。问题出在哪? 我们…

2026/10/17 12:21:10 阅读更多 →
逆向工程解析TikTok ZTCA-DPoP令牌生成机制与安全实践

逆向工程解析TikTok ZTCA-DPoP令牌生成机制与安全实践

1. 项目概述:当逆向工程遇上现代令牌机制最近在分析一些移动应用的数据交互时,我又一次遇到了那个熟悉又让人头疼的“老朋友”——TikTok。不过这次的目标不是常规的API调用,而是深入其身份认证体系的核心,去探究一个名为“ZTCA-D…

2026/10/17 2:40:45 阅读更多 →

最新新闻

UNet+NEU-DET实战:钢材表面缺陷检测与语义分割

UNet+NEU-DET实战:钢材表面缺陷检测与语义分割

简介:面向工业质检领域深度学习入门与实战的钢材表面缺陷检测项目,基于UNet网络和NEU-DET数据集构建完整检测流程,覆盖划痕、凹坑、夹杂等典型缺陷的自动识别与分割。资源包共2000个文件,包含1800个xml标注文件和180个jpg图像样本…

2026/10/18 6:37:53 阅读更多 →
LF-AI-STREAM:面向本地化AI工程的可验证资源契约体系

LF-AI-STREAM:面向本地化AI工程的可验证资源契约体系

简介:LF-AI-STREAM-AI人工智能资源是一套面向物联网视频智能分析开发者的GB28181标准兼容解决方案,聚焦AI赋能的实时流媒体处理与设备协同控制,适用于安防监控、边缘智能分析等工业级应用场景,适合具备Java后端开发与Vue前端基础的…

2026/10/18 6:37:53 阅读更多 →
OpenClaw:一条自然语言指令搞定重复工作的AI自动化助手

OpenClaw:一条自然语言指令搞定重复工作的AI自动化助手

重复性的工作有多烦人?我在一个团队里做过两年运营,每天三分之一的时间都花在整理表格、汇总信息、转格式、发通知上。这类事情本质上不难,但就是机械、费时、容错率低。后来我把这些场景全部交给了一个叫 OpenClaw 的 AI 小助手,…

2026/10/18 6:37:53 阅读更多 →
Go+React自托管WebSocket通知服务:零依赖实时推送实现

Go+React自托管WebSocket通知服务:零依赖实时推送实现

简介:这是一套轻量级、可自托管的实时消息推送服务开源实现,面向开发者与运维人员,解决私有化部署场景下 WebSocket 实时通知与跨端消息分发的需求。项目采用 Go 语言构建后端服务,搭配 React TypeScript 前端 UI,支持…

2026/10/18 6:37:53 阅读更多 →
MySQL实时增量同步方案:Canal+Kafka+Spark Streaming实战详解

MySQL实时增量同步方案:Canal+Kafka+Spark Streaming实战详解

写这篇东西的起因,是我去年接手了一个实时数据监测需求。业务方希望在订单数据写入MySQL后,几百毫秒内就能同步到下游分析系统,让运营侧实时看到各省份的销量和库存压力。当时我第一反应是,这不就是典型的“数据库CDC 消息队列 …

2026/10/18 6:37:53 阅读更多 →
.NET 10 Blazor WASM缓存自动清除机制详解与迁移指南

.NET 10 Blazor WASM缓存自动清除机制详解与迁移指南

做 Blazor WASM 项目这些年,我对官方的每次改版都是又期待又忐忑。期待是因为 C# 写前端的体验确实独一份,忐忑是因为每次发版之后,总有几个用户跑来反馈“还是旧数据”“页面白屏”“功能点了没反应”。排查到最后,十有八九都是浏…

2026/10/18 6:36:53 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →