use*_*780 3 ethernet nic gigabit-ethernet
我使用 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
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式更改卡上的预设最大值吗?或者它们是硬件限制。我们在服务器上的 NIC 是:Broadcom NetXtreme II BCM5709 1000Base-T
嗯,有一个例子,博通 bnx2 设备上的预设最大环形缓冲区数字几年前在内核中从 1020 修改到 2040,所以这是可能的。
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)
Run Code Online (Sandbox Code Playgroud)
你可以尝试其中的一些;在某些内核/驱动程序构建之前,我已经看到这些MAX_RX_RINGS
和MAX_RX_PG_RINGS
值被推到了 16 和 64。这些通常是 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
Run Code Online (Sandbox Code Playgroud)
尝试分析您的应用程序并查看丢失的位置。您没有指定操作系统发行版或版本,所以我不能提供太多特定于发行版的信息。一个方便的便携式工具是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)
Run Code Online (Sandbox Code Playgroud)