Como eu aumento os parâmetros de toque para uma NIC em um servidor Linux

3

Eu usei o utilitário ethtool para aumentar os valores de rx e tx da NIC em um de nossos servidores. Eu corri o seguinte comando:

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

Posso alterar os valores máximos predefinidos no cartão de alguma forma? Ou são uma limitação de hardware? o NIC que temos no servidor é:  Broadcom NetXtreme II BCM5709 1000Base-T

    
por user3405780 16.10.2014 / 19:18

1 resposta

6

Bem, há o exemplo dos números de buffer de toques predefinidos na Broadcom bnx2 dispositivos sendo modificados no kernel de 1020 a 2040 há alguns anos, então é possível .

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)

Você pode tentar um pouco disso; Eu vi esses MAX_RX_RINGS e MAX_RX_PG_RINGS valores empurrados para 16 e 64 antes em determinadas compilações de kernel / driver. Essas são rotineiramente as NICs on-board dos servidores Dell PowerEdge e HP ProLiant, e algumas pessoas da minha indústria podem modificar esses drivers para tornar as NICs mais utilizáveis. Mas saiba que pode fazer sentido entender onde estão os problemas de desempenho. Também saiba que outros modelos / drivers de NICs possuem buffers de anel maiores que o da 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

Tente criar um perfil para seu aplicativo e veja onde estão as gotas. Você não especificou a distribuição ou a versão do sistema operacional, por isso não posso fornecer muitas informações específicas da distribuição. Uma prática ferramenta portátil é o dropwatch . Você pode usá-lo para ver se há quedas no IP, no link ou nas camadas de aplicativos.

# 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)
    
por 18.10.2014 / 10:21