Skip to content

v4.0.x: RDMA OSC: initialize segment memory before registering the segment #5923

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

hjelmn
Copy link
Member

@hjelmn hjelmn commented Oct 16, 2018

Signed-off-by: Joseph Schuchart [email protected]
(cherry picked from commit d9dcdfd)
Signed-off-by: Nathan Hjelm [email protected]

Signed-off-by: Joseph Schuchart <[email protected]>
(cherry picked from commit d9dcdfd)
Signed-off-by: Nathan Hjelm <[email protected]>
@hjelmn hjelmn added this to the v4.0.0 milestone Oct 16, 2018
@hjelmn hjelmn requested a review from jsquyres October 16, 2018 21:14
@hjelmn
Copy link
Member Author

hjelmn commented Oct 16, 2018

@bwbarrett Don't hold up v4.0.0 for this. Can wait for v4.0.1 if v4.0.0 is imminent.

@jsquyres Looks good to me. This just ensures the memory is touched by the owning MPI process before its registered.

@jsquyres jsquyres changed the title RDMA OSC: initialize segment memory before registering the segment v4.0.x: RDMA OSC: initialize segment memory before registering the segment Oct 17, 2018
@jsquyres
Copy link
Member

According to #5921, the goal for this PR is to achieve NUMA locality. Do we really need to memset() the entire window to achieve NUMA locality? Couldn't we do something a bit lighter-weight? I ask because I'm concerned about the performance for large windows.

I know you can use first touch, but it's possible that a naieve approach (e.g., touch the first byte in each page) would have the same end effect of setting locality, yet have less of a performance impact. I'm not 100% sure of that, though, since touching the first byte of a page may cause a paging action, anyway...?

Additionally, hwloc may be able to set the locality -- perhaps before you allocate. Check out https://www.open-mpi.org/projects/hwloc/doc/v2.0.2/a00155.php.

@devreal
Copy link
Contributor

devreal commented Oct 22, 2018

@jsquyres Good point. I meant to perform some measurements on the window allocation performance this week (our system is currently in maintenance though). I would expect that the page allocation is more expensive than the actual memset (I might wrong) but touching the first bytes of the page is certainly an option. I will look into it.

@jsquyres
Copy link
Member

@devreal I don't know if the page allocation actually brings the pages in to real memory. It may also be suitable to use hwloc to alloc the pages exactly where you want them...?

@devreal
Copy link
Contributor

devreal commented Oct 22, 2018

The way I understand the documentation you linked, hwloc_set_area_membind is the only viable option since the memory is already allocated as shared memory segment. I will give that a try and come back with some measurements on the allocation overhead in #5915.

@jsquyres
Copy link
Member

Ah, good point that this is allocated as shared memory. Duh.

Ok, I guess it's just testing / reading code to see if there's any meaningful difference between touching 1 byte on each page vs. memset() of the entire area.

@gpaulsen gpaulsen modified the milestones: v4.0.0, v4.0.1 Oct 22, 2018
@gpaulsen
Copy link
Member

Moving to v4.0.1

@jsquyres
Copy link
Member

See #5969 -- there may be a problem with this PR...?

Copy link
Member

@jsquyres jsquyres left a comment

Choose a reason for hiding this comment

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

Per #5969, it looks like this PR isn't ready yet.

@devreal
Copy link
Contributor

devreal commented Nov 29, 2018

@jsquyres Yes, I think we can close this PR, I haven't had time to work on this again but I think there might be a better solution.

@jsquyres
Copy link
Member

@devreal Cool. I'll close this PR. Feel free to re-open / open a new one with whatever comes out of #5969. Thanks!

@jsquyres jsquyres closed this Nov 29, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants