From: Wu Fengguang <fengguang.wu@intel.com>
To: Mel Gorman <mel@csn.ul.ie>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Dave Chinner <david@fromorbit.com>,
Christoph Hellwig <hch@infradead.org>,
Chris Mason <chris.mason@oracle.com>,
Jens Axboe <jens.axboe@oracle.com>,
LKML <linux-kernel@vger.kernel.org>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: [PATCH 5/6] writeback: try more writeback as long as something was written
Date: Mon, 26 Jul 2010 19:39:43 +0800 [thread overview]
Message-ID: <20100726113943.GD6284@localhost> (raw)
In-Reply-To: <20100726110125.GN5300@csn.ul.ie>
On Mon, Jul 26, 2010 at 07:01:25PM +0800, Mel Gorman wrote:
> On Thu, Jul 22, 2010 at 01:09:33PM +0800, Wu Fengguang wrote:
> > writeback_inodes_wb()/__writeback_inodes_sb() are not agressive in that
> > they only populate b_io when necessary at entrance time. When the queued
> > set of inodes are all synced, they just return, possibly with
> > wbc.nr_to_write > 0.
> >
> > For kupdate and background writeback, there may be more eligible inodes
> > sitting in b_dirty when the current set of b_io inodes are completed. So
> > it is necessary to try another round of writeback as long as we made some
> > progress in this round. When there are no more eligible inodes, no more
> > inodes will be enqueued in queue_io(), hence nothing could/will be
> > synced and we may safely bail.
> >
> > This will livelock sync when there are heavy dirtiers. However in that case
> > sync will already be livelocked w/o this patch, as the current livelock
> > avoidance code is virtually a no-op (for one thing, wb_time should be
> > set statically at sync start time and be used in move_expired_inodes()).
> > The sync livelock problem will be addressed in other patches.
> >
>
> There does seem to be a livelock issue. During iozone, I see messages in
> the console log with this series applied that look like
>
> [ 1687.132034] INFO: task iozone:21225 blocked for more than 120 seconds.
> [ 1687.211425] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> [ 1687.305204] iozone D ffff880001b13640 0 21225 21108 0x00000000
> [ 1687.387677] ffff880037419d48 0000000000000082 0000000000000348 0000000000013640
> [ 1687.476594] ffff880037419fd8 ffff880037419fd8 ffff880065892da0 0000000000013640
> [ 1687.565512] 0000000000013640 0000000000013640 ffff880065892da0 ffff88007f411510
> [ 1687.654431] Call Trace:
> [ 1687.683663] [<ffffffff81002996>] ? ftrace_call+0x5/0x2b
> [ 1687.747204] [<ffffffff812d8f67>] schedule_timeout+0x2d/0x214
> [ 1687.815947] [<ffffffff81002996>] ? ftrace_call+0x5/0x2b
> [ 1687.879489] [<ffffffff812d8527>] wait_for_common+0xd2/0x14a
> [ 1687.947195] [<ffffffff8103ef1e>] ? default_wake_function+0x0/0x14
> [ 1688.021132] [<ffffffff81002996>] ? ftrace_call+0x5/0x2b
> [ 1688.084680] [<ffffffff811160f0>] ? sync_one_sb+0x0/0x22
> [ 1688.148223] [<ffffffff812d8657>] wait_for_completion+0x1d/0x1f
> [ 1688.219051] [<ffffffff811121c4>] sync_inodes_sb+0x92/0x14c
> [ 1688.285710] [<ffffffff811160f0>] ? sync_one_sb+0x0/0x22
> [ 1688.349249] [<ffffffff811160b9>] __sync_filesystem+0x4c/0x83
> [ 1688.417995] [<ffffffff81116110>] sync_one_sb+0x20/0x22
> [ 1688.480505] [<ffffffff810f6a23>] iterate_supers+0x66/0xa4
> [ 1688.546124] [<ffffffff81116157>] sys_sync+0x45/0x5c
> [ 1688.605509] [<ffffffff81002c72>] system_call_fastpath+0x16/0x1b
>
> Similar messages do not appear without the patch. iozone does complete though
> and the performance figures are not affected. Should I be worried?
The patch does add a bit more livelock possibility. But don't worry,
I'll fix that.
Thanks,
Fengguang
WARNING: multiple messages have this Message-ID (diff)
From: Wu Fengguang <fengguang.wu@intel.com>
To: Mel Gorman <mel@csn.ul.ie>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Dave Chinner <david@fromorbit.com>,
Christoph Hellwig <hch@infradead.org>,
Chris Mason <chris.mason@oracle.com>,
Jens Axboe <jens.axboe@oracle.com>,
LKML <linux-kernel@vger.kernel.org>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: [PATCH 5/6] writeback: try more writeback as long as something was written
Date: Mon, 26 Jul 2010 19:39:43 +0800 [thread overview]
Message-ID: <20100726113943.GD6284@localhost> (raw)
In-Reply-To: <20100726110125.GN5300@csn.ul.ie>
On Mon, Jul 26, 2010 at 07:01:25PM +0800, Mel Gorman wrote:
> On Thu, Jul 22, 2010 at 01:09:33PM +0800, Wu Fengguang wrote:
> > writeback_inodes_wb()/__writeback_inodes_sb() are not agressive in that
> > they only populate b_io when necessary at entrance time. When the queued
> > set of inodes are all synced, they just return, possibly with
> > wbc.nr_to_write > 0.
> >
> > For kupdate and background writeback, there may be more eligible inodes
> > sitting in b_dirty when the current set of b_io inodes are completed. So
> > it is necessary to try another round of writeback as long as we made some
> > progress in this round. When there are no more eligible inodes, no more
> > inodes will be enqueued in queue_io(), hence nothing could/will be
> > synced and we may safely bail.
> >
> > This will livelock sync when there are heavy dirtiers. However in that case
> > sync will already be livelocked w/o this patch, as the current livelock
> > avoidance code is virtually a no-op (for one thing, wb_time should be
> > set statically at sync start time and be used in move_expired_inodes()).
> > The sync livelock problem will be addressed in other patches.
> >
>
> There does seem to be a livelock issue. During iozone, I see messages in
> the console log with this series applied that look like
>
> [ 1687.132034] INFO: task iozone:21225 blocked for more than 120 seconds.
> [ 1687.211425] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> [ 1687.305204] iozone D ffff880001b13640 0 21225 21108 0x00000000
> [ 1687.387677] ffff880037419d48 0000000000000082 0000000000000348 0000000000013640
> [ 1687.476594] ffff880037419fd8 ffff880037419fd8 ffff880065892da0 0000000000013640
> [ 1687.565512] 0000000000013640 0000000000013640 ffff880065892da0 ffff88007f411510
> [ 1687.654431] Call Trace:
> [ 1687.683663] [<ffffffff81002996>] ? ftrace_call+0x5/0x2b
> [ 1687.747204] [<ffffffff812d8f67>] schedule_timeout+0x2d/0x214
> [ 1687.815947] [<ffffffff81002996>] ? ftrace_call+0x5/0x2b
> [ 1687.879489] [<ffffffff812d8527>] wait_for_common+0xd2/0x14a
> [ 1687.947195] [<ffffffff8103ef1e>] ? default_wake_function+0x0/0x14
> [ 1688.021132] [<ffffffff81002996>] ? ftrace_call+0x5/0x2b
> [ 1688.084680] [<ffffffff811160f0>] ? sync_one_sb+0x0/0x22
> [ 1688.148223] [<ffffffff812d8657>] wait_for_completion+0x1d/0x1f
> [ 1688.219051] [<ffffffff811121c4>] sync_inodes_sb+0x92/0x14c
> [ 1688.285710] [<ffffffff811160f0>] ? sync_one_sb+0x0/0x22
> [ 1688.349249] [<ffffffff811160b9>] __sync_filesystem+0x4c/0x83
> [ 1688.417995] [<ffffffff81116110>] sync_one_sb+0x20/0x22
> [ 1688.480505] [<ffffffff810f6a23>] iterate_supers+0x66/0xa4
> [ 1688.546124] [<ffffffff81116157>] sys_sync+0x45/0x5c
> [ 1688.605509] [<ffffffff81002c72>] system_call_fastpath+0x16/0x1b
>
> Similar messages do not appear without the patch. iozone does complete though
> and the performance figures are not affected. Should I be worried?
The patch does add a bit more livelock possibility. But don't worry,
I'll fix that.
Thanks,
Fengguang
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-07-26 11:40 UTC|newest]
Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-22 5:09 [PATCH 0/6] [RFC] writeback: try to write older pages first Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-22 5:09 ` [PATCH 1/6] writeback: pass writeback_control down to move_expired_inodes() Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-23 18:16 ` Jan Kara
2010-07-23 18:16 ` Jan Kara
2010-07-26 10:44 ` Mel Gorman
2010-07-26 10:44 ` Mel Gorman
2010-08-01 15:23 ` Minchan Kim
2010-08-01 15:23 ` Minchan Kim
2010-07-22 5:09 ` [PATCH 2/6] writeback: the kupdate expire timestamp should be a moving target Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-23 18:17 ` Jan Kara
2010-07-23 18:17 ` Jan Kara
2010-07-26 10:52 ` Mel Gorman
2010-07-26 10:52 ` Mel Gorman
2010-07-26 11:32 ` Wu Fengguang
2010-07-26 11:32 ` Wu Fengguang
2010-08-01 15:29 ` Minchan Kim
2010-08-01 15:29 ` Minchan Kim
2010-07-22 5:09 ` [PATCH 3/6] writeback: kill writeback_control.more_io Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-23 18:24 ` Jan Kara
2010-07-23 18:24 ` Jan Kara
2010-07-26 10:53 ` Mel Gorman
2010-07-26 10:53 ` Mel Gorman
2010-08-01 15:34 ` Minchan Kim
2010-08-01 15:34 ` Minchan Kim
2010-08-05 14:50 ` Wu Fengguang
2010-08-05 14:50 ` Wu Fengguang
2010-08-05 14:55 ` Wu Fengguang
2010-08-05 14:55 ` Wu Fengguang
2010-08-05 14:56 ` Minchan Kim
2010-08-05 14:56 ` Minchan Kim
2010-08-05 15:26 ` Wu Fengguang
2010-08-05 15:26 ` Wu Fengguang
2010-07-22 5:09 ` [PATCH 4/6] writeback: sync expired inodes first in background writeback Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-23 18:15 ` Jan Kara
2010-07-23 18:15 ` Jan Kara
2010-07-26 11:51 ` Wu Fengguang
2010-07-26 11:51 ` Wu Fengguang
2010-07-26 12:12 ` Jan Kara
2010-07-26 12:12 ` Jan Kara
2010-07-26 12:29 ` Wu Fengguang
2010-07-26 12:29 ` Wu Fengguang
2010-07-26 10:57 ` Mel Gorman
2010-07-26 10:57 ` Mel Gorman
2010-07-26 12:00 ` Wu Fengguang
2010-07-26 12:00 ` Wu Fengguang
2010-07-26 12:20 ` Jan Kara
2010-07-26 12:20 ` Jan Kara
2010-07-26 12:31 ` Wu Fengguang
2010-07-26 12:31 ` Wu Fengguang
2010-07-26 12:39 ` Jan Kara
2010-07-26 12:39 ` Jan Kara
2010-07-26 12:47 ` Wu Fengguang
2010-07-26 12:47 ` Wu Fengguang
2010-07-26 12:56 ` Wu Fengguang
2010-07-26 12:56 ` Wu Fengguang
2010-07-26 12:59 ` Mel Gorman
2010-07-26 12:59 ` Mel Gorman
2010-07-26 13:11 ` Wu Fengguang
2010-07-26 13:11 ` Wu Fengguang
2010-07-27 9:45 ` Mel Gorman
2010-07-27 9:45 ` Mel Gorman
2010-08-01 15:15 ` Minchan Kim
2010-08-01 15:15 ` Minchan Kim
2010-07-22 5:09 ` [PATCH 5/6] writeback: try more writeback as long as something was written Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-23 17:39 ` Jan Kara
2010-07-23 17:39 ` Jan Kara
2010-07-26 12:39 ` Wu Fengguang
2010-07-26 12:39 ` Wu Fengguang
2010-07-26 11:01 ` Mel Gorman
2010-07-26 11:01 ` Mel Gorman
2010-07-26 11:39 ` Wu Fengguang [this message]
2010-07-26 11:39 ` Wu Fengguang
2010-07-22 5:09 ` [PATCH 6/6] writeback: introduce writeback_control.inodes_written Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-22 5:09 ` Wu Fengguang
2010-07-26 11:04 ` Mel Gorman
2010-07-26 11:04 ` Mel Gorman
2010-07-23 10:24 ` [PATCH 0/6] [RFC] writeback: try to write older pages first Mel Gorman
2010-07-23 10:24 ` Mel Gorman
2010-07-26 7:18 ` Wu Fengguang
2010-07-26 7:18 ` Wu Fengguang
2010-07-26 10:42 ` Mel Gorman
2010-07-26 10:42 ` Mel Gorman
2010-07-26 10:28 ` Itaru Kitayama
2010-07-26 10:28 ` Itaru Kitayama
2010-07-26 11:47 ` Wu Fengguang
2010-07-26 11:47 ` Wu Fengguang
-- strict thread matches above, loose matches on Subject: below --
2011-04-19 3:00 [PATCH 0/6] writeback: moving expire targets for background/kupdate works Wu Fengguang
2011-04-19 3:00 ` [PATCH 5/6] writeback: try more writeback as long as something was written Wu Fengguang
2011-04-19 3:00 ` Wu Fengguang
2011-04-19 3:00 ` Wu Fengguang
2011-04-19 10:20 ` Jan Kara
2011-04-19 10:20 ` Jan Kara
2011-04-19 11:16 ` Wu Fengguang
2011-04-19 11:16 ` Wu Fengguang
2011-04-19 21:10 ` Jan Kara
2011-04-19 21:10 ` Jan Kara
2011-04-20 7:50 ` Wu Fengguang
2011-04-20 7:50 ` Wu Fengguang
2011-04-20 15:22 ` Jan Kara
2011-04-20 15:22 ` Jan Kara
2011-04-21 3:33 ` Wu Fengguang
2011-04-21 4:39 ` Christoph Hellwig
2011-04-21 4:39 ` Christoph Hellwig
2011-04-21 6:05 ` Wu Fengguang
2011-04-21 6:05 ` Wu Fengguang
2011-04-21 16:41 ` Jan Kara
2011-04-21 16:41 ` Jan Kara
2011-04-22 2:32 ` Wu Fengguang
2011-04-22 2:32 ` Wu Fengguang
2011-04-22 21:23 ` Jan Kara
2011-04-22 21:23 ` Jan Kara
2011-04-21 7:09 ` Dave Chinner
2011-04-21 7:09 ` Dave Chinner
2011-04-21 7:14 ` Christoph Hellwig
2011-04-21 7:14 ` Christoph Hellwig
2011-04-21 7:52 ` Dave Chinner
2011-04-21 7:52 ` Dave Chinner
2011-04-21 8:00 ` Christoph Hellwig
2011-04-21 8:00 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100726113943.GD6284@localhost \
--to=fengguang.wu@intel.com \
--cc=akpm@linux-foundation.org \
--cc=chris.mason@oracle.com \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=jens.axboe@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.