Skip to content

[Java] New term buffer cleanup logic #1775

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

Draft
wants to merge 63 commits into
base: master
Choose a base branch
from

Conversation

vyazelenko
Copy link
Contributor

This PR contains the following changes:

  • Cleanup term buffers in fixed 4KB chunks.
  • Prevent pub-lmt advancing too much ahead to prevent it intersecting with a dirty term buffer:
    • pub-lmt can never end up in a dirty term.
    • pub-lmt is not allowed to be in a term adjacent to a dirty term if the clean position points to the start of a dirty term.
  • Do not skip a term when cleaning a PublicationImage.
  • Only update pub-lmt on every trip gain, i.e. every 1/8th of a term or one full publication window (whichever happens first).

… memory does not get re-ordered with the `cleanupPosition` assignment.
…d up of an entire term before cleaning starts.
…e experience by the driver conductor thread. Use clean position to move publication limit forward.
…ancement so that it does not cross clean position's term.
… 1/8th of a term buffer or publication window (whichever is smaller). The reduced update frequency means less cache misses on the publisher side.
…ng data from a dirty buffer. Clean buffer in fixed 4KB chunks.
@vyazelenko vyazelenko requested a review from mikeb01 April 4, 2025 19:27
#include <stdint.h>
#include "util/aeron_bitutil.h"

#define AERON_TERM_CLEANER_TERM_CLEANUP_BLOCK_LENGTH (4096u)
Copy link
Contributor

Choose a reason for hiding this comment

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

Use:

#define AERON_TERM_CLEANER_TERM_CLEANUP_BLOCK_LENGTH UINT32_C(4096)

To declare this as unsigned and use the appropriate system dependent suffix.

@vyazelenko vyazelenko requested a review from mikeb01 April 16, 2025 20:13
@vyazelenko vyazelenko marked this pull request as draft April 28, 2025 12:32
…provements

# Conflicts:
#	aeron-driver/src/main/c/aeron_ipc_publication.c
#	aeron-driver/src/main/c/aeron_network_publication.c
#	aeron-driver/src/main/java/io/aeron/driver/Configuration.java
#	aeron-driver/src/main/java/io/aeron/driver/IpcPublication.java
#	aeron-driver/src/main/java/io/aeron/driver/NetworkPublication.java
#	aeron-driver/src/test/java/io/aeron/driver/MediaDriverContextTest.java
#	aeron-driver/src/test/java/io/aeron/driver/NetworkPublicationTest.java
…provements

# Conflicts:
#	.github/workflows/ci.yml
#	aeron-driver/src/main/c/aeron_publication_image.c
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