F18/rawhide: lockdep consumes a lot of percpu data

Prarit Bhargava prarit at redhat.com
Wed Nov 14 20:51:31 UTC 2012


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 ...

P.


More information about the kernel mailing list