Messages in this thread | | | Date | Tue, 11 Nov 2008 23:06:26 +0100 | From | Eric Dumazet <> | Subject | Re: [PATCH] Allocate module.ref array dynamically |
| |
Takashi Iwai a écrit : > Hi, > > we found that the kernel module sizes and memory footprints > grow drastically when NR_CPUS is high. For example, with > NR_CPUS=4096, SUSE kernel packages weigh over 500MB (even w/o debug > info). > > A part of the reason is the fixed size array in struct module. > The patch below fixes the problem by allocating it dynamically. > With the patch, the size can go down to 20MB. > > > Any comments/suggestions appreciated. >
Many attempts were done on this area on the past.
Your patch has the drawback of using kcalloc(), while previously, module_ref space was allocated with vmalloc().
After a while, a machine could have a lot of vmalloc() space available, but not enough physically contiguous space to fullfill a kmalloc(large_area) call.
So a module load could fail, while previous code could load module.
I believe Mike Travis has a better patch for this problem, partly using new percpu allocator.
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |