加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux – 为什么softirq用于高线程和高频率用途?

发布时间:2021-01-01 00:15:59 所属栏目:Linux 来源:网络整理
导读:是什么让softirq如此特别,以至于我们将它用于高频率用途,如网络驱动程序和块驱动程序. 解决方法 SoftIrq通常用于完成处理中断的排队工作,因为它们非常适合需要 – 它们以第二高的优先级运行,但仍然在启用硬件中断的情况下运行. 处理hw中断是最重要的,因为

是什么让softirq如此特别,以至于我们将它用于高频率用途,如网络驱动程序和块驱动程序.

解决方法

SoftIrq通常用于完成处理中断的排队工作,因为它们非常适合需要 – 它们以第二高的优先级运行,但仍然在启用硬件中断的情况下运行.

处理hw中断是最重要的,因为如果不快速处理它们,则会引入太高的延迟并且用户体验受损,或者硬件缓冲区将在中断服务设备之前填充,并且数据丢失.不要足够快地维护网络适配器?它将覆盖fifo中的数据,你将丢失数据包.不要快速维修硬盘?硬盘驱动器停止排队的读取请求,因为它无处可放置结果.

SoftIrqs允许维护硬件中断的关键部分尽可能短;而不是必须在现场处理整个hw中断,将重要数据从设备读入RAM或其他方式,然后启动SoftIrq以完成工作.这样可以在最短的时间内禁用硬件中断,同时仍然以高优先级完成工作.

这篇文章是关于此事的一个不错的参考:
https://lwn.net/Articles/520076/

编辑问题:

SoftIrqs是可重入的 – 它们可以在任何cpu上处理.从我链接的文章:

There are two places where software interrupts can “fire” and preempt
the current thread. One of them is at the end of the processing for a
hardware interrupt; it is common for interrupt handlers to raise
softirqs,so it makes sense (for latency and optimal cache use) to
process them as soon as hardware interrupts can be re-enabled

强调补充说.它们可以内联处理 – 我相信这意味着它们可以在不引起上下文切换的情况下进行处理,这意味着一旦启用硬件中断,我们就可以直接跳转到SoftIrq,尽可能减少CPU缓存滥用.所有这些都有助于SoftIrqs轻巧而灵活,这使它们成为高频处理的理想选择.

>如果需要,可以将它们推送到另一个CPU,从而提高吞吐量.>可以在当前上下文中启用hwints后立即处理它们,尽可能保留处理器状态,从而改善延迟>它们允许硬件中断继续处理,因为这些是我们最重要的目标>如果负载过高,我们可以重新安排到ksoftirqd进程,我们需要从正常的用户进程中抽出时间.

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读