apache / apache/uniffle

[FEATURE] Introduce the unified memory pool for less GC and better management

Open
#810 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.