8.5. 多播注意事项
当有多个程序侦听多播组时,要求将处理多播帧的内核代码设计为为每个独立插槽复制网络数据。这个复制很耗时且要在
softirq
上下文中进行。
因此在单一多播组中添加多个侦听程序会直接影响
softirq
上下文的执行时间。在多播组中添加侦听程序意味着内核必须为那个组接收的每个帧生成额外的副本。
这对低流量卷且侦听程序数小时影响最小。但当多个插槽侦听一个高流量多播组时,增加的
softirq
上下文执行时间导致在网卡和插槽多列中掉帧。增加 softirq
运行时会导致降低程序在高负载系统中运行的机会,那样的话多播帧丢失的比例会随着侦听高容量多部组程序是的增加而增大。
如 第 8.4.2 节 “插槽队列” 或者 第 8.4.1 节 “NIC 硬件缓冲” 所属通过优化您的插槽队列和 NIC 硬件缓冲解决丢帧问题。另外,您还可以优化程序的插槽使用。方法是将程序配置为控制单一插槽,并将接收的网络数据迅速传播到其他用户空间进程中。