如何让 Linux kworker 线程保持活动状态?

如何让 Linux kworker 线程保持活动状态?

我在以(相对)高数据速率运行的 Raspberry Pi 上的 USB 转串行适配器上遇到一些数据丢失。我相信大部分工作是由内核线程执行的:

 2569 root      20   0       0      0      0 S   1.7  0.0   0:05.41 kworker/u8:0                                                                                                                                   
 2360 root      20   0       0      0      0 R   1.0  0.0   0:12.47 kworker/u8:2                                                                                                                                   

我注意到它们会定期重新创建(它们的 PID 不断变化)。有什么方法可以让它们一直运行,和/或阻止它们迁移到不同的 CPU?

我尝试设置smp_affinity_list,但这在 Raspberry Pi 上似乎不可能:

$ echo 0 > /proc/irq/62/smp_affinity_list 
-ash: write error: Input/output error

内核调试故事听起来与我所经历的非常相似,但我似乎无法应用任何建议的选项。

相关内容