Thread (34 messages) 34 messages, 7 authors, 2015-12-18

Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation

From: Eric Dumazet <hidden>
Date: 2015-12-04 17:45:24
Also in: lkml, oe-lkp

On Fri, 2015-12-04 at 18:01 +0100, Phil Sutter wrote:
On Fri, Dec 04, 2015 at 10:39:56PM +0800, Herbert Xu wrote:
quoted
On Thu, Dec 03, 2015 at 08:08:39AM -0800, Eric Dumazet wrote:
quoted
Anyway, __vmalloc() can be used with GFP_ATOMIC, have you tried this ?
OK I've tried it and I no longer get any ENOMEM errors!
I can't confirm this, sadly. Using 50 threads, results seem to be stable
and good. But increasing the number of threads I can provoke ENOMEM
condition again. See attached log which shows a failing test run with
100 threads.

I tried to extract logs of a test run with as few as possible failing
threads, but wasn't successful. It seems like the error amplifies
itself: While having stable success with less than 70 threads, going
beyond a margin I could not identify exactly, much more threads failed
than expected. For instance, the attached log shows 70 out of 100
threads failing, while for me every single test with 50 threads was
successful.

HTH, Phil
But this patch is about GFP_ATOMIC allocations, I doubt your test is
using GFP_ATOMIC.

Threads (process context) should use GFP_KERNEL allocations.

BTW, if 100 threads are simultaneously trying to vmalloc(32 MB), this
might not be very wise :(

Only one should really do this, while others are waiting.

If we really want parallelism (multiple cpus coordinating their effort),
it should be done very differently.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help