From ff24ff79753d96e1f75db2290c539079b1f343ff Mon Sep 17 00:00:00 2001 From: Jianghua Yang Date: Tue, 6 Jan 2026 02:01:06 +0800 Subject: [PATCH] interconnect: increase UDP unack queue size and fix mem size unit handling Fix calculation of per-queue capacity in SetupUDPIFCInterconnect by properly converting gp_interconnect_mem_size from MB to bytes. Without this conversion, the derived send queue depth could be severely underestimated, leading to suboptimal throughput. --- contrib/interconnect/udp/ic_udpifc.c | 4 ++-- contrib/udp2/ic_udp2.c | 4 ++-- src/backend/utils/misc/guc_gp.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/contrib/interconnect/udp/ic_udpifc.c b/contrib/interconnect/udp/ic_udpifc.c index d11e4577cd6..1ab881d2532 100644 --- a/contrib/interconnect/udp/ic_udpifc.c +++ b/contrib/interconnect/udp/ic_udpifc.c @@ -595,7 +595,7 @@ static ICGlobalControlInfo ic_control_info; #define MAX_SEQS_IN_DISORDER_ACK (4) -#define MAX_QUEUE_SIZE (64) +#define MAX_QUEUE_SIZE (12) /* * UnackQueueRing * @@ -3753,7 +3753,7 @@ SetupUDPIFCInterconnect(EState *estate) Gp_interconnect_queue_depth == 4 && Gp_interconnect_snd_queue_depth == 2) { - int32 perQueue = Gp_interconnect_mem_size / + int32 perQueue = ((int64)Gp_interconnect_mem_size * 1024 * 1024) / (Gp_max_packet_size * sliceNum); calcSndDepth = Max(Gp_interconnect_snd_queue_depth, perQueue / 2); diff --git a/contrib/udp2/ic_udp2.c b/contrib/udp2/ic_udp2.c index 0972c874941..841620fba16 100644 --- a/contrib/udp2/ic_udp2.c +++ b/contrib/udp2/ic_udp2.c @@ -47,7 +47,7 @@ #include "ic_types.h" #include "udp2/ic_udp2.h" -#define MAX_QUEUE_SIZE (64) +#define MAX_QUEUE_SIZE (12) #define HandleLastError() \ do { \ @@ -179,7 +179,7 @@ SetupInterconnectUDP2(EState *estate) Gp_interconnect_queue_depth == 4 && Gp_interconnect_snd_queue_depth == 2) { - int32 perQueue = Gp_interconnect_mem_size / + int32 perQueue = ((int64)Gp_interconnect_mem_size * 1024 * 1024) / (Gp_max_packet_size * sliceNum); calcSndDepth = Max(Gp_interconnect_snd_queue_depth, perQueue / 2); diff --git a/src/backend/utils/misc/guc_gp.c b/src/backend/utils/misc/guc_gp.c index 42b61dfbbbb..8de5324c50c 100644 --- a/src/backend/utils/misc/guc_gp.c +++ b/src/backend/utils/misc/guc_gp.c @@ -3788,7 +3788,7 @@ struct config_int ConfigureNamesInt_gp[] = NULL }, &Gp_interconnect_mem_size, - 10, 1, 1024, + 1, 1, 1024, NULL, NULL, NULL },