[GH-ISSUE #813] 关于VRAM的RDMA性能测试 #249

Closed
opened 2026-10-29 21:11:30 +00:00 by bsakaguchi · 3 comments
Owner

Originally created by @XQZ1120 on GitHub (Sep 5, 2025).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/813

在测试RDMA过程中,我有两处疑问:

1、官方文档run-examples.md中指明,如果要开启GDR(GPU Direct RDMA)功能,需要在编译时指定DUSE_CUDA=ON,默认安装的情况下GDR则是关闭的。
我使用 pip install mooncake-transfer-engine 进行了安装,所以GDR默认应该是无法使用的。
但在这种情况下,我发现依然能够通过register_buffer方法注册一段VRAM地址,示例代码如下:

DEVICE = "cuda:2"
recv_buffer = torch.randn(DATA_SHAPE, dtype=DTYPE).to(DEVICE)
recv_buffer_ptr = torch.tensor(recv_buffer.data_ptr(), dtype=torch.uint64, device=DEVICE)
retcode = store.register_buffer(recv_buffer_ptr, buffer_size)

并且这种方式也很高效地完成了RDMA传输:使用单张400Gbps的RDMA网卡mlx5_2,吞吐能达到42GB/s左右,效果很OK。
我想问的是,我的这种做法与GDR有什么区别呢? GDR默认应该并没有开启才对?

2、接着上面,我想进一步测试GPUtoCPU场景下的RDMA传输性能,单RDMA卡(mlx5_2)可达到42GB/s左右。
但当我扩展到4张RDMA卡(mlx5_0,mlx5_2,mlx5_3,mlx5_4)时,效果就不理想了:总吞吐只有30GB/s,比单卡还要差。
我认为应该是不同GPU与RNIC之间存在亲和性所导致的,mlx5_0,mlx5_2,mlx5_3,mlx5_4中,只有mlx5_2与GPU2为PIX,其他均为NODE。
我想求证一下,多RDMA卡聚合传输对于GPU来说,是否不如单RDMA卡?能否改善?

Originally created by @XQZ1120 on GitHub (Sep 5, 2025). Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/813 在测试RDMA过程中,我有两处疑问: 1、官方文档run-examples.md中指明,如果要开启GDR(GPU Direct RDMA)功能,需要在编译时指定DUSE_CUDA=ON,默认安装的情况下GDR则是关闭的。 我使用 pip install mooncake-transfer-engine 进行了安装,所以GDR默认应该是无法使用的。 但在这种情况下,我发现依然能够通过register_buffer方法注册一段VRAM地址,示例代码如下: DEVICE = "cuda:2" recv_buffer = torch.randn(DATA_SHAPE, dtype=DTYPE).to(DEVICE) recv_buffer_ptr = torch.tensor(recv_buffer.data_ptr(), dtype=torch.uint64, device=DEVICE) retcode = store.register_buffer(recv_buffer_ptr, buffer_size) 并且这种方式也很高效地完成了RDMA传输:使用单张400Gbps的RDMA网卡mlx5_2,吞吐能达到42GB/s左右,效果很OK。 我想问的是,我的这种做法与GDR有什么区别呢? GDR默认应该并没有开启才对? 2、接着上面,我想进一步测试GPUtoCPU场景下的RDMA传输性能,单RDMA卡(mlx5_2)可达到42GB/s左右。 但当我扩展到4张RDMA卡(mlx5_0,mlx5_2,mlx5_3,mlx5_4)时,效果就不理想了:总吞吐只有30GB/s,比单卡还要差。 我认为应该是不同GPU与RNIC之间存在亲和性所导致的,mlx5_0,mlx5_2,mlx5_3,mlx5_4中,只有mlx5_2与GPU2为PIX,其他均为NODE。 我想求证一下,多RDMA卡聚合传输对于GPU来说,是否不如单RDMA卡?能否改善?
bsakaguchi 2026-10-29 21:11:30 +00:00
Author
Owner

@alogfans commented on GitHub (Sep 8, 2025):

  1. GPU Direct RDMA的使用方法与常规RDMA完全一致,这意味着在不需要重新构建二进制包的前提下,仍可以使用标准的 ibv_ API 实现数据跨节点传递。不过由于 -DUSE_CUDA=ON 没有开启,因此关于 CUDA 的拓扑检测与自动选择功能没有开启,在某些场景下可能不能取得最佳性能。
  2. 确认是 PCIe 亲和性的问题。目前的实现中每张卡被调度的概率是均等的,因此实际传输会受限于最远的卡的性能。
<!-- gh-comment-id:3264283883 --> @alogfans commented on GitHub (Sep 8, 2025): 1. GPU Direct RDMA的使用方法与常规RDMA完全一致,这意味着在不需要重新构建二进制包的前提下,仍可以使用标准的 ibv_ API 实现数据跨节点传递。不过由于 -DUSE_CUDA=ON 没有开启,因此关于 CUDA 的拓扑检测与自动选择功能没有开启,在某些场景下可能不能取得最佳性能。 2. 确认是 PCIe 亲和性的问题。目前的实现中每张卡被调度的概率是均等的,因此实际传输会受限于最远的卡的性能。
Author
Owner

@github-actions[bot] commented on GitHub (Jun 27, 2026):

This issue has had no activity for 90 days and will be closed in 7 days if there is no further activity. Please comment or react if it should stay open.

<!-- gh-comment-id:4815209803 --> @github-actions[bot] commented on GitHub (Jun 27, 2026): This issue has had no activity for 90 days and will be closed in 7 days if there is no further activity. Please comment or react if it should stay open.
Author
Owner

@github-actions[bot] commented on GitHub (Jul 5, 2026):

Closing due to 3 months of inactivity. If this is still relevant, please comment and we can reopen.

<!-- gh-comment-id:4884823900 --> @github-actions[bot] commented on GitHub (Jul 5, 2026): Closing due to 3 months of inactivity. If this is still relevant, please comment and we can reopen.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/Mooncake#249
No description provided.