[PATCH v11 00/12] sched, steal_governor: Introduce preferred CPUs and steal-driven vCPU backoff
sched, steal_governor: Introduce preferred CPUs and steal-driven vCPU backoff。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 14 封邮件。
北京时间全部历史数据
最近同步:2026/08/28 20:01
sched, steal_governor: Introduce preferred CPUs and steal-driven vCPU backoff。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 14 封邮件。
Refcounted interrupt disable and SpinLockIrq for Rust。Claude 分析失败,当前使用规则 fallback:该讨论被归为 bugfix,共 86 封邮件。
Google 的 David Stevens 提议在调度器中允许回收长时间阻塞任务的内核栈尾部页面,目标是在 Android 上把数千线程占用的内核栈内存减半。核心思路是用 PF_RECLAIMABLE_STACK 标注安全阻塞点,由 list_lru shrinker 异步回收未用栈页,唤醒路径在必要时通过 workqueue 走 GFP_KERNEL 重新填充。系列共 10 个 patch,触达 x86_64/arm64、fork/vmalloc/binder/epoll/pipe/poll/futex 等子系统,附带两条 sashiko-bot 自动审阅和 Prateek 的 scope...
[PoC] sched/core: Alternate approach to sleeping-owner handling in PROXY_EXEC。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 23 封邮件。
sched: Scale cache-aware aggregation at LLC granularity。Claude 分析失败,当前使用规则 fallback:该讨论被归为 rfc,共 24 封邮件。
Introduce per-CPU debugfs files。Claude 分析失败,当前使用规则 fallback:该讨论被归为 bugfix,共 7 封邮件。
Aaron Tomlin v8 系列给 struct rq 的 rd 指针加上 __rcu 标注并新增 rcu_dereference_root_domain() 辅助宏,把 print_dl_rq()/print_cpu()/sched_show_numa()/print_cfs_stats() 四处锁外裸读全部纳入 RCU 或 task_lock 保护,避免 CPU 热拔出、cgroup cpuset 重划分或任务退出并发路径下的 use-after-free、TOCTOU 与 RCU CPU stall。最后一片新增 /sys/kernel/debug/sched/cpu/cpu<N>/...
本系列(v10,12 patch)在调度器核心引入 cpu_preferred_mask 与 wakeup/tick-push/load-balance 三处 hint,同时新增 CONFIG_STEAL_GOVERNOR 模块 drivers/virt/steal_governor.c,按 steal time 高低阈值动态放缩 preferred CPU 集合,用于在 paravirt 重载场景缓解 vCPU 抢占。Review 关注点集中在 x86/KVM/Xen 上默认阈值被 possible/online 比稀释、Xen dom0 加载副作用、ARM64 上 32-bit 任务在 t...
Greg KH 发布的 Linux 7.2.1 稳定版通告,将 SUBLEVEL 从 0 升到 1,回拢 null_blk zoned 参数校验、hci_aml 固件 size 检查、HID/NFC/IOMMU/ionic 等驱动的一批正确性修复。要求所有 7.2 用户升级。线程本身不涉及 scheduler 子系统,仅在 lore 上归入 sched 频道。
Greg Kroah-Hartman 发布 Linux 7.1.11 稳定版子版本,跨 Makefile、null_blk、蓝牙 hci_aml、amdgpu、i915/xe、HID 等多个子系统收集回归与正确性修复。回复中可见的 diff 包括 null_blk zoned 设备的零值校验与 hci_aml 固件长度的越界保护,并把 SUBLEVEL 从 10 升到 11。完整 patch 列表因 lore 抓取被截断,需对照 git tag v7.1.11。
Greg KH 发布 6.18.47 stable 点版本,要求所有 6.18 用户升级。修复覆盖 null_blk 在 zone_size 异常时的除零风险、hci_aml 蓝牙驱动固件 size 校验缺失,以及 HID/NVMe/IOMMU/NFC/net 等多个子系统的回归修复。
sched/core: Convert remaining BUG_ON() instances to WARN_ON_ONCE()。Claude 分析失败,当前使用规则 fallback:该讨论被归为 bugfix,共 3 封邮件。
Aaron Tomlin v7 系列共 6 个 patch:给 rq->rd 加 __rcu 注释,修补 print_dl_rq、print_cpu、sched_show_numa、print_cfs_stats 四处 RCU/UAF/TOCTOU 风险,并新增 /sys/kernel/debug/sched/cpu/cpu<N>/debug 的 per-CPU 调试入口。v7 重点统一了 rq->rd 的 lock-held/lockless reader 语义并扩展 changelog。Peter Zijlstra 与作者正在讨论是否新增 rcu_dereference_root_doma...
sched/numa: Fix time unit mismatch in scan staggering。Claude 分析失败,当前使用规则 fallback:该讨论被归为 bugfix,共 1 封邮件。
本 RFC patch 把 pick_next_task 的'选中'与'提交'解耦:pick 只挑候选,__schedule 在 find_proxy_task 解析完 proxy 链后再做 put_prev_set_next_task 与 rq_set_donor,避免 proxy 解析失败时白白做一次 put_prev/set_next。临时计数显示 60 秒压力测试中 3224 次 NULL 重试里没有任何一次重选回同一 donor,证明原先的 commit 几乎总是浪费。补丁同时修正了 proxy_resched_idle / proxy_deactivate / proxy_migr...
Tim Chen 提单补丁修复 sched/fair:在大/小核混合系统上,cache-aware 负载均衡不应把本来 fit 源大核的任务塞到目的 LLC 域里跑不动的小核上。补丁在 can_migrate_llc_task、alb_break_llc、llc_balance 三处增加 task_misfits_asym_cpu 守卫,让 misfit 迁移优于 LLC 偏好,对称系统不受影响。第 2 封回复仅引用了主贴 commit message,正文信息有限。
补丁针对 fair hrtick one-shot 在 hrtick 到期引发 reschedule 后,pick_task_fair 又选中当前任务、命中 next == prev 时跳过 set_next_task_fair() 的窗口,通过在 task_tick_fair 中标记 rq->hrtick_rearm_fair,并在 put_prev_set_next_task 的 fast path 重新调 hrtick_start_fair() 修复漏启动。micro-bench 显示 8ms+ runtime 区间从 228 降到 34-38,但 reviewer Zhan Xushe...
CFS bandwidth controller 在 cgroup 处于 unlimited quota 时预设的 burst 会让后续有限 quota 写入返回 EINVAL。v1 通过在写路径里清零不兼容的 burst 解决顺序耦合问题,并补充 cgroup v2 selftest 与文档。Michal Koutný 指出这会丢失用户配置值,建议改为 clamp,Zhe Liu 接受并预告 v2 将放宽 tg_set_bandwidth 校验、把 clamp 下放到 __refill_cfs_bandwidth_runtime,让 quota/burst 写入彻底顺序无关。
Aaron Tomlin v6 系列同时引入 /sys/kernel/debug/sched/cpu/cpu<N>/debug 每 CPU debugfs 接口与 RCU 内存安全修复。Patch 1 给 rq->rd 加 __rcu 注解并更新所有 lockless reader;Patch 2-3 用 rcu_assign_pointer/rcu_dereference/guard(rcu) 修复 print_dl_rq() 与 print_cpu() 的 UAF;Patch 4 用 task_lock 修复 sched_show_numa() 的 TOCTOU;Patch 5 引入 fo...
Christian Loehle 提出在 cpuidle 真正把 tick 切到 stopped 的瞬间补一次 cpufreq 更新,并新增 SCHED_CPUFREQ_IDLE 标志让 schedutil 绕过 rate-limit 强制刷新频率。补丁修复了 UCLAMP_MIN 在 idle 时维持高频、tickless 期间 WFI 持续高电压的能耗问题。后续回复者 Hongyan Xia 与 Vincent Guittot 的具体意见需要等 v2 才能确认。
本系列(v5)由 Aaron Tomlin 提交,共 6 个 patch,旨在修复 scheduler debugfs handlers 中的内存安全问题(rq->rd 缺 __rcu 注解、print_dl_rq() 的 dl_bw UAF、print_cpu() 的 task_struct UAF、sched_show_numa() 的 mm_struct TOCTOU、print_cfs_stats() 的非 RCU 链表遍历),同时在 /sys/kernel/debug/sched/cpu/cpu<N>/debug 引入 per-CPU debugfs 文件以支撑大 SMP 拓扑下的单...
David Woodhouse 在 dwmw2/linux.git 的 seb-nonblock-rt-test 分支提交 sched: Allow sleeping spinlocks on PREEMPT_RT,修复 syzbot 报告的 KVM MMU notifier 在 PREEMPT_RT 下 sleeping function called from invalid context 问题。前两次 syzbot 因克隆协议写错(https/http)拉取失败,第三次改用 git:// 后成功,reproducer 不再触发问题。
Byungchul Park 提交 DEPT (DEPendency Tracker) v19 共 40 个 patch。该框架通过追踪 wait/event 三元组构建事件依赖图,捕获 folio_lock、wait_for_completion、dma-fence、RCU 等不被 lockdep 覆盖的同步原语间的死锁。本期新增 proc 依赖图接口、外部 wgen 机制以支持 PG_locked 跟踪,并配合 CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT 区分 timeout 环。v19 rebase 到 v7.0、文档迁入 dev-tools/,并处理了 sy...
syzbot 多次在 RT 内核上抓到 oom_reaper 在持有 mmap_lock reader 锁时调用 cond_resched(),被 __might_resched() 误报为非法上下文睡眠。配套补丁给 __might_resched() 增加一个 bool rt_sleeping_lock 形参,让所有 cond_resched*() 显式传入 false,未来由 RT sleeping lock 路径传入 true,从而既放过合法调度点又不丢真实告警。dwmw2 已请求 syz test 验证 seb-nonblock-rt-test 场景。
tip sched/core 的 flat-hierarchy 重构里 tg_cpus() 不像 tg_tasks() 那样 floor 在 1,空 cpuset 给出 0 后穿过 calc_concur_shares() 的 min() 击穿 __calc_smp_shares() 的 MIN_SHARES 兜底,group se 的 load.weight 沦为 0,下一次 enqueue 走 __calc_prop_weight() 触发 #DE。Jake Steinman 提出把 tg_cpus() 改成 max(nr, 1),已合入 tip sched/urgent(commit 2...
Yao Kai 发送 v2 系列 patch,修复 futex requeue PI 路径上的两处并发问题:patch 1 在 futex_wait_requeue_pi() 的 Q_REQUEUE_PI_DONE 分支围绕 rt_mutex_wait_proxy_lock() 调用 rt_mutex_pre_schedule/post_schedule,避免 futex_do_wait() 跳过 schedule() 后 rt_mutex_schedule() 缺 sched_rt_mutex 触发 WARN;patch 2 让 futex_requeue_pi_complete() 对 Q...
Peter Zijlstra 的 v3 系列把 cgroup 层级权重从 1/N^d 衰减修正为可切换的五档算法(up / smp / max / concur / tasks),新默认 concur 通过 min(M,N) 把组内有效权重稳定在 1;并以 sched/eevdf 单 rq 化把 pick_next_task 路径上的中间 group se 移除,目标是降低 P99 调度延迟。后续 tip-bot2 合入与 Chen Yu 的 u32 溢出 fix 把整套改造落到 sched/core,但 wake_affine_weight 在新权重下的退化仍在持续追讨。
Lu Wang 的 v3 patch 修复 CAS 在 passive LB 退化到 active LB 时丢失 migrate_llc_task 语义的回归。新增 LBF_ACTIVE_LB_LLC flag 和 alb_stop_fn() 选择 stopper callback,使 can_migrate_task() 在 ALB 路径里也能识别 LLC 触发的迁移,避免把不该离开 preferred LLC 的任务迁走。v3 已拿到 Tim Chen 与 Chen Yu 的 Reviewed-by,作者正 ping maintainer Peter 等待 pick。
RFC 系列包含两个补丁:一是在 KVM x86 的 record_steal_time() 中,把 stealtime 的发布时机提前到清 preempted 之前并补 smp_wmb();二是在 guest 的 update_rq_clock_task() 中,对远端 rq 且 vcpu_is_preempted() 为真时把 clock_task delta 暂存到新增的 rq->deferred_clock_task,等 vCPU 不再被抢占时再一次性折回。作者用 host 端 chrt -f 90 制造 10s 抢占 + guest 内 5 个 pinned 线程,修复前出现 49....
Greg Kroah-Hartman 发布 Linux 6.18.46 stable point release,Makefile SUBLEVEL 由 45 升至 46。集成 openrisc sigreturn SR user mask、m68k NR_CPUS 显式化、arm64 tegra194 timer 中断以及 amdgpu/firewire/gpio/ata/KVM 等跨多子系统的稳定化修复,运行 6.18.x 的发行版与设备厂商应当尽快升级。
Greg KH 发布 5.15.217 长期分支稳定版,跨多子系统批量回植 CVE 与回归修复,措辞由 should 改为 must 升级。最值得关注的修复包括 openrisc sigreturn 中新增 SPR_SR_USER_MASK 隔离特权 SR 位、tegra194 DTS 中 GIC_CPU_MASK_SIMPLE 改为 4 以匹配实际 CPU 数,以及 dw-edma 90+83 行的大块回滚需重点回归 PCIe 枚举路径。
一组 v7.3-rc1 合并窗口的 tip/tip.git 分支 pull request(core/entry、core/rseq、irq/core、irq/drivers、locking/futex、smp/core、timers/{cleanups,clocksource,core,vdso}),由 Thomas Gleixner 提交并经 pr-tracker-bot 自动确认合入主线。线程后半段包含一个真实 bugfix:Nathan Chancellor bisect 出 ARM early boot 挂死源于 timers/cleanups 把 read_current_time...
Peter Zijlstra 用两补丁把 sched_class::balance() 卷进 pick_task_*(),修复 core-sched 下 newidle 只能在一个 SMT 兄弟上跑的缺陷,并新增 task_on_core() 防止重复迁移。讨论中 Aaron Lu 复现了 pick_next_task 的 core_pick NULL deref 崩溃,K Prateek 指出 sched_setaffinity 竞争,Tejun 提醒 sched_ext 的 lock-drop 语义,Peter 正在用 core_task_seq 限制 lock-break 次数以保证 f...
把 debugfs 中 numa_balancing scan_size_mb 的写入路径换成自定义 file_operations,在 setter 中拒绝 0 与大于 UINT_MAX 的值,统一返回 -ERANGE,避免 task_scan_min() 与 task_nr_scan_windows() 出现除零或被静默截断。注册处选用 debugfs_create_file_unsafe() 而非 debugfs_create_file(),因为 DEFINE_DEBUGFS_ATTRIBUTE 已自带引用计数保护,无须再叠一层 full_proxy。补丁以 Fixes: 8a99b68...
本系列是 Greg Kroah-Hartman 发布的 Linux 6.12.103-rc1 稳定分支 review,共 337 个 patch,覆盖 netfilter、sched、scsi、drm、alsa、bluetooth、hwmon、mm、kvm、net 等 30 多个子系统的 bugfix 与少量 cleanup/feature。关键改动包括 sched/deadline 仅在 dl_server 运行中启用新唤醒规则、cpufreq/schedutil 在所有 sg_cpu 初始化后发布 util hook、neigh_hh_bridge 重新分配 headroom、SIP NA...
PREEMPT_RT 下 spinlock_t/rwlock_t 实际是 rtlock 可睡眠锁,会在 non_block_start()/end() 区间内触发 might_sleep 警告。补丁通过给 __might_resched 增加 rt_sleeping_lock 形参,仅为 rtlock_might_resched 路径打开特例放行,David Woodhouse 已 Acked,并标记 Fixes commit 312364f3534c。
Peter Zijlstra提交单补丁,修复私有 futex 哈希 resize 时 wait_var_event() 嵌套睡眠触发 might_sleep() 警告的问题。新增 woken_wake_bit_function 与 __var_wake_key,把 futex_hash_allocate() 中的等待改写为手写 add/sleep/wake 路径,并用 smp_mb() 配对 wait_woken() 的 smp_store_mb(),避免出现 !pending && !active 的窗口。该 patch 已被 tip-bot2 推入 tip:locking/urgent 分...
Luigi Rizzo 提议删除 struct cpupri_vec 的 count 字段及配套的 atomic 操作与 smp_mb 屏障。动机是在 220 核 ARM 上,软中断 CPU 因 irq_thread 频繁调用 cpupri_set() 而有约 25% 时间耗在该函数;移除后该比例降至 2% 以内,且 RT 任务路由仍由 rq->lock 在 find_lock_lowest_rq 中兜底。v2 增加了 cpupri_find 的 benchmark 与无 barrier 安全性的注释。
把 futex_pivot_pending() 从持锁版本回退到 RCU + smp_rmb() 无锁实现,消除 might_sleep() 警告。Peter Zijlstra 进一步指出 wait_var_event 内部存在 lost-wakeup 窗口,需要在 add_wait_queue 之后插 smp_mb__after_spinlock(),由 Yao Kai 采纳。最终 Peter 接受 smp_mb__after_spinlock() 方案足以覆盖所需排序。
Andrea Righi 的 v4 patch 改写 find_new_ilb(),在 SMT 系统上优先选择整核都空闲的 housekeeping CPU 跑 idle load balancer,并以首个空闲 CPU 作为兜底。该改动修复了 NVIDIA Vera Olympus 核上 ILB 唤醒兄弟触发 10 Ki 周期 qualification 间隔、导致 CPU-bound 负载吞吐下降的性能问题,基准从约 6.2 TFLOP/s 提升到约 9.4 TFLOP/s。经 Mete Durlu、Prateek Nayak、Vincent Guittot、Shrikanth Hegde...
Greg Kroah-Hartman 发布 Linux 6.18.45 稳定内核,将近期多子系统回移修复合并进 6.18.y 分支,要求所有 6.18 用户升级。其中包含 x86-64 TLB ipi 刷新参数文档、Qualcomm ICE DT 绑定更新、MAINTAINERS NVM 条目以及新增量较大的 Hamoa/Purwa 平台 DTS。
Greg Kroah-Hartman 在 lore.kernel.org 发布 Linux 6.12.104 stable 小版本公告,跨 crypto、s390/x86 KVM、amdgpu、blk-mq、hwmon、networking、input 等多子系统集中回植一批修复并强制要求 6.12 用户升级。该 thread 与 scheduler 子系统无直接关联,且两封邮件 body 都在 diffstat 中途被截断,具体 patch 列表需到 linux-stable.git 自查。
Greg Kroah-Hartman 发布 Linux 5.15.216 stable,把跨 PowerPC cputime、ARM npcm SMP boot 节点泄漏、x86 KVM nested 和多个驱动稳定分支的修复一次性 backport 到 linux-5.15.y。所有 5.15 用户必须升级。
PSI 子系统中 psi_schedule_rtpoll_work() 在调度热路径上 lockless 调用,可能在 psi_trigger_destroy() 删除 timer 后重新 mod_timer 装弹,导致 cgroup 释放后 timer 仍在已释放内存上执行。补丁把 timer 关闭下沉到 psi_cgroup_free(),mainline 用 timer_shutdown_sync(),5.10.y 通过 timer_delete_sync() 与嵌入字段 cgroup->psi.poll_timer 做适配。
scx_cgroup_lock() 中先取 rwsem 写锁再 cgroup_lock() 的顺序会通过 kernfs 与 enable/rmdir/cpu.weight 形成死锁闭环。修复把 cgroup_lock() 提到写锁之前断开环路,并把该 patch 连同两个 stable-dep(warning 翻转、enable/disable 路径重构)一起按 6.18-stable 的 kernel/sched/ext.c 路径回迁。
Joshua Hahn 提出一套 14 patch 的 RFC,把 memory.{min,low,high,max} 在每个内存层级(DRAM/CXL/PMEM 等)按系统容量比例缩放,从而防止先到的 cgroup 独占高速层。在 1TB 双层机器上的测试显示,多 workload 在 DRAM/CXL 上的占用极差从 7.10x 降到 1.06x,作业完成时间极差从 54.9s 降到 26.1s。Song Hu 另指出 calculate_high_delay() 存在 pre-existing 整数溢出,建议作独立 fix。
上游 commit 5457025fa8ca 把 psi rtpoll_timer 的关闭从 trigger 销毁路径移到 psi_cgroup_free(),用 timer_shutdown_sync() 一次性绑定 group 生命周期,消除调度器热路径 re-arm 导致的 use-after-free。该补丁 cherry-pick 到 5.15-stable 失败,Greg KH 发出 FAILED 通知。Sasha Levin 随后提交手工适配版,把 cgroup->psi-> 指针解引用改为内嵌的 cgroup->psi.,并把 rtpoll_* 成员名改回 poll_*。
本系列补丁为 cache-aware scheduling 引入 visited_cpus cpumask,让 task_cache_work() 只扫描最近真正访问过的 CPU,把多 NUMA 系统中的扫描 CPU 数从 384 降到 16 左右,Redis p99 延迟下降约 25%。Chen Yu C 在 review 中进一步指出单线程进程 visited_cpus 位累积以及跨 NUMA 抖动两个潜在风险,作者倾向于不加 gate。
Vlastimil Babka 发布5 patch RFC,把 kfree_nolock() 从只能释放 kmalloc_nolock() 对象扩展为可释放任意 kmalloc() 对象(含 kfence、kmemleak 注册对象、large_kmalloc),必要时通过 irq_work 延迟释放。调度器据此把 set_cpus_allowed_force() 中的 kfree_rcu() 替换为 kfree_nolock(),避免 RCU grace period 延迟。Hao Li 给出 Reviewed-by;Catalin Marinas 对 kmemleak 扫描期间 defer...
该补丁在 PSI 中新增 cpu_prio 资源,只统计静态优先级不高于阈值的任务等待 CPU 的时长,以隔离延迟敏感负载的争用信号。维护者 Peter Zijlstra 直接回 Yeah, I think not. 拒绝,Michal Koutny 进一步指出把目标任务放进独立 cgroup 后读取 cpu.pressure 已经能做到同样效果,因此没有继续迭代。