[PATCH] drain_node_page(): Drain pages in batch units
drain_node_pages() currently drains the complete pageset of all pages. If there are a large number of pages in the queues then we may hold off interrupts for too long. Duplicate the method used in free_hot_cold_page. Only drain pcp->batch pages at one time. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
ebe29738f3
commit
bc4ba393c0
|
@ -685,9 +685,15 @@ void drain_node_pages(int nodeid)
|
|||
|
||||
pcp = &pset->pcp[i];
|
||||
if (pcp->count) {
|
||||
int to_drain;
|
||||
|
||||
local_irq_save(flags);
|
||||
free_pages_bulk(zone, pcp->count, &pcp->list, 0);
|
||||
pcp->count = 0;
|
||||
if (pcp->count >= pcp->batch)
|
||||
to_drain = pcp->batch;
|
||||
else
|
||||
to_drain = pcp->count;
|
||||
free_pages_bulk(zone, to_drain, &pcp->list, 0);
|
||||
pcp->count -= to_drain;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue