Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1284139
| From | Phil Sutter <phil@nwl.cc> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation |
| Date | 2015-12-04 19:20 +0100 |
| Message-ID | <qC37B-6ec-23@gated-at.bofh.it> (permalink) |
| References | (4 earlier) <qBBEn-58q-15@gated-at.bofh.it> <qBECe-7oz-17@gated-at.bofh.it> <qBZQm-3Yo-27@gated-at.bofh.it> <qC21Q-5zk-9@gated-at.bofh.it> <qC2Ez-5Oo-55@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Fri, Dec 04, 2015 at 09:45:20AM -0800, Eric Dumazet wrote: > 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: > > > On Thu, Dec 03, 2015 at 08:08:39AM -0800, Eric Dumazet wrote: > > > > > > > > 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. > > But this patch is about GFP_ATOMIC allocations, I doubt your test is > using GFP_ATOMIC. > > Threads (process context) should use GFP_KERNEL allocations. Well, I assumed Herbert did his tests using test_rhashtable, and therefore fixed whatever code-path that triggers. Maybe I'm wrong, though. Looking at the vmalloc allocation failure trace, it seems like it's trying to indeed use GFP_ATOMIC from inside those threads: If I don't miss anything, bucket_table_alloc is called from rhashtable_insert_rehash, which passes GFP_ATOMIC unconditionally. But then again bucket_table_alloc should use kzalloc if 'gfp != GFP_KERNEL', so I'm probably just cross-eyed right now. > 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. Sure, that was my previous understanding of how this thing works. > If we really want parallelism (multiple cpus coordinating their effort), > it should be done very differently. Maybe my approach of stress-testing rhashtable was too naive in the first place. Thanks, Phil -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
rhashtable: ENOMEM errors when hit with a flood of insertions Herbert Xu <herbert@gondor.apana.org.au> - 2015-12-03 14:00 +0100
RE: rhashtable: ENOMEM errors when hit with a flood of insertions David Laight <David.Laight@ACULAB.COM> - 2015-12-03 16:20 +0100
Re: rhashtable: ENOMEM errors when hit with a flood of insertions Eric Dumazet <eric.dumazet@gmail.com> - 2015-12-03 17:10 +0100
Re: rhashtable: ENOMEM errors when hit with a flood of insertions Herbert Xu <herbert@gondor.apana.org.au> - 2015-12-04 01:10 +0100
rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Herbert Xu <herbert@gondor.apana.org.au> - 2015-12-04 15:50 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Eric Dumazet <eric.dumazet@gmail.com> - 2015-12-04 18:50 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Phil Sutter <phil@nwl.cc> - 2015-12-04 19:20 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Herbert Xu <herbert@gondor.apana.org.au> - 2015-12-05 08:10 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Thomas Graf <tgraf@suug.ch> - 2015-12-07 16:40 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation David Miller <davem@davemloft.net> - 2015-12-07 20:40 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Thomas Graf <tgraf@suug.ch> - 2015-12-09 03:20 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Herbert Xu <herbert@gondor.apana.org.au> - 2015-12-09 03:30 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Herbert Xu <herbert@gondor.apana.org.au> - 2015-12-09 03:40 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Thomas Graf <tgraf@suug.ch> - 2015-12-09 03:50 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Thomas Graf <tgraf@suug.ch> - 2015-12-09 03:40 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation David Miller <davem@davemloft.net> - 2015-12-04 23:00 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation Herbert Xu <herbert@gondor.apana.org.au> - 2015-12-05 08:10 +0100
Re: rhashtable: Use __vmalloc with GFP_ATOMIC for table allocation David Miller <davem@davemloft.net> - 2015-12-06 04:50 +0100
csiph-web