-
Notifications
You must be signed in to change notification settings - Fork 29k
[SPARK-53999][CORE] Native KQueue Transport support on BSD/MacOS #52703
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
Conversation
| return switch (mode) { | ||
| case NIO -> new NioEventLoopGroup(numThreads, threadFactory); | ||
| case EPOLL -> new EpollEventLoopGroup(numThreads, threadFactory); | ||
| case KQUEUE -> new KQueueEventLoopGroup(numThreads, threadFactory); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a deprecated API usage.
Of course, we can fix it uniformly in a separate pr
|
@yaooqinn Does this test pass on your Mac? |
|
+1, LGTM. Thank you, @yaooqinn , @LuciferYang , @sarutak . Merged to master for Apache Spark 4.1.0-preview3. I manually verified on my Mac. It works. |
|
I confirmed this test passes on my clean environment. |
|
No problem at all, @sarutak . Thank you for letting us know. 😄 |
|
Thank you @LuciferYang @sarutak @dongjoon-hyun |
### What changes were proposed in this pull request? Support native kqueue transport on BSD/MacOS for `celeborn.<module>.io.mode`. Backport: - apache/spark#52703 - apache/spark#52724 ### Why are the changes needed? Netty provides the following platform specific JNI transports for [native transports](https://netty.io/wiki/native-transports.html): - Linux (since 4.0.16) - MacOS/BSD (since 4.1.11) These JNI transports add features specific to a particular platform, generate less garbage, and generally improve performance when compared to the NIO based transport. ### Does this PR introduce _any_ user-facing change? Change the default value of `celeborn.<module>.io.mode` from `NIO` to `EPOLL` if epoll mode is available, from `NIO` to `KQUEUE` if kqueue mode is available, falling back to `NIO` otherwise. ### How was this patch tested? CI. Closes #3518 from SteNicholas/CELEBORN-2185. Authored-by: SteNicholas <[email protected]> Signed-off-by: SteNicholas <[email protected]>
### What changes were proposed in this pull request? This PR adds Native KQUEUE via JNI support for transport, such as shuffle, file, and rpc procedures ### Why are the changes needed? Feature parity between Linux and MacOS/BSD platforms ### Does this PR introduce _any_ user-facing change? Yes, a new option for io.mode ### How was this patch tested? new unit tests ### Was this patch authored or co-authored using generative AI tooling? no Closes apache#52703 from yaooqinn/SPARK-53999. Authored-by: Kent Yao <[email protected]> Signed-off-by: Dongjoon Hyun <[email protected]>
What changes were proposed in this pull request?
This PR adds Native KQUEUE via JNI support for transport, such as shuffle, file, and rpc procedures
Why are the changes needed?
Feature parity between Linux and MacOS/BSD platforms
Does this PR introduce any user-facing change?
Yes, a new option for io.mode
How was this patch tested?
new unit tests
Was this patch authored or co-authored using generative AI tooling?
no