dubbo icon indicating copy to clipboard operation
dubbo copied to clipboard

Introduce I/O URing to netty4 remoting

Open dao-jun opened this issue 2 years ago • 6 comments

What is the purpose of the change

Support I/O Uring

Brief changelog

Verifying this change

Checklist

  • [x] Make sure there is a GitHub_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GitHub issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
  • [ ] Each commit in the pull request should have a meaningful subject line and body.
  • [ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • [ ] Check if is necessary to patch to Dubbo 3 if you are work on Dubbo 2.7
  • [ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
  • [ ] Add some description to dubbo-website project if you are requesting to add a feature.
  • [ ] GitHub Actions works fine on your own branch.
  • [ ] If this contribution is large, please follow the Software Donation Guide.

dao-jun avatar Nov 22 '23 19:11 dao-jun

What are the advantages of I/O URing?

AlbumenJ avatar Nov 29 '23 13:11 AlbumenJ

What are the advantages of I/O URing?

Please see: https://man.archlinux.org/man/io_uring.7.en

dao-jun avatar Dec 02 '23 12:12 dao-jun

What are the advantages of I/O URing?

Please see: https://man.archlinux.org/man/io_uring.7.en

This is a comparison from the kernel level. I wonder what benefit it would bring to Dubbo?

AlbumenJ avatar Dec 04 '23 02:12 AlbumenJ

What are the advantages of I/O URing?

Please see: https://man.archlinux.org/man/io_uring.7.en

This is a comparison from the kernel level. I wonder what benefit it would bring to Dubbo?

Generally speaking, it provides higher-performance, I/O uring is an async I/O mechanism, unlike select/poll/epoll_wait, it reduces the number of system calls.

cq in I/O uring is user mode memory, so reading to cq will not cause the current thread to trapped into kernel mode.

dao-jun avatar Dec 06 '23 03:12 dao-jun

What are the advantages of I/O URing?

Please see: https://man.archlinux.org/man/io_uring.7.en

This is a comparison from the kernel level. I wonder what benefit it would bring to Dubbo?

Generally speaking, it provides higher-performance, I/O uring is an async I/O mechanism, unlike select/poll/epoll_wait, it reduces the number of system calls.

cq in I/O uring is user mode memory, so reading to cq will not cause the current thread to trapped into kernel mode.

Can you pls provide a benchmark result of it?

AlbumenJ avatar Dec 08 '23 02:12 AlbumenJ

@AlbumenJ I don't have a linux machine, but I found this: https://github.com/netty/netty/issues/10622#issuecomment-701241587

dao-jun avatar Dec 20 '23 07:12 dao-jun