[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1294072249-2916-1-git-send-email-minchan.kim@gmail.com>
Date: Tue, 4 Jan 2011 01:30:49 +0900
From: Minchan Kim <minchan.kim@...il.com>
To: Andrew Morton <akpm@...ux-foundation.org>
Cc: linux-mm <linux-mm@...ck.org>, LKML <linux-kernel@...r.kernel.org>,
Minchan Kim <minchan.kim@...il.com>,
Wu Fengguang <fengguang.wu@...el.com>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>
Subject: [PATCH] writeback: avoid unnecessary determine_dirtyable_memory call
I think determine_dirtyable_memory is rather costly function since
it need many atomic reads for gathering zone/global page state.
But when we use vm_dirty_bytes && dirty_background_bytes, we don't
need that costly calculation.
This patch eliminates such unnecessary overhead.
NOTE : newly added if condition might add overhead in normal path.
But it should be _really_ small because anyway we need the
access both vm_dirty_bytes and dirty_background_bytes so it is
likely to hit the cache.
Cc: Wu Fengguang <fengguang.wu@...el.com>
Cc: Peter Zijlstra <a.p.zijlstra@...llo.nl>
Signed-off-by: Minchan Kim <minchan.kim@...il.com>
---
mm/page-writeback.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index fc93802..c340536 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -390,9 +390,12 @@ void global_dirty_limits(unsigned long *pbackground, unsigned long *pdirty)
{
unsigned long background;
unsigned long dirty;
- unsigned long available_memory = determine_dirtyable_memory();
+ unsigned long available_memory;
struct task_struct *tsk;
+ if (!vm_dirty_bytes || !dirty_background_bytes)
+ available_memory = determine_dirtyable_memory();
+
if (vm_dirty_bytes)
dirty = DIV_ROUND_UP(vm_dirty_bytes, PAGE_SIZE);
else
--
1.7.0.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists