夜雨聆风学习资料网

ARTICLE · 1183784

Linux 6.12 源码深度剖析: process_one_wor

Linux 6.12 源码深度剖析: process_one_wor

前阵子排查系统卡死,发现罪魁祸首是内核里的 process_one_work。这函数专门负责执行异步任务,看着不起眼,用错地方能把整台机器拖垮。

它干活有个硬规矩:执行用户代码前必须先释放锁。要是你在默认队列里塞进一个无超时的网络请求,线程就会永久挂起。紧接着 ACPI 事件、内存回收全跟着饿死,系统直接触发 hung_task 报警。

纯计算任务也一样坑人。有驱动做国密算法没打标记,调度器以为它还在跑,死活不派新线程。排在后面的轻量 IO 只能干等,延迟从微秒级飙到毫秒级。

真遇到卡顿,别瞎猜。开个 ftrace 抓一下 workqueue_execute_start 和 end 的时间差,谁拖慢了系统一目了然。或者直接看 debugfs 里的状态文件,哪条队列堵着一清二楚。

原文Linux 6.12 源码深度剖析: process_one_work
作者提示: 个人观点,仅供参考
四川,3小时前,

相关学习资料