Linux 多核 CPU 如何调度进程?
发布时间 - 2026-01-23 00:00:00 点击率:次CFS调度器基于vruntime选择进程:红黑树中vruntime最小者优先运行,新进程vruntime设为队列最小值避免插队;实时进程绕过CFS;多核负载均衡有延迟阈值;绑定CPU或NO_HZ_FULL会改变调度行为。
Linux 的 CFS 调度器怎么选进程运行?
CFS(Completely Fair Scheduler)是 Linux 默认的进程调度器,它不按“时间片轮转”硬切,而是基于虚拟运行时间 vruntime 做公平调度。每个可运行进程被放入红黑树,vruntime 最小的那个(即“最该被调度”的)总在树最左端,调度器每次从那里取任务。
-
vruntime是按进程实际 CPU 使用时间加权计算的,权重由nice值决定:nice 越低(优先级越高),权重越大,vruntime增长越慢,更容易被选中 - 新进程的
vruntime默认设为当前运行队列的最小vruntime,避免“插队”但也不至于太滞后 - 如果你用
chrt -f 50启动实时进程,它会绕过 CFS,走SCHED_FIFO调度类,此时 CFS 完全不参与——这点常被误认为“CPU 被占满”,其实是调度类切换导致的
多核下进程为什么会“卡”在一个 CPU 上?
Linux 默认启用负载均衡,但不是每毫秒都搬进程。内核按一定周期(如 1–4 ms)检查各 CPU 的运行队列长度和 vruntime 差异,只在差异超过阈值时才迁移任务。这意味着:
- 短时突发负载可能让某个 CPU 持续忙 10 ms,而其他核空闲——这不是 bug,是延迟优化策略
-
taskset -c 0,1 ./a.out或numactl --cpunodebind=0会显式绑定 CPU,此时即使其他核空闲,进程也不会被迁走 - 如果看到
top中某进程的%CPU长期接近 100% 且只跑在单核,先用ps -o pid,psr,comm -p $PID确认是否被绑核,而不是直接怀疑调度器失灵
如何判断是不是调度延迟

真正的调度延迟(scheduling latency)往往藏在上下文切换开销或抢占失效里,而不是“没轮到”。常用排查点:
- 查看
/proc/sys/kernel/sched_latency_ns(默认 ~6 ms)和/proc/sys/kernel/sched_min_granularity_ns(默认 ~0.75 ms):粒度越小,调度越频繁,但上下文切换开销越大 - 用
perf sched latency -s max抓最长调度延迟事件,若出现 >5 ms 的“R → R”(就绪态到运行态)延迟,再结合perf record -e 'sched:sched_switch'看是否被高优先级中断或软中断阻塞 - 注意:启用了
NO_HZ_FULL(即“无滴答”模式)的 CPU,如果跑的是独占型实时任务,内核会停掉该核的定时器,此时sched_latency_ns参数完全不生效
多核调度的复杂性不在算法本身,而在它必须同时应对 NUMA 内存访问代价、中断亲和性、cgroup 资源限制、以及用户空间对 CPU 绑定的隐式依赖——这些因素一旦叠加,vruntime 就只是个起点,不是全部答案。
# linux
# node
# mac
# ai
# switch
# 为什么
# 事件
# 算法
# bug
# 负载均衡
# 多核
# 绑定
# 设为
# 越大
# 的是
# 而不是
# 红黑
# 左端
# 是个
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
如何在云主机上快速搭建多站点网站?
如何选择PHP开源工具快速搭建网站?
如何快速生成可下载的建站源码工具?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
个人网站制作流程图片大全,个人网站如何注销?
Laravel怎么为数据库表字段添加索引以优化查询
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Android 常见的图片加载框架详细介绍
深圳网站制作培训,深圳哪些招聘网站比较好?
网站建设要注意的标准 促进网站用户好感度!
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
Laravel如何实现文件上传和存储?(本地与S3配置)
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
Laravel如何使用withoutEvents方法临时禁用模型事件
如何用好域名打造高点击率的自主建站?
如何在阿里云服务器自主搭建网站?
如何用wdcp快速搭建高效网站?
浅谈redis在项目中的应用
Android实现代码画虚线边框背景效果
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
如何在阿里云完成域名注册与建站?
实例解析angularjs的filter过滤器
在Oracle关闭情况下如何修改spfile的参数
Python并发异常传播_错误处理解析【教程】
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
三星、SK海力士获美批准:可向中国出口芯片制造设备
如何用景安虚拟主机手机版绑定域名建站?
如何破解联通资金短缺导致的基站建设难题?
如何挑选最适合建站的高性能VPS主机?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
如何用花生壳三步快速搭建专属网站?
Laravel如何处理表单验证?(Requests代码示例)
海南网站制作公司有哪些,海口网是哪家的?
制作电商网页,电商供应链怎么做?
非常酷的网站设计制作软件,酷培ai教育官方网站?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用

