On 10/15/13 1:21 AM, Matthew Ahrens wrote:
> I'm not super familiar with the VM subsystem.  Can you explain where
> physical memory fragmentation comes into play?  It looks to me like
> segkmem_xalloc() will call segkmem_page_create() (it's the
> page_create_func), which calls page_create_va(), which looks for N
> physical pages, but they need not be contiguous.

Interesting, then disregard that part of my original hypothesis.

> The stack trace from the message you mentioned looks like it hasn't
> gotten to allocating physical memory yet.  It looks like it is trying to
> allocate virtual address space (segkmem_xalloc() calling vmem_alloc()).
>  Which would seem to indicate that the kernel's virtual address space
> *is* very fragmented, even on 64-bit.  This is a little surprising to
> me, but as I mentioned I'm not a VM expert.

And I'm even less so. In any case, if allocation of large contiguous
memory chunks isn't a problem, then we can simply scrap the 2D hash
table business and simply change the KM_NOSLEEP into a KM_SLEEP. In that
the case, however, I have to ask why the original author put the retry
mechanism in with the pressure valve (halving the memory request size
each iteration) in the first place...

-- 
Saso
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to