Messages in this thread | | | Date | Thu, 25 Jul 2013 14:50:54 +0800 | From | Paul Bolle <> | Subject | Re: [patch 3/3] mm: page_alloc: fair zone allocator policy |
| |
On 07/23/2013 04:21 AM, Rik van Riel wrote: > On 07/19/2013 04:55 PM, Johannes Weiner wrote: > >> @@ -1984,7 +1992,8 @@ this_zone_full: >> goto zonelist_scan; >> } >> >> - if (page) >> + if (page) { >> + atomic_sub(1U << order, &zone->alloc_batch); >> /* >> * page->pfmemalloc is set when ALLOC_NO_WATERMARKS was >> * necessary to allocate the page. The expectation is > > Could this be moved into the slow path in buffered_rmqueue and > rmqueue_bulk, or would the effect of ignoring the pcp buffers be > too detrimental to keeping the balance between zones? > > It would be kind of nice to not have this atomic operation on every > page allocation...
atomic operation will lock cache line or memory bus? And cmpxchg will lock cache line or memory bus? ;-)
> > As a side benefit, higher-order buffered_rmqueue and rmqueue_bulk > both happen under the zone->lock, so moving this accounting down > to that layer might allow you to get rid of the atomics alltogether. > > I like the overall approach though. This is something Linux has needed > for a long time, and could be extremely useful to automatic NUMA > balancing as well... >
| |