Skip to content
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

Artemis 3163 #15

Open
wants to merge 3 commits into
base: io_uring_incubator
Choose a base branch
from

Conversation

michaelandrepearce
Copy link

No description provided.

Remove reflection and use the netty binaries just as we do with epoll and kqueue
Add documents ensuring it has a clear note about incubator status
Copy link
Owner

@franz1981 franz1981 left a comment

Choose a reason for hiding this comment

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

LGTM thanks bud!
Just a side note: our default policy of using 3 * number of cores as netty thread pool size can be quite dangerous with IO uring and maybe we should revisit this one too just for this transport

Copy link

@gemmellr gemmellr left a comment

Choose a reason for hiding this comment

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

If the dependency is going to be added as a hard dep and distributed (I dont think it should be) then I definitely think it should have a minimal test added to exercise it. I also think that if it isnt though.

The builds failed due to checkstyle. I also see it is also very out of date, so seems like a rebase is still needed after this (I appreciate why you probably didnt do it here).

Comment on lines +107 to +111
<dependency>
<groupId>io.netty.incubator</groupId>
<artifactId>netty-incubator-transport-native-io_uring</artifactId>
<classifier>${netty-transport-native-io_uring-classifier}</classifier>
</dependency>
Copy link

@gemmellr gemmellr Sep 28, 2021

Choose a reason for hiding this comment

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

I think this should be optional for now until closer to the point its considered non experimental and has more than zero testing. I expect few to use it initially, and those who do can easily add it themselves, so it seems premature to make it a hard dependency for everyone.

Copy link
Author

@michaelandrepearce michaelandrepearce Sep 28, 2021

Choose a reason for hiding this comment

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

Whilst i agree to testing. I disagree with not including the jar. Its behind a feature toggle, by not including it youre making it much tricker for users to test/try and give feedback on. Even myself whilst i can package and deploy to lower envs the apache dist for better real testing, and getting feedback i have to jump through alot of hoops to the point it makes it prohibitive to do that and get that feedback loop if i have to customise by adding jars outside distros

Copy link
Author

Choose a reason for hiding this comment

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

I would imagine it to be the same with softwaremill who run perf tests where they will just take the distro only. Which is one of the main targets we would be asking them to retest with this.

Choose a reason for hiding this comment

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

I dont consider that an issue at this stage. I think its pretty trivial to customise things like this, little different to getting the distribution if thats what you do (many dont). Certainly not a good reason to include it, for me.

@@ -86,6 +86,7 @@
<include>org.apache.commons:commons-dbcp2</include>
<include>org.apache.commons:commons-pool2</include>
<include>io.netty:netty-all</include>
<include>io.netty.incubator:netty-incubator-transport-native-io_uring</include>

Choose a reason for hiding this comment

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

I similarly think its premature to distribute it.

Copy link

Choose a reason for hiding this comment

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

I agree, leave it on a branch till there is a non incubator netty dependency.

@@ -113,7 +115,7 @@
public static final String NIO_ACCEPTOR_TYPE = "NIO";
public static final String EPOLL_ACCEPTOR_TYPE = "EPOLL";
public static final String KQUEUE_ACCEPTOR_TYPE = "KQUEUE";
public static final String IOURING_ACCEPTOR_TYPE = "IO_URING";
public static final String IOURING_ACCEPTOR_TYPE = "IOURING";

Choose a reason for hiding this comment

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

I think the existing name was fine, nicer even. Per the other PR, this doesnt seem to be used for URL config, with the other boolean toggle is, so I'm not sure it matters if it has the underscore, which is actually part of the io_uring name.

>
> @see https://github.com/netty/netty-incubator-transport-io_uring

On supported platforms IO_Uring can be used @see https://en.wikipedia.org/wiki/Io_uring
Copy link

@gemmellr gemmellr Sep 28, 2021

Choose a reason for hiding this comment

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

Supported platforms could be less vague, i.e its Linux (EDIT: which is then mentioned below...it seems superfluous to have both).

I believe the name is simply io_uring rather than IO_Uring (applies here and most other places IO_Uring is used)

@michaelandrepearce
Copy link
Author

michaelandrepearce commented Sep 28, 2021

Will leave with you @franz1981. Upto you if you wish to merge and accept my changes or not.

If it does get merged in with deps and jars then once released i can get it to our pre prod env and get some real use case stats on perf and resource reduction. Rather than just a simulation env.

@franz1981
Copy link
Owner

I'll take some time to decide, because both the points of @gemmellr and @michaelandrepearce are good ones :)

@michaelandrepearce
Copy link
Author

@franz1981 ?

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.

4 participants