[FEATURE] Introduce the unified memory pool for less GC and better management
- Dominant language
- Java
- Stars
- 454
- Forks
- 172
- Avg merge
- 5d 17h
- Merged PRs (30d)
- 5
Description
### Code of Conduct
- [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
### Search before asking
- [X] I have searched in the [issues](https://github.com/apache/incubator-uniffle/issues?q=is%3Aissue) and found no similar issues.
### Describe the feature
Currently, shuffle data is stored in a byte array created by Grpc in a single transfer. While this approach works well for small data, it can cause excessive garbage collection (GC) for large data.
By switching to Netty, we can avoid GC issues caused by having too many on-heap objects, as all data will be stored off-heap. However, if we use Netty's bytebuf, it may not be clear when memory is freed.
In any case, a unified memory pool is necessary for the shuffle server.
### Motivation
_No response_
### Describe the solution
_No response_
### Additional context
_No response_
### Are you willing to submit PR?
- [X] Yes I am willing to submit a PR!
Contributor guide
Research direction
No files, tests, or entry points are named. Start by tracing how the shuffle server receives and stores large transfers through gRPC, then examine the proposed Netty off-heap path and define ownership and release rules for a unified memory pool. Done means the shuffle server has unified memory management without the described excessive GC or unclear buffer lifetime.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- grpc, java
- Domain
- backend, distributed-systems, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100