forked from Minki/linux
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:
parent
ecb256f815
commit
240c879f20
@ -410,9 +410,12 @@ void global_dirty_limits(unsigned long *pbackground, unsigned long *pdirty)
|
|||||||
{
|
{
|
||||||
unsigned long background;
|
unsigned long background;
|
||||||
unsigned long dirty;
|
unsigned long dirty;
|
||||||
unsigned long available_memory = determine_dirtyable_memory();
|
unsigned long uninitialized_var(available_memory);
|
||||||
struct task_struct *tsk;
|
struct task_struct *tsk;
|
||||||
|
|
||||||
|
if (!vm_dirty_bytes || !dirty_background_bytes)
|
||||||
|
available_memory = determine_dirtyable_memory();
|
||||||
|
|
||||||
if (vm_dirty_bytes)
|
if (vm_dirty_bytes)
|
||||||
dirty = DIV_ROUND_UP(vm_dirty_bytes, PAGE_SIZE);
|
dirty = DIV_ROUND_UP(vm_dirty_bytes, PAGE_SIZE);
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user