Ethernet
如何增加 Linux 伺服器上 NIC 的環參數
我使用 ethtool 實用程序來增加我們其中一台伺服器上 NIC 的 rx 和 tx 值。我執行了以下命令:
ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 2040 RX Mini: 0 RX Jumbo: 8160 TX: 255 Current hardware settings: RX: 2040 RX Mini: 0 RX Jumbo: 0 TX: 255
我可以以某種方式更改卡上的預設最大值嗎?或者它們是硬體限制。我們在伺服器上的網卡是:Broadcom NetXtreme II BCM5709 1000Base-T
好吧,有幾年前在核心中修改了從 1020 到 2040 的Broadcom bnx2 設備上預設的最大環形緩衝區數字的範例,所以這是可能的。
diff --git a/drivers/net/bnx2.h b/drivers/net/bnx2.h index efdfbc2..62ac83e 100644 --- a/drivers/net/bnx2.h +++ b/drivers/net/bnx2.h @@ -6502,8 +6502,8 @@ struct l2_fhdr { #define TX_DESC_CNT (BCM_PAGE_SIZE / sizeof(struct tx_bd)) #define MAX_TX_DESC_CNT (TX_DESC_CNT - 1) -#define MAX_RX_RINGS 4 -#define MAX_RX_PG_RINGS 16 +#define MAX_RX_RINGS 8 +#define MAX_RX_PG_RINGS 32 #define RX_DESC_CNT (BCM_PAGE_SIZE / sizeof(struct rx_bd)) #define MAX_RX_DESC_CNT (RX_DESC_CNT - 1) #define MAX_TOTAL_RX_DESC_CNT (MAX_RX_DESC_CNT * MAX_RX_RINGS)
您可以嘗試其中的一些;在某些核心/驅動程序建構之前,我已經看到這些
MAX_RX_RINGS
和值被推到 16 和 64。MAX_RX_PG_RINGS
這些通常是 Dell PowerEdge 和 HP ProLiant 伺服器的板載 NIC,我所在行業的一些人會破解這些驅動程序以使 NIC 更有用。但要知道,了解性能問題在哪裡可能是有意義的。還知道其他 NIC 型號/驅動程序具有比 Broadcom 更大的環形緩衝區。Intel: # ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 2048
嘗試分析您的應用程序並查看下降的位置。您沒有指定作業系統發行版或版本,所以我不能提供太多特定於發行版的資訊。一個方便的攜帶式工具是dropwatch。您可以使用它來查看是否在 IP、鏈路或應用程序層發生了丟包。
# dropwatch -l kas 1 drops at tcp_rcv_established+916 (0xffffffff814ae5c6) 2 drops at tcp_v4_rcv+aa (0xffffffff814b78aa) 2 drops at tcp_rcv_established+916 (0xffffffff814ae5c6) 1 drops at skb_copy_datagram_from_iovec+2fe (0xffffffff81455dde) 1 drops at skb_copy_datagram_from_iovec+2fe (0xffffffff81455dde) 2 drops at tcp_v4_rcv+aa (0xffffffff814b78aa) 2 drops at skb_copy_datagram_from_iovec+2fe (0xffffffff81455dde) 1 drops at tcp_v4_rcv+aa (0xffffffff814b78aa) 1 drops at tcp_v4_rcv+aa (0xffffffff814b78aa) 18 drops at unix_stream_connect+1dc (0xffffffff814f4cdc) 2 drops at tcp_v4_rcv+aa (0xffffffff814b78aa)