On Fri, Sep 05, 2014 at 04:32:48PM +0900, Joonsoo Kim wrote:
I also test another approach, such as allocate freepage in CMA
reserved region as late as possible, which is also similar to your
suggestion and this doesn't works well. When reclaim is started,
too many pages reclaim at once, because lru list has successive pages
in CMA region and these doesn't help kswapd's reclaim. kswapd stop
reclaiming when freepage count is recovered. But, CMA pages isn't
counted for freepage for kswapd because they can't be usable for
unmovable, reclaimable allocation. So kswap reclaim too many pages
at once unnecessarilly.
Have you considered putting the pages in a CMA region in a separate
zone? After all, that's what we originally did with brain-damaged
hardware that could only DMA into the low 16M of memory. We just
reserved a separate zone for that? That way, we could do
zone-directed reclaim and free pages in that zone, if that was what
was actually needed.
But if we would also preferentially avoid using pages from that zone
unless there was no choice, in order to avoid needing to do that
zone-directed reclaim. Perhaps a similar solution could do done here?
- Ted