mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
writeback: avoid unnecessary determine_dirtyable_memory call
I think determine_dirtyable_memory() is a 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.
[akpm@linux-foundation.org: fix used-uninitialised warning]
Signed-off-by: Minchan Kim <minchan.kim@gmail.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
ecb256f815
commit
240c879f20
@@ -410,9 +410,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 uninitialized_var(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
|
||||
|
||||
Reference in New Issue
Block a user