Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.5. Multicast 考量

當有多項應用程式在監聽一個 multicast 群組時,就設計上來講處理 multicast frame 的 kernel 程式碼是必要的,以便複製各別 socket 的網路資料。這項複製很費時,並且會在執行 softirq 時發生。
因此,在單一 multicast 群組上新增多個監聽程式會直接影響 softirq 的執行時間。新增監聽程式至一個 multicast 群組,代表每當該群組接收到一個 frame 時,kernel 就必須建立額外的副本。
當流量低且監聽程式數量較少時,此效應便不會有太大影響。然而,當多個 socket 同時監聽一個高流量的 multicast 群組時,增加的 softirq 執行時間,可能會導致於 frame 同時在網路卡上和 socket 佇列中遺失。softirq runtime 的增加,亦代表了應用程式在高負載的系統上執行的機會會減少,當監聽高流量 multicast 群組的應用程式數量增加時,multicast frame 遺失的比率也會增加。
您可透過描述於〈節 8.4.2, “socket 佇列”〉或是〈節 8.4.1, “NIC 硬體緩衝區”〉中的方法,以藉由優化您的 socket 佇列和 NIC 硬體緩衝區來解決此 frame 遺失的問題。此外,您亦可優化應用程式的 socket 應用;若要如此,請配置應用程式,以控制單一 socket,並將接收到的網路資料快速地散佈至其它使用者空間程序中。