linux – 为什么softirq用于高线程和高频率用途?
是什么让softirq如此特别,以至于我们将它用于高频率用途,如网络驱动程序和块驱动程序. 解决方法SoftIrq通常用于完成处理中断的排队工作,因为它们非常适合需要 – 它们以第二高的优先级运行,但仍然在启用硬件中断的情况下运行.处理hw中断是最重要的,因为如果不快速处理它们,则会引入太高的延迟并且用户体验受损,或者硬件缓冲区将在中断服务设备之前填充,并且数据丢失.不要足够快地维护网络适配器?它将覆盖fifo中的数据,你将丢失数据包.不要快速维修硬盘?硬盘驱动器停止排队的读取请求,因为它无处可放置结果. SoftIrqs允许维护硬件中断的关键部分尽可能短;而不是必须在现场处理整个hw中断,将重要数据从设备读入RAM或其他方式,然后启动SoftIrq以完成工作.这样可以在最短的时间内禁用硬件中断,同时仍然以高优先级完成工作. 这篇文章是关于此事的一个不错的参考: 编辑问题: SoftIrqs是可重入的 – 它们可以在任何cpu上处理.从我链接的文章:
强调补充说.它们可以内联处理 – 我相信这意味着它们可以在不引起上下文切换的情况下进行处理,这意味着一旦启用硬件中断,我们就可以直接跳转到SoftIrq,尽可能减少CPU缓存滥用.所有这些都有助于SoftIrqs轻巧而灵活,这使它们成为高频处理的理想选择. >如果需要,可以将它们推送到另一个CPU,从而提高吞吐量.>可以在当前上下文中启用hwints后立即处理它们,尽可能保留处理器状态,从而改善延迟>它们允许硬件中断继续处理,因为这些是我们最重要的目标>如果负载过高,我们可以重新安排到ksoftirqd进程,我们需要从正常的用户进程中抽出时间. (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |