From: Dave Chinner <david@fromorbit.com>
To: Petre Rodan <petre.rodan@simplex.ro>
Cc: xfs@oss.sgi.com
Subject: Re: xfssyncd and disk spin down
Date: Fri, 21 Jan 2011 10:43:10 +1100 [thread overview]
Message-ID: <20110120234310.GV16267@dastard> (raw)
In-Reply-To: <20110120100143.GA2007@peter.simplex.ro>
On Thu, Jan 20, 2011 at 12:01:43PM +0200, Petre Rodan wrote:
> On Fri, Dec 31, 2010 at 11:13:23AM +1100, Dave Chinner wrote:
> > Ok, I can see the problem. The original patch I tested:
> >
> > http://oss.sgi.com/archives/xfs/2010-08/msg00026.html
> >
> > Made the log covering dummy transaction a synchronous transaction so
> > that the log was written and the superblock unpinned immediately to
> > allow the xfsbufd to write back the superblock and empty the AIL
> > before the next log covering check.
> >
> > On review, the log covering dummy transaction got changed to an
> > async transaction, so the superblock buffer is not unpinned
> > immediately. This was the patch committed:
> >
> > http://oss.sgi.com/archives/xfs/2010-08/msg00197.html
> >
> > As a result, the success of log covering and idling is then
> > dependent on whether the log gets written to disk to unpin the
> > superblock buffer before the next xfssyncd run. It seems that there
> > is a large chance that this log write does not happen, so the
> > filesystem never idles correctly. I've reproduced it here, and only
> > in one test out of ten did the filesystem enter an idle state
> > correctly. I guess I was unlucky enough to hit that 1-in-10 case
> > when I tested the modified patch.
> >
> > I'll cook up a patch to make the log covering behave like the
> > original patch I sent...
>
> I presume that the new fix should be provided by "xfs: ensure log
> covering transactions are synchronous", so I tested 2.6.37 patched
> with it and then 2.6.38_rc1 that has it included..
.....
> in other words xfsyncd and xfsbufd now alternate at 18s intervals
> keeping the drive busy with nothing constructive hours after the
> last write to the drive.
This is a different problem, and not one I've seen before. Looking
at the traces, it appears that we have not empties the AIL. At
least, that's what I'm assuming at this point because log IO
completion is not updating log tail. When we start a log IO, we set
the log header lsn to the current head:
> xfssyncd/sdc1-1413 [000] 3356.093456: xfs_log_reserve: dev 8:33 type DUMMY1 t_ocnt 1 t_cnt 1 t_curr_res 2740 t_unit_res 2740 t_flags XLOG_TIC_INITED reserveq empty writeq empty grant_reserve_cycle 2 grant_reserve_bytes 428523008 grant_write_cycle 2 grant_write_bytes 428523008 curr_cycle 2 curr_block 836959 tail_cycle 2 tail_block 810683
Which in this case is: curr_cycle 2 curr_block 836959
When the log IO completes, that value gets written to the
l_last_sync_lsn. When the AIL tail is removed, the tail lsn is
updated to the new tail item. If the AIL is empty, then the
l_last_sync_lsn is used. That means then next dummy transaction
made to cover the log should have the cycle/block of the above
current cycle.
Instead, what I see is that the next dummmy transaction shows:
> xfssyncd/sdc1-1413 [000] 3392.067122: xfs_log_reserve: dev 8:33 type DUMMY1 t_ocnt 1 t_cnt 1 t_curr_res 2740 t_unit_res 2740 t_flags XLOG_TIC_INITED reserveq empty writeq empty grant_reserve_cycle 2 grant_reserve_bytes 428524032 grant_write_cycle 2 grant_write_bytes 428524032 curr_cycle 2 curr_block 836961 tail_cycle 2 tail_block 810683
The current head has moved: curr_cycle 2 curr_block 836961
But the tail hasn't: tail_cycle 2 tail_block 810683
So effectively we've got some item on the AIL that we haven't
flushed and isn't being flushed by xfssyncd. That's the problem I
need to get to the bottom of and it also explains why it's an
intermitten problem...
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2011-01-20 23:41 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-23 16:55 xfssyncd and disk spin down Petre Rodan
2010-12-23 19:29 ` Stan Hoeppner
2010-12-23 21:16 ` Petre Rodan
2010-12-24 0:54 ` Stan Hoeppner
2010-12-24 5:15 ` Stan Hoeppner
2010-12-24 6:02 ` Petre Rodan
2010-12-24 23:00 ` Stan Hoeppner
2010-12-25 3:36 ` Eric Sandeen
2010-12-25 4:32 ` Stan Hoeppner
2010-12-24 18:17 ` Eric Sandeen
2010-12-25 12:09 ` Petre Rodan
2010-12-27 2:19 ` Dave Chinner
2010-12-27 6:16 ` Petre Rodan
2010-12-27 14:07 ` Dave Chinner
2010-12-27 17:19 ` Petre Rodan
2010-12-31 0:13 ` Dave Chinner
2011-01-20 10:01 ` Petre Rodan
2011-01-20 11:06 ` Dave Chinner
2011-01-20 12:07 ` Petre Rodan
2011-01-20 13:24 ` Christoph Hellwig
2011-01-20 23:43 ` Dave Chinner [this message]
2011-02-10 20:42 ` Petre Rodan
2011-02-10 22:18 ` Dave Chinner
2011-02-14 18:04 ` Brian Duncan
2011-05-31 14:40 ` Brian Duncan
2011-05-31 15:16 ` Michael Weissenbacher
2011-06-01 23:37 ` Dave Chinner
2011-07-11 4:02 ` Brian Duncan
2011-07-11 14:34 ` Michael Weissenbacher
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=20110120234310.GV16267@dastard \
--to=david@fromorbit.com \
--cc=petre.rodan@simplex.ro \
--cc=xfs@oss.sgi.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox