𰻞𰻝面
deepin
2026-09-25 17:38 普通人用不到
Reply Like 0 View the author
普通人用不到
普通人用不到
Steam Deck: 下次发言的时候记得先仔细百度一下, 哪怕问一下AI
Steam Deck: 下次发言的时候记得先仔细百度一下, 哪怕问一下AI
开发者用的,普通人用不到
开发者用的,普通人用不到
意思是你的手机不需要任何调度就能工作吗, 你的意思是你的手机不需要任何厂商调度就能运行起来而且满足生活日用的各项负载还要做到低功耗? 你的手机设置里"省电模式","均衡模式","性能模式"就是你在控制调度的实现, 到目前为止我没有见过你的意思的这种手机
概要:
如果你嫌下面那些话你看不懂或者不想看, 那么用人话说就是: 做Linux适配的CPU/整机厂商可以在不需要修改内核的前提下, 自己亲手定制针对整机特调的Linux进程调度, 而且可以针对某一场景特调到底
sched_ext是一个让Linux内核直接拥有安卓那样的灵活调度方案(安卓实现调度是:厂商基于EAS优化的内核+用户空间调度,例如fas-rs)的实现, 它让调度进程跑在用户空间, 而其本体作为框架运行在内核空间
以下为腾讯元宝生成的内容:
sched_ext(也叫 SCX)不是“又一个调度算法”,而是 Linux 里新增的一个可热插拔的调度框架:把“怎么挑 CPU、怎么排队、怎么发任务”这套策略用 BPF 程序写出来,内核只负责底层上下文切换、运行队列、安全兜底。它进主线是 Linux 6.12(2024-11),官方定位见内核文档与合入提交。
一、一句话:为什么内核需要它
通用调度器(早先 CFS,现在很多场景用 EEVDF)追求“对所有人都别太差”;但现代硬件和负载越来越不通用——游戏渲染线程、数据库 OLTP、广告排序、VM 调度、NUMA/CCX 缓存局部性、内存带宽隔离,各自要的“公平”不一样。过去想给某类负载定制调度,要么改内核重编重启,要么维护私有内核;sched_ext 让你用 BPF 写策略、运行时加载/卸载、出错自动回退 CFS/公平类,所以内核才需要它。
类比:CFS 像全市统一红绿灯,保证不堵死但不够“专线”;sched_ext 像给某个园区临时装可编程红绿灯,规则用 BPF 写,写错了立刻切回统一红绿灯。
二、它解决哪三个真问题
直接改核心调度器要懂整套 sched_class、重编内核、重启、预热负载;数据中心预热 Memcached 都要几小时,学术圈学生还没跑完实验就毕业了。sched_ext 把复杂 sched_class 回调封装成更简单的
struct sched_ext_ops,只写关心的回调,加载即生效。比如:OLTP 要尾延迟、分析查询要吞吐;游戏渲染要低延迟、备份要少抢核;某批低优任务狂吃内存带宽拖垮高优任务。BPF 调度器可按 cgroup、任务属性、NUMA/CCX、IPC/缓存热度自定义排队和切片,不用进主线也能先跑。
三、它到底怎么工作(形象版)
SCHED_EXT,类优先级在 stop > dl > rt > fair(CFS/EEVDF) > ext > idle 这一串里,位于 fair 之下、idle 之上;不加载 BPF 时SCHED_EXT等价于普通公平调度,不会把系统劫持。select_cpu(唤醒选核)、enqueue(入队/发到调度队列)、dispatch/consume(CPU 空了取任务)、update_idle、running/stopping等;只填.name也能跑,其余有默认行为。scx_bpf_switch_all()把所有非实时任务交给 ext;也可设SCX_OPS_SWITCH_PARTIAL,只让显式SCHED_EXT的任务走 ext,其余继续 CFS,方便灰度共存。四、为什么“安全”才敢用
这是它需要存在的另一半原因——可插拔调度最怕把机器调度死。
SysRq-S手动回退,SysRq-D打调试快照;进 bypass 模式时临时用默认路径跑,不影响系统完整性。五、什么时候该想到它(而不是硬改 CFS)
六、边界要讲清
SCHED_DEADLINE/RT。CONFIG_SCHED_CLASS_EXT、CONFIG_BPF、BPF_JIT、DEBUG_INFO_BTF等;加载要特权(CAP_SYS_ADMIN),调度器代码 GPL 通过 verifier。官方文档入口:https://docs.kernel.org/scheduler/sched-ext.html ,概述/动机 https://sched-ext.com/docs/OVERVIEW ;内核样例在
tools/sched_ext(scx_simple 等)。