| From | KOSAKI Motohiro <> | Subject | [PATCH 4/8] Use prepare_to_wait_exclusive() instead prepare_to_wait() | Date | Mon, 14 Dec 2009 21:30:19 +0900 (JST) |
| |
if we don't use exclusive queue, wake_up() function wake _all_ waited task. This is simply cpu wasting.
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> --- mm/vmscan.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c index e0cb834..3562a2d 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1618,7 +1618,7 @@ static int shrink_zone_begin(struct zone *zone, struct scan_control *sc) * we would just make things slower. */ for (;;) { - prepare_to_wait(wq, &wait, TASK_UNINTERRUPTIBLE); + prepare_to_wait_exclusive(wq, &wait, TASK_UNINTERRUPTIBLE); if (atomic_read(&zone->concurrent_reclaimers) <= max_zone_concurrent_reclaimers) @@ -1632,7 +1632,7 @@ static int shrink_zone_begin(struct zone *zone, struct scan_control *sc) */ if (zone_watermark_ok(zone, sc->order, low_wmark_pages(zone), 0, 0)) { - wake_up(wq); + wake_up_all(wq); finish_wait(wq, &wait); sc->nr_reclaimed += sc->nr_to_reclaim; return -ERESTARTSYS; -- 1.6.5.2
|