Skip to content

Opt rdma flags#3300

Open
randomkang wants to merge 2 commits into
apache:masterfrom
randomkang:opt_rdma_flags
Open

Opt rdma flags#3300
randomkang wants to merge 2 commits into
apache:masterfrom
randomkang:opt_rdma_flags

Conversation

@randomkang
Copy link
Copy Markdown
Contributor

@randomkang randomkang commented May 17, 2026

What problem does this PR solve?

Opt the performance of rdma, the bandwith of single qp can be can be increased from 7GB/s to 15GB/s.

What is changed and the side effects?

Changed:

Side effects:

  • Performance effects:

  • Breaking backward compatibility:


Check List:

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aims to improve RDMA throughput by adjusting the access flags used during memory registration, enabling relaxed ordering to reduce ordering overhead in the data path.

Changes:

  • Update the dynamically-loaded ibv_reg_mr function pointer signature to take an int access mask.
  • Register RDMA memory with IBV_ACCESS_RELAXED_ORDERING in both the internal block-pool path and the public RegisterMemoryForRdma API.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

// Register the memory as callback in block_pool
// The thread-safety should be guaranteed by the caller
ibv_mr* mr = IbvRegMr(g_pd, buf, size, IBV_ACCESS_LOCAL_WRITE);
ibv_mr* mr = IbvRegMr(g_pd, buf, size, IBV_ACCESS_LOCAL_WRITE | IBV_ACCESS_RELAXED_ORDERING);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some hardware devices may not support IBV_ACCESS_RELAXED_ORDERING. Could a runtime checking mechanism be implemented?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

如果 mr = IbvRegMr(g_pd, buf, size, IBV_ACCESS_LOCAL_WRITE | IBV_ACCESS_RELAXED_ORDERING);
就执行 mr = IbvRegMr(g_pd, buf, size, IBV_ACCESS_LOCAL_WRITE);


uint32_t RegisterMemoryForRdma(void* buf, size_t len) {
ibv_mr* mr = IbvRegMr(g_pd, buf, len, IBV_ACCESS_LOCAL_WRITE);
ibv_mr* mr = IbvRegMr(g_pd, buf, len, IBV_ACCESS_LOCAL_WRITE |IBV_ACCESS_RELAXED_ORDERING);

uint32_t RegisterMemoryForRdma(void* buf, size_t len) {
ibv_mr* mr = IbvRegMr(g_pd, buf, len, IBV_ACCESS_LOCAL_WRITE);
ibv_mr* mr = IbvRegMr(g_pd, buf, len, IBV_ACCESS_LOCAL_WRITE |IBV_ACCESS_RELAXED_ORDERING);
@wwbmmm wwbmmm requested a review from yanglimingcn May 18, 2026 05:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants