From c0370c74888438fb05fd487710de94399f7ff3a7 Mon Sep 17 00:00:00 2001 From: Vivek Reddy Date: Thu, 26 Jun 2025 03:21:07 +0300 Subject: [PATCH 1/4] [ZmqOrch] Optimize memory by popping batch size at a time Signed-off-by: Vivek Reddy --- orchagent/zmqorch.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/orchagent/zmqorch.cpp b/orchagent/zmqorch.cpp index 1a9b8995d27..aa7f3184b19 100644 --- a/orchagent/zmqorch.cpp +++ b/orchagent/zmqorch.cpp @@ -9,14 +9,11 @@ void ZmqConsumer::execute() { SWSS_LOG_ENTER(); - size_t update_size = 0; auto table = static_cast(getSelectable()); - do - { - std::deque entries; - table->pops(entries); - update_size = addToSync(entries); - } while (update_size != 0); + + std::deque entries; + table->pops(entries); + addToSync(entries); drain(); } @@ -53,7 +50,7 @@ void ZmqOrch::addConsumer(DBConnector *db, string tableName, int pri, ZmqServer if (zmqServer != nullptr) { SWSS_LOG_DEBUG("ZmqConsumer initialize for: %s", tableName.c_str()); - addExecutor(new ZmqConsumer(new ZmqConsumerStateTable(db, tableName, *zmqServer, gBatchSize, pri), this, tableName)); + addExecutor(new ZmqConsumer(new ZmqConsumerStateTable(db, tableName, *zmqServer, 65536, pri), this, tableName)); } else { From b3f8ccf4e8848dc892622c6af748ece8a0c19a38 Mon Sep 17 00:00:00 2001 From: Vivek Date: Tue, 19 Aug 2025 02:08:02 +0000 Subject: [PATCH 2/4] Use reference instead of redundant copy Signed-off-by: Vivek --- orchagent/dash/dashvnetorch.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orchagent/dash/dashvnetorch.cpp b/orchagent/dash/dashvnetorch.cpp index f163ee352ee..adc6e7e642c 100644 --- a/orchagent/dash/dashvnetorch.cpp +++ b/orchagent/dash/dashvnetorch.cpp @@ -438,7 +438,7 @@ void DashVnetOrch::addPaValidation(const string& key, VnetMapBulkContext& ctxt) string underlay_ip_str = to_string(ctxt.metadata.underlay_ip()); string pa_ref_key = ctxt.vnet_name + ":" + underlay_ip_str; - auto vnet_underlay_ips = vnet_table_[ctxt.vnet_name].underlay_ips; + auto& vnet_underlay_ips = vnet_table_[ctxt.vnet_name].underlay_ips; std::string underlay_sip_str = to_string(ctxt.metadata.underlay_ip()); if (vnet_underlay_ips.find(underlay_sip_str) != vnet_underlay_ips.end()) { From 9e5903fce200ab8e371779ae7fdb4ecc6cda078d Mon Sep 17 00:00:00 2001 From: Vivek Date: Tue, 19 Aug 2025 02:08:28 +0000 Subject: [PATCH 3/4] Increase max bulker size Signed-off-by: Vivek --- orchagent/orchdaemon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orchagent/orchdaemon.cpp b/orchagent/orchdaemon.cpp index 1a8785e5f88..10e311093d3 100644 --- a/orchagent/orchdaemon.cpp +++ b/orchagent/orchdaemon.cpp @@ -72,7 +72,7 @@ HFTelOrch *gHFTOrch; bool gIsNatSupported = false; event_handle_t g_events_handle; -#define DEFAULT_MAX_BULK_SIZE 1000 +#define DEFAULT_MAX_BULK_SIZE 65536 size_t gMaxBulkSize = DEFAULT_MAX_BULK_SIZE; OrchDaemon::OrchDaemon(DBConnector *applDb, DBConnector *configDb, DBConnector *stateDb, DBConnector *chassisAppDb, ZmqServer *zmqServer) : From 317be2995b9b086dd7127e63fb67b0694d3ca2ce Mon Sep 17 00:00:00 2001 From: Vivek Reddy Date: Thu, 25 Sep 2025 04:52:42 +0300 Subject: [PATCH 4/4] Remove hardcoded values Signed-off-by: Vivek Reddy --- orchagent/orchdaemon.cpp | 2 +- orchagent/zmqorch.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/orchagent/orchdaemon.cpp b/orchagent/orchdaemon.cpp index 10e311093d3..1a8785e5f88 100644 --- a/orchagent/orchdaemon.cpp +++ b/orchagent/orchdaemon.cpp @@ -72,7 +72,7 @@ HFTelOrch *gHFTOrch; bool gIsNatSupported = false; event_handle_t g_events_handle; -#define DEFAULT_MAX_BULK_SIZE 65536 +#define DEFAULT_MAX_BULK_SIZE 1000 size_t gMaxBulkSize = DEFAULT_MAX_BULK_SIZE; OrchDaemon::OrchDaemon(DBConnector *applDb, DBConnector *configDb, DBConnector *stateDb, DBConnector *chassisAppDb, ZmqServer *zmqServer) : diff --git a/orchagent/zmqorch.cpp b/orchagent/zmqorch.cpp index aa7f3184b19..d92321902c9 100644 --- a/orchagent/zmqorch.cpp +++ b/orchagent/zmqorch.cpp @@ -50,7 +50,7 @@ void ZmqOrch::addConsumer(DBConnector *db, string tableName, int pri, ZmqServer if (zmqServer != nullptr) { SWSS_LOG_DEBUG("ZmqConsumer initialize for: %s", tableName.c_str()); - addExecutor(new ZmqConsumer(new ZmqConsumerStateTable(db, tableName, *zmqServer, 65536, pri), this, tableName)); + addExecutor(new ZmqConsumer(new ZmqConsumerStateTable(db, tableName, *zmqServer, gBatchSize, pri), this, tableName)); } else {