网络过滤器钩子在Softirq上下文中运行.
我正在访问全局数据结构
来自softirq上下文以及从Process上下文的“哈希表”.进程上下文访问是由于使用sysctl文件来修改哈希表的内容.
我正在使用spinlock_irq_save.
这个spin_lock API的选择是否正确?在性能和锁定标准方面.
如果在另一个处理器上安排中断,会发生什么?而当前的处理器锁已经被一个进程上下文代码保存了?
解决方法 首先:So,with all the above details I concluded that my softirqs can run concurrently on both cores.
是的,这是正确的.您的softirq处理程序可能会同时在多个cpu上执行.
你使用螺旋锁的结论听起来对我来说是正确的.但是,这假设关键部分(即,使用旋转锁持有执行的部分)具有以下属性:
>它不能睡觉(例如,获取一个阻塞互斥体)
>它应该尽可能的短
一般来说,如果你只是更新哈希表,你应该在这里很好.
如果一个IRQ处理程序尝试获取一个由进程上下文保存的自旋锁,那没关系.只要你的进程上下文没有保持锁定,锁应该在短时间内释放,允许IRQ处理程序取得进展.
总结以上是内存溢出为你收集整理的linux内核 – 在网络处理中使用自旋变体全部内容,希望文章能够帮你解决linux内核 – 在网络处理中使用自旋变体所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)