From dd2b56b71cce2a8d280cf4f10618d53e86a1cb55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E5=8E=BB=E5=B9=BD=E5=A2=A8?= <43802771+fengquyoumo@users.noreply.github.com> Date: Tue, 14 Jan 2025 09:39:07 +0800 Subject: [PATCH] [TransferEngine] Correct the count of slice_quque_ in rdma/worker_pool, remove the repeated check for overlap (#79) * correct the count of slice_queue_, although it has no adverse effects Signed-off-by: fengquyoumo <1455117463@qq.com> * The overlap check in rdma_transport is repeat with checkOverlap in TransferEngine::registerLocalMemory which is better Signed-off-by: fengquyoumo <1455117463@qq.com> --------- Signed-off-by: fengquyoumo <1455117463@qq.com> --- .../transport/rdma_transport/rdma_context.cpp | 22 ------------------- .../transport/rdma_transport/worker_pool.cpp | 2 +- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/mooncake-transfer-engine/src/transport/rdma_transport/rdma_context.cpp b/mooncake-transfer-engine/src/transport/rdma_transport/rdma_context.cpp index 2a1d37e1..9ed3d079 100644 --- a/mooncake-transfer-engine/src/transport/rdma_transport/rdma_context.cpp +++ b/mooncake-transfer-engine/src/transport/rdma_transport/rdma_context.cpp @@ -193,28 +193,6 @@ int RdmaContext::deconstruct() { } int RdmaContext::registerMemoryRegion(void *addr, size_t length, int access) { - // Currently if the memory region overlaps with existing one, return - // negative value Or Merge it with existing mr? - { - RWSpinlock::ReadGuard guard(memory_regions_lock_); - for (const auto &entry : memory_region_list_) { - bool start_overlapped = entry->addr <= addr && - addr < (char *)entry->addr + entry->length; - bool end_overlapped = - entry->addr < (char *)addr + length && - (char *)addr + length <= (char *)entry->addr + entry->length; - bool covered = - addr <= entry->addr && - (char *)entry->addr + entry->length <= (char *)addr + length; - if (start_overlapped || end_overlapped || covered) { - LOG(ERROR) << "Failed to register memory " << addr - << ": overlap existing memory regions"; - return ERR_ADDRESS_OVERLAPPED; - } - } - } - - // No overlap, continue ibv_mr *mr = ibv_reg_mr(pd_, addr, length, access); if (!mr) { PLOG(ERROR) << "Failed to register memory " << addr; diff --git a/mooncake-transfer-engine/src/transport/rdma_transport/worker_pool.cpp b/mooncake-transfer-engine/src/transport/rdma_transport/worker_pool.cpp index f48d7f99..12fe3bc2 100644 --- a/mooncake-transfer-engine/src/transport/rdma_transport/worker_pool.cpp +++ b/mooncake-transfer-engine/src/transport/rdma_transport/worker_pool.cpp @@ -147,7 +147,7 @@ int WorkerPool::submitPostSend( slice_queue_lock_[shard_id].lock(); for (auto &slice : slice_list_map[shard_id]) slice_queue_[shard_id][slice->peer_nic_path].push_back(slice); - slice_queue_count_[shard_id].fetch_add(submitted_slice_count, + slice_queue_count_[shard_id].fetch_add(slice_list_map[shard_id].size(), std::memory_order_relaxed); slice_queue_lock_[shard_id].unlock(); }