Hello,
On Wednesday, June 22, 2011 2:42 PM Arnd Bergmann wrote:
On Wednesday 22 June 2011, Hans Verkuil wrote:
How about a Kconfig option that defines the percentage of memory to set aside for contiguous allocations?
I would actually like to see a cma_size kernel option of some sort. This
would
be for the global CMA pool only as I don't think we should try to do
anything
more complicated here.
A command line is probably good to override the compile-time default, yes.
We could also go further and add a runtime sysctl mechanism like the one for hugepages, where you can grow the pool at run time as long as there is enough free contiguous memory (e.g. from init scripts), or shrink it later if you want to allow larger nonmovable allocations.
Sounds really good, but it might be really hard to implemnt, at least for CMA, because it needs to tweak parameters of memory management internal structures very early, when buddy allocator has not been activated yet.
My feeling is that we need to find a way to integrate the global settings for four kinds of allocations:
- nonmovable kernel pages
- hugetlb pages
- CMA
- memory hotplug
These essentially fight over the same memory (though things are slightly different with dynamic hugepages), and they all face the same basic problem of getting as much for themselves without starving the other three.
I'm not sure we can solve all such issues in the first version. Maybe we should first have each of the above fully working in mainline separately and then start the integration works.
Best regards