* [PATCH] writeback: avoid unnecessary determine_dirtyable_memory call
@ 2011-01-03 16:30 Minchan Kim
2011-01-03 22:03 ` David Rientjes
0 siblings, 1 reply; 3+ messages in thread
From: Minchan Kim @ 2011-01-03 16:30 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-mm, LKML, Minchan Kim, Wu Fengguang, Peter Zijlstra
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@intel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Minchan Kim <minchan.kim@gmail.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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] writeback: avoid unnecessary determine_dirtyable_memory call
2011-01-03 16:30 [PATCH] writeback: avoid unnecessary determine_dirtyable_memory call Minchan Kim
@ 2011-01-03 22:03 ` David Rientjes
2011-01-03 22:33 ` Minchan Kim
0 siblings, 1 reply; 3+ messages in thread
From: David Rientjes @ 2011-01-03 22:03 UTC (permalink / raw)
To: Minchan Kim; +Cc: Andrew Morton, linux-mm, LKML, Wu Fengguang, Peter Zijlstra
On Tue, 4 Jan 2011, Minchan Kim wrote:
> 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;
You need unsigned long uninitialized_var(available_memory) to avoid the
warning.
> 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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] writeback: avoid unnecessary determine_dirtyable_memory call
2011-01-03 22:03 ` David Rientjes
@ 2011-01-03 22:33 ` Minchan Kim
0 siblings, 0 replies; 3+ messages in thread
From: Minchan Kim @ 2011-01-03 22:33 UTC (permalink / raw)
To: David Rientjes
Cc: Andrew Morton, linux-mm, LKML, Wu Fengguang, Peter Zijlstra
On Tue, Jan 4, 2011 at 7:03 AM, David Rientjes <rientjes@google.com> wrote:
> On Tue, 4 Jan 2011, Minchan Kim wrote:
>
>> 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;
>
> You need unsigned long uninitialized_var(available_memory) to avoid the
> warning.
Yes. It's my fault. Andrew already fixed it.
Thanks, David.
--
Kind regards,
Minchan Kim
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-01-03 22:33 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-03 16:30 [PATCH] writeback: avoid unnecessary determine_dirtyable_memory call Minchan Kim
2011-01-03 22:03 ` David Rientjes
2011-01-03 22:33 ` Minchan Kim
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).