Open pizhenwei opened 1 month ago
RDMA is the abbreviation of remote direct memory access. It is a technology that enables computers in a network to exchange data in the main memory without involving the processor, cache, or operating system of either computer. This means RDMA has a better performance than TCP, the test results show Valkey Over RDMA has a ~2.5X QPS and lower latency.
In recent years, RDMA gets popular in the data center, especially RoCE(RDMA over Converged Ethernet) architecture has been widely used. Cloud Vendors also start to support RDMA instance in order to accelerate networking performance. End-user would enjoy the improvement easily.
Introduce Valkey Over RDMA protocol as a new transport for Valkey. For now, we defined 4 commands:
GetServerFeature & SetClientFeature: the two commands are used to negotiate features for further extension. There is no feature definition in this version. Flow control and multi-buffer may be supported in the future, this needs feature negotiation.
Keepalive
RegisterXferMemory: the heart to transfer the real payload.
The 'TX buffer' and 'RX buffer' are designed by RDMA remote memory with RDMA write/write with imm, it's similar to several mechanisms introduced by papers(but not same):
Socksdirect: datacenter sockets can be fast and compatible https://dl.acm.org/doi/10.1145/3341302.3342071
LITE Kernel RDMA Support for Datacenter Applications https://dl.acm.org/doi/abs/10.1145/3132747.3132762
FaRM: Fast Remote Memory https://www.usenix.org/system/files/conference/nsdi14/nsdi14-paper-dragojevic.pdf
This text is useful to add in the documentation, at least some of it, and the links?
When this is merged, users will not find the description of the PR. :-) I think the PR description can just be "Add documentation for the RDMA feature added in https://github.com/valkey-io/valkey/pull/477"
RDMA is the abbreviation of remote direct memory access. It is a technology that enables computers in a network to exchange data in the main memory without involving the processor, cache, or operating system of either computer. This means RDMA has a better performance than TCP, the test results show Valkey Over RDMA has a ~2.5X QPS and lower latency. In recent years, RDMA gets popular in the data center, especially RoCE(RDMA over Converged Ethernet) architecture has been widely used. Cloud Vendors also start to support RDMA instance in order to accelerate networking performance. End-user would enjoy the improvement easily. Introduce Valkey Over RDMA protocol as a new transport for Valkey. For now, we defined 4 commands:
- GetServerFeature & SetClientFeature: the two commands are used to negotiate features for further extension. There is no feature definition in this version. Flow control and multi-buffer may be supported in the future, this needs feature negotiation.
- Keepalive
- RegisterXferMemory: the heart to transfer the real payload.
The 'TX buffer' and 'RX buffer' are designed by RDMA remote memory with RDMA write/write with imm, it's similar to several mechanisms introduced by papers(but not same):
- Socksdirect: datacenter sockets can be fast and compatible https://dl.acm.org/doi/10.1145/3341302.3342071
- LITE Kernel RDMA Support for Datacenter Applications https://dl.acm.org/doi/abs/10.1145/3132747.3132762
- FaRM: Fast Remote Memory https://www.usenix.org/system/files/conference/nsdi14/nsdi14-paper-dragojevic.pdf
This text is useful to add in the documentation, at least some of it, and the links?
When this is merged, users will not find the description of the PR. :-) I think the PR description can just be "Add documentation for the RDMA feature added in valkey-io/valkey#477"
Fine, I take the background part and paper links to the RDMA.md
in the new version. But I still remain these in the commit message because:
git blame xxx
and git show xxx
.So I prefer to keep the RDMA.md as detailed as possible.
LGTM. All nits. Thanks @pizhenwei!
Thanks for your suggestions! Several changes in the new version as you suggested.
Hi @zuiderkwast @PingXie @madolson The total changes between and the previous version is this URL.
Hi @zuiderkwast @PingXie @madolson The total changes between and the previous version is this URL.
Thanks. In the future you can just add more commits in the same PR. I makes review easier. We squash-merge PRs anyway.
Hi @zuiderkwast @PingXie @madolson The total changes between and the previous version is this URL.
Hi @zuiderkwast @PingXie @madolson I'm looking forward to seeing your suggestions for the next step.
Hi @zuiderkwast @PingXie @madolson The total changes between and the previous version is this URL.
Hi @zuiderkwast @PingXie @madolson I'm looking forward to seeing your suggestions for the next step.
@madolson PING!
Hi @zuiderkwast @PingXie @madolson The total changes between and the previous version is this URL.
Hi @zuiderkwast @PingXie @madolson I'm looking forward to seeing your suggestions for the next step.
@madolson PING!
Hi @madolson , Did I misunderstand anything? Please let me know to move forward.
Hi @zuiderkwast @PingXie @madolson The total changes between and the previous version is this URL.
Hi @zuiderkwast @PingXie @madolson I'm looking forward to seeing your suggestions for the next step.
@madolson PING!
Hi @madolson , Did I misunderstand anything? Please let me know to move forward.
@madolson PING!
@pizhenwei We can first make a decision about the feature https://github.com/valkey-io/valkey/pull/477. If we decide to accept it, then I don't think there are any major problems with the docs.
We, the maintainers team, have been very busy with many features to discuss.
RDMA is the abbreviation of remote direct memory access. It is a technology that enables computers in a network to exchange data in the main memory without involving the processor, cache, or operating system of either computer. This means RDMA has a better performance than TCP, the test results show Valkey Over RDMA has a ~2.5X QPS and lower latency.
In recent years, RDMA gets popular in the data center, especially RoCE(RDMA over Converged Ethernet) architecture has been widely used. Cloud Vendors also start to support RDMA instance in order to accelerate networking performance. End-user would enjoy the improvement easily.
Introduce Valkey Over RDMA protocol as a new transport for Valkey. For now, we defined 4 commands:
The 'TX buffer' and 'RX buffer' are designed by RDMA remote memory with RDMA write/write with imm, it's similar to several mechanisms introduced by papers(but not same):