On Jun 7, 2013, at 4:57 PM, Jason Gunthorpe <jguntho...@obsidianresearch.com> 
wrote:

>> We talked about this at the MPI Forum this week; it doesn't seem
>> like ODP fixes any MPI problems.
> 
> ODP without 'register all address space' changes the nature of the
> problem, and fixes only one problem.

I agree that pushing all registration issues out of the application and 
(somewhere) into the verbs stack would be a nice solution.

> You do need to cache registrations, and all the tuning parameters (how
> much do I cache, how long do I hold it for, etc, etc) all still apply.
> 
> What goes away (is fixed) is the need for intercepts and the need to
> purge address space from the cache because the backing registration
> has become non-coherent/invalid. Registrations are always
> coherent/valid with ODP.

> This cache, and the associated optimization problem, can never go
> away. With a 'register all of memory' semantic the cache can move into
> the kernel, but the performance implication and overheads are all
> still present, just migrated.

Good summary; and you corrected some of my mistakes -- thanks.

That being said, everyone I've talked to about ODP finds it very, very strange 
that the kernel would keep memory registrations around for memory that is no 
longer part of a process.  Not only does it lead to the "new memory is 
magically already registered" semantic that I find weird, it's just plain *odd* 
for the kernel to maintain state for something that doesn't exist any more.  It 
feels dirty.

Sidenote: I was just informed today that the current way MPI implementations 
implement registration cache coherence (glibc malloc hooks) has been deprecated 
and will be removed from glibc 
(http://sourceware.org/ml/libc-alpha/2011-05/msg00103.html).  This really puts 
on the pressure to find a new / proper solution.

>> What MPI wants is:
>> 
>> 1. verbs for ummunotify-like functionality
>> 2. non-blocking memory registration verbs; poll the cq to know when it has 
>> completed
> 
> To me, ODP with an additional 'register all address space' semantic, plus
> an asynchronous prefetch does both of these for you.
> 
> 1. ummunotify functionality and caching is now in the kernel, under
>   ODP. RDMA access to an 'all of memory' registration always does the
>   right thing.

"Register all address space" is the moral equivalent of not having userspace 
registration, so let's talk about it in those terms.  Specifically, there's a 
subtle difference between:

a) telling verbs to register (0...2^64) 
   --> Which is weird because it tells verbs to register memory that isn't in 
my address space
b) telling verbs that the app doesn't want to handle registration
   --> How that gets implemented is not important (from userspace's point of 
view) -- if the kernel chooses to implement that by registering non-existent 
memory, that's the kernel's problem

I guess I'm arguing that registering non-existent memory is not the Right Thing.

Regardless of what solution is devised for registered memory management 
(ummunotify, ODP, or something else), a non-blocking verb for registering 
memory would still be a Very Useful Thing.

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to