簡體   English   中英

CentOS 中的網卡/網絡性能調優

[英]NIC/Network performance tuning in CentOS

我們運行一個基於 UDP 的應用程序服務器,我們期望在該服務器中獲得高流量。 所以我正在調整我們的 NIC 以實現高吞吐量的最佳性能(犧牲一點延遲)。

為了進行測試,我使用具有以下配置的 2 台機器。

機器詳情

CPU : 40core
Threads per core: 2
Cores per socket : 2
NUMA node : 2
Model name : Intel(R) Xenon(R ) CPU E5-2630v4
CPU MHx: 2199.841
NUMA 0: 0-9, 20-29
NUMA 1: 10-19, 30-39
RAM: 128GB

網卡詳情:

Driver: ixgbe
Version : 4.4.0-k-rh7.3
10G capable

在進行簡單的負載測試時,我觀察到接收速率(數據包/秒)與發送方不同。

(通過 SAR 命令觀察統計數據)發送方:(sar -n UDP 1) odgm/s

1098825.00
1097993.00
1098103.00

接收器: Idgm/s

622742.00
616321.00
649075.00

從上面可以看出發送方和接收方數據報包的區別。

丟包觀察:

Ethtool、netstat、sar - 在所有這些工具中觀察到的統計數據,這里沒有報告丟包。

當前已調整:(通過此調整,我能夠在接收器端實現最大 630k 平均/秒)

IRQBALANCE : disabled
CPU affinity   : manually distributed (each rx-tx queue / CPU)
Interrupt coalesce : rx-usecs 15
Flow control : on
Ring Buffer : rx 512
Rx Queue : 40
rmem_default = 16777216
rmem_max = 16777216

其余都是默認值 Edit1:我更改為繁忙的投票 - 50 並且能夠在整個過程中取得更好的成績,但不一致。

  1. 為什么發送方和接收方之間的速率存在差異? 可以調整哪些其他 NIC/OS 參數以實現與發送方相同的吞吐率?

  2. 我使用 ethtool 觀察到的一件奇怪的事情是這個參數“ rx_no_dma_resources ”在測試期間不斷快速增加......它是否響起任何東西?

  3. 盡管我在 /proc/interrupts 和 /proc/net/softnet_stat 中禁用了“irqbalance”,但中斷的分布並不均衡。
  4. 總的來說,我的最終目標是以最小的數據包丟失實現最佳吞吐量。

我沒有你所有問題的答案,也沒有特定的 centos。 這是我以前在基於中斷的數據包接收方面的經驗。

正如您提到的,您需要最佳吞吐量,基於中斷的方法不是一種方法。 在我們所做的一個項目中,我們發現基於中斷的方法由於上下文切換而具有巨大的開銷,因此會丟棄大量數據包。 我建議您使用輪詢頻率較低的輪詢。 雖然它會導致更多的執行開銷。 您將能夠獲得更好的吞吐量。

我希望我的建議對您的項目有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM