Linux kernel 动态Tasklet或工作队列
背景:我正在编写网络流量处理核心模块。 我正在使用netfilter挂钩获取数据包。所有过滤都在hook函数中完成,但我不想在这里进行数据包处理。所以解决方案是微线程或工作队列。我知道它们之间的区别,我可以两者都用,但我有一些问题,我需要一个建议Linux kernel 动态Tasklet或工作队列,linux-kernel,kernel-module,kernel,netfilter,tasklet,Linux Kernel,Kernel Module,Kernel,Netfilter,Tasklet,背景:我正在编写网络流量处理核心模块。 我正在使用netfilter挂钩获取数据包。所有过滤都在hook函数中完成,但我不想在这里进行数据包处理。所以解决方案是微线程或工作队列。我知道它们之间的区别,我可以两者都用,但我有一些问题,我需要一个建议 微线程解决方案。更可取。我可以为创建和启动tasklet 每个数据包,但谁将删除此tasklet?微线程函数?我 不要认为这是一个好主意-在tasklet运行时释放它 执行。创建微线程的全局池?好吧,既然不能 如果两个微线程在一个处理器上执行,则池大小
您可以使用高优先级()、未绑定()工作队列,并坚持使用问题中列出的选项3
WQ\u HIGH\u PRI
保证尽快启动处理WQ\u UNBOUND
消除了单CPU瓶颈,因为调度程序会立即将工作分配给任何可用的CPU。谢谢,听起来很有希望。