From a311a353ac464250af0276cb4dd7d9dc7159414c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:18:32 +0000 Subject: [PATCH 1/2] Initial plan From b12a40e3fae442dc5728b946559a0ac30e678a28 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:36:50 +0000 Subject: [PATCH 2/2] Fix SendFlow hang: skip 0-byte QPs and relax send-size check in notify_sender_sending_finished Co-authored-by: tianhao909 <48342395+tianhao909@users.noreply.github.com> --- .../astra-sim/network_frontend/ns3/entry.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/astra-sim-alibabacloud/astra-sim/network_frontend/ns3/entry.h b/astra-sim-alibabacloud/astra-sim/network_frontend/ns3/entry.h index cb43eb8c..70f58f97 100644 --- a/astra-sim-alibabacloud/astra-sim/network_frontend/ns3/entry.h +++ b/astra-sim-alibabacloud/astra-sim/network_frontend/ns3/entry.h @@ -112,6 +112,10 @@ void SendFlow(int src, int dst, uint64_t maxPacketCount, for(int index = 0 ;index<_QPS_PER_CONNECTION_;index++){ uint64_t real_PacketCount = min(PacketCount,leftPacketCount); leftPacketCount-=real_PacketCount; + if(real_PacketCount == 0) { + NcclLog->writeLog(NcclLogLevel::DEBUG," [SendFlow] skipping 0-byte QP index %d src %d dst %d flow_id %d",index,src,dst,request->flowTag.current_flow_id); + continue; + } uint32_t port = portNumber[src][dst]++; { #ifdef NS3_MTP @@ -137,7 +141,6 @@ void SendFlow(int src, int dst, uint64_t maxPacketCount, } send_lat *= 1000; flow_input.idx++; - if(real_PacketCount == 0) real_PacketCount = 1; MockNcclLog* NcclLog = MockNcclLog::getInstance(); NcclLog->writeLog(NcclLogLevel::DEBUG," [Packet sending event] %dSendFlow to %d channelid: %d flow_id %d srcip %d dstip %d size: %llu at the tick: %d",src,dst,tag,flow_id,serverAddress[src],serverAddress[dst],maxPacketCount,AstraSim::Sys::boostedTick()); NcclLog->writeLog(NcclLogLevel::DEBUG," request->flowTag [Packet sending event] %dSendFlow to %d tag_id: %d flow_id %d srcip %d dstip %d size: %llu at the tick: %d",request->flowTag.sender_node,request->flowTag.receiver_node,request->flowTag.tag_id,request->flowTag.current_flow_id,serverAddress[src],serverAddress[dst],maxPacketCount,AstraSim::Sys::boostedTick()); @@ -249,7 +252,7 @@ void notify_sender_sending_finished(int sender_node, int receiver_node, task1 t2 = sentHash[make_pair(tag, make_pair(sender_node, receiver_node))]; AstraSim::SendPacketEventHandlerData* ehd = (AstraSim::SendPacketEventHandlerData*) t2.fun_arg; ehd->flowTag=flowTag; - if (t2.count == message_size) { + if (message_size >= t2.count) { sentHash.erase(make_pair(tag, make_pair(sender_node, receiver_node))); if (nodeHash.find(make_pair(sender_node, 0)) == nodeHash.end()) { nodeHash[make_pair(sender_node, 0)] = message_size;