big allocation failure during tracing init.
From: Dave Jones
Date: Fri Jun 22 2012 - 15:36:59 EST
I just hit this during a low-memory test..
trinity-child6: page allocation failure: order:4, mode:0xc0d0
Pid: 25842, comm: trinity-child6 Not tainted 3.5.0-rc3+ #95
Call Trace:
[<ffffffff81147fab>] warn_alloc_failed+0xeb/0x150
[<ffffffff8114c2d6>] __alloc_pages_nodemask+0x836/0xab0
[<ffffffff8118a630>] alloc_pages_current+0xb0/0x120
[<ffffffff8108e377>] ? local_clock+0x47/0x60
[<ffffffff811471d4>] __get_free_pages+0x14/0x50
[<ffffffff811963c9>] kmalloc_order_trace+0x39/0x190
[<ffffffff810b3108>] ? trace_hardirqs_off_caller+0x28/0xc0
[<ffffffff81196cbe>] __kmalloc+0x23e/0x290
[<ffffffff811d270c>] __seq_open_private+0x2c/0x80
[<ffffffff81114d8c>] tracing_open+0x8c/0x340
[<ffffffff811aadbf>] do_dentry_open+0x25f/0x310
[<ffffffff81114d00>] ? tracing_iter_reset+0x90/0x90
[<ffffffff811ac2fe>] nameidata_to_filp+0x7e/0xe0
[<ffffffff811bc427>] do_last+0x4a7/0x9f0
[<ffffffff811be2ac>] path_openat+0xdc/0x410
[<ffffffff8108e377>] ? local_clock+0x47/0x60
[<ffffffff811cd231>] ? alloc_fd+0x171/0x220
[<ffffffff811cd231>] ? alloc_fd+0x171/0x220
[<ffffffff811be701>] do_filp_open+0x41/0xa0
[<ffffffff816501e5>] ? _raw_spin_unlock+0x35/0x60
[<ffffffff811cd231>] ? alloc_fd+0x171/0x220
[<ffffffff811ac44d>] do_sys_open+0xed/0x1c0
[<ffffffff811ac564>] sys_openat+0x14/0x20
[<ffffffff81657b96>] system_call_fastpath+0x1a/0x1f
I guess the problem is on kernels built with CONFIG_MAXCPUS, struct trace_iterator
can be pretty large due to this embedded in it..
struct ring_buffer_iter *buffer_iter[NR_CPUS];
Any thoughts on how to change that to a smaller dynamic data structure,
without adding too much overhead to tracing ? (I'm assuming a linked-list walk
for eg would be excessive?)
Dave
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/