[lkml]   [2011]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
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 <>
Cc: Peter Zijlstra <>
Signed-off-by: Minchan Kim <>
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);

 \ /
  Last update: 2011-01-03 17:33    [from the cache]
©2003-2014 Jasper Spaans. hosted at Digital Ocean