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)