valkey-io / valkey-doc

Other
17 stars 25 forks source link

Introduce Valkey Over RDMA protocol #123

Open pizhenwei opened 1 month ago

pizhenwei commented 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:

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):

zuiderkwast commented 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):

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"

pizhenwei commented 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):

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:

So I prefer to keep the RDMA.md as detailed as possible.

pizhenwei commented 1 month ago

LGTM. All nits. Thanks @pizhenwei!

Thanks for your suggestions! Several changes in the new version as you suggested.

pizhenwei commented 1 month ago

Hi @zuiderkwast @PingXie @madolson The total changes between and the previous version is this URL.

zuiderkwast commented 1 month ago

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.

pizhenwei commented 1 month ago

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.

pizhenwei commented 1 month ago

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!

pizhenwei commented 3 weeks ago

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.

pizhenwei commented 2 weeks ago

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!

zuiderkwast commented 2 weeks ago

@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.