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

IPC term buffer NUMA node #1429

Open
chrisejones opened this issue Sep 14, 2021 · 6 comments
Open

IPC term buffer NUMA node #1429

chrisejones opened this issue Sep 14, 2021 · 6 comments

Comments

@chrisejones
Copy link

Hi, we have a multi-socket box and have two processes using Aeron IPC on a different numa node to where the media driver is running. The IPC term buffers are ending up on the media driver node according to /proc//numa_maps.

Do we need a separate media driver on the other socket to avoid this? Is there a way that we could customise this in the channel string maybe? So that the memory can be allocated on a specific NUMA node.

@mjpt777
Copy link
Collaborator

mjpt777 commented Sep 14, 2021

If you want to keep the mapped files on the same node then you need a media driver on that node. The media driver will be the first touch on the memory and thus on its node. From the Java driver we have no control. We may have options for the C driver if you would like us to look into that?

@chrisejones
Copy link
Author

Yes potentially. We're not currently using the C media driver, but we could look to migrate.

From Java could you do something with hugetlbfs? Have different mounts for different numa nodes and then have a way to customise which is used for a particular channel?

I'll do a bit more investigation on our end to see what impact this is having and get back to you on whether we'd be interested in having this in the C media driver.

@mjpt777
Copy link
Collaborator

mjpt777 commented Sep 14, 2021

hugetlbfs may be an option for Linux. We can use some support time to look into this.

@chrisejones
Copy link
Author

That would be great, thanks. We are using Linux.

@mjpt777
Copy link
Collaborator

mjpt777 commented Sep 16, 2021

On Linux you could try starting the media driver using numactl and putting the threads on on socket and the memory on another. The issue is not just the log buffer, you also need to consider the CnC file which has the counters for tracking progress.

numactl -N 1 -m 0 media-driver

This will result in cache traffic transiting the node interconnects as the media driver accesses memory.

An alternative solution would be to run a media driver focused on IPC support on the required node and set the threading mode to SHARED as the network side will be doing nothing.

@chrisejones
Copy link
Author

Ah, I see. I didn't think about the CnC file. I think we'll do as you suggest and run a separate media driver. Thanks for your help.

pull bot pushed a commit that referenced this issue Feb 25, 2023
Makes the keepalive timeout exception consistent with implementation in aeron_client_conductor_check_liveness
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

No branches or pull requests

2 participants