ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux网络上的SoftIRQ和快速数据包处理

2019-11-18 13:50:55  阅读:284  来源: 互联网

标签:ubuntu networking linux


我一直在阅读有关Linux的性能调整的信息,以便在接收金融市场数据时获得最快的数据包处理时间.我看到,当NIC收到数据包时,它将通过DMA将其放入内存中,然后引发HardIRQ-依次设置一些NAPI设置并引发SoftIRQ.然后,SoftIRQ使用NAPI /设备驱动程序通过轮询从RX缓冲区读取数据,但这仅在有限的时间内运行(net.core.netdev_budget,默认为300个数据包).这些是运行ubuntu并带有solarflare NIC的真实服务器的参考.我的问题如下:

>如果每个HardIRQ发出一个SoftIRQ,并且设备驱动程序在1 go内读取多个数据包(netdev_budget),则从1x内从RX缓冲区中耗尽的每个数据包所产生的SoftIRQ会发生什么情况(收到的每个数据包都会产生一个硬然后软irq)?这些排队了吗?
> NAPI为什么使用轮询来耗尽RX_buffer?系统刚刚生成了SoftIRQ并正在读取RX缓冲区,那么为什么要轮询?
>大概是通过softirq对RX_Buffer进行排泄,仅会从1个特定的RX_Buffer中发生,而不会跨多个RX_Buffers发生吗?如果是这样,那么增加netdev_budget可以延迟其他RX_buffer的处理/消耗吗?还是可以通过将不同的RX_buffer分配给不同的内核来缓解这种情况?
>有一些设置可以确保HardIRQ立刻被提出并处理.但是,SoftIRQ可以在以后的时间进行处理.是否有设置/配置来确保与网络RX相关的SoftIRQ也得到最高优先级处理并且没有延迟?

解决方法:

我写了一篇详尽的博客文章,解释了您的问题的答案以及有关调整,优化,分析和理解整个Linux网络堆栈here的所有其他信息.

您的问题的答案:

>在处理softirq时,驱动程序提出的sofirq无效.这是因为NAPI帮助程序代码先尝试检查NAPI是否已在运行,然后再尝试提高softirq.即使NAPI没有检查,您也可以see from the softirq source将softirqs实现为位向量.这意味着softirq只能是1(待处理)或0(未待处理).设置为1时,将其设置为1的其他调用将无效.
> softirq用于启动NAPI轮询循环并控制NAPI轮询,因此它不会占用100%的CPU使用率. NAPI轮询循环只是一个for循环,softirq代码管理着它可以花费多少时间以及它有多少预算.
>每个CPU处理数据包可以花费全部预算.因此,如果将预算设置为300,并且您有2个CPU,则每个CPU可以处理300个数据包,总共600个.只有当您的NIC支持多个RX队列并且您已将IRQ分配给单独的CPU时,这才是正确的.处理.如果您的NIC没有,则可以使用接收数据包指导来帮助解决此问题(RPS).有关更多信息,请参见上面的我的博客文章.
>否,对此没有设置.请注意,softirq在运行它们的同一CPU上运行.因此,如果将RX队列1的hardirq处理程序设置为CPU 16,则softirq将在CPU 16上运行.您可以做的一件事是:将hardirqs设置为特定的CPU,并将使用该数据的应用程序设置为相同的CPU.将所有其他应用程序(如cron作业,后台任务等)固定到其他CPU上-这确保只有hardirq处理程序,softirq和将处理数据的应用程序可以运行.

如果需要极低延迟的网络数据包读取,则应尝试使用一种称为busy polling的新Linux内核网络功能.该功能可用于帮助最小化并减少网络数据包处理延迟.使用此选项将增加CPU使用率.

标签:ubuntu,networking,linux
来源: https://codeday.me/bug/20191118/2028632.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有