Re: 2.6 /proc/interrupts fails on systems with many CPUs

From: Manfred Spraul
Date: Tue Nov 11 2003 - 13:17:30 EST


Erik wrote:

/* don't ask for more than the kmalloc() max size, currently 128 KB */
if (size > 128 * 1024)
size = 128 * 1024;
- buf = kmalloc(size, GFP_KERNEL);
+ buf = __vmalloc(size, GFP_KERNEL, PAGE_KERNEL);


kmalloc needs a contiguous memory block. Thus after a long runtime, large kmalloc calls can fail due to fragmentation. I'd prefer if you switch to vmalloc after 2*PAGE_SIZE.

Or switch to a line based seq file iterator, then you wouldn't need the huge buffer.
--
Manfred

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