Skip to content

ARTEMIS-3163 Support for Netty IO_URING transport #5774

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

AntonRoskvist
Copy link
Contributor

This is a continuation of #5296 using a branch from @jbertram that's using Netty 4.2. (Netty support in a separate commit)

Setting this as a separate PR as it'd dependent on having the Netty branch merged first and as far as I can tell there is at least one more issue remaining for Netty 4.2, where some tests under karaf-client-integration-tests are currently failing.
I think it's because artemis-features cannot build properly as at least one dependency requires a lower version of Netty:
missing requirement [org.apache.qpid.jms.client/1.13.0] osgi.wiring.package; filter:="(&(osgi.wiring.package=io.netty.bootstrap)(version>=4.1.0)(!(version>=4.2.0)))"

Regardless, use of the Io_Uring transport is showing a lot of promise. Running tests against a broker with default configuration, only setting useEpoll vs useIoUring and using the following perf client commands:
epoll:
bin/artemis perf client --warmup 60 --duration 300 --max-pending 100 --persistent --url "tcp://localhost:61616?confirmationWindowSize=20000" --consumer-url "tcp://localhost:61616" --show-latency --consumers 2 --num-destinations 30 --hdr broker-uring_client-uring_30-destinations.hdr queue://EPOLL.EPOLL

uring:
bin/artemis perf client --warmup 60 --duration 300 --max-pending 100 --persistent --url "tcp://localhost:61616?confirmationWindowSize=20000&useIoUring=true" --consumer-url "tcp://localhost:61616?useIoUring=true" --show-latency --consumers 2 --num-destinations 30 --hdr broker-epoll_client-epoll_30-destinations_faster.hdr queue://URING.URING

I can see that IoUring transfers about 12% more messages in the given time and they have the following latency percentiles:
Epoll:
epoll_latency

IoUring:
uring_latency

The tests are run on my work laptop so I'd take those results as a rough indicator and nothing more though.

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.

2 participants