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小时前,















































































