web-dev-qa-db-ja.com

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

カードのプリセット最大値を何らかの方法で変更できますか?または、ハードウェアの制限ですか。 NICサーバーにあるのは:Broadcom NetXtreme II BCM5709 1000Base-T

3
user3405780

さて、数年前の Broadcom 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)

これのいくつかを試すことができます。私はそれらを見た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

アプリケーションをプロファイリングして、ドロップがどこにあるかを確認してください。 OSのディストリビューションやバージョンを指定しなかったので、ディストリビューション固有の情報はあまり提供できません。便利なポータブルツールは 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)
7
ewwhite