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