F18/rawhide: lockdep consumes a lot of percpu data

Prarit Bhargava prarit at redhat.com
Thu Nov 15 18:08:53 UTC 2012


On 11/14/2012 03:51 PM, Prarit Bhargava wrote:
> When booting F18 on a 32 cpu system I repeatedly see errors like:
> 
> PERCPU: allocation failed, size=320 align=32, alloc from reserved chunk failed
> Pid: 620, comm: udevd Not tainted 3.7.0-0.rc5.git1.2.fc19.x86_64 #1
> Call Trace:
>  [<ffffffff81186c7d>] pcpu_alloc+0x9dd/0xa40
>  [<ffffffff810e8b5a>] ? mod_verify_sig+0x39a/0x460
>  [<ffffffff810e1f2e>] ? find_sec+0x5e/0x90
>  [<ffffffff81186f83>] __alloc_reserved_percpu+0x13/0x20
>  [<ffffffff810e5b5f>] load_module+0x40f/0x2290
>  [<ffffffff812e68b2>] ? cred_has_capability+0x62/0x100
>  [<ffffffff8109a333>] ? up_write+0x23/0x40
>  [<ffffffff810e7a32>] sys_init_module+0x52/0x230
>  [<ffffffff816fb799>] system_call_fastpath+0x16/0x1b
> kvm: Could not allocate 320 bytes percpu data
> 
> 
> This occurs because the lockdep code is allocating a giant chunk of memory in
> the percpu data:
> 
> On 3.6.6-1:
> 
> 14940 (D) __per_cpu_end
> 
> On 3.7.0-0:
> 
> 1d5900 (D) __per_cpu_end
> 
> and in 3.7.0-0, a dump of the symbol map shows
> 
> efc0 (V) tstats_lookup_lock
> f020 (V) cpu_lock_stats
> 1cef40 (V) stop_cpus_work
> 1cef80 (V) cpu_stopper
> 
> ie) the cpu_lock_stats takes up a huge chunk of the per_cpu memory.
> 
> I'm not sure what can be done about this; I suppose we could expand the reserved
> area to allow for more module percpu allocation ...
> 

My explanation above isn't correct, however, the solution is likely the same.
I'll post on LKML ...

P.


More information about the kernel mailing list