All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: Joe Perches <joe@perches.com>
Cc: Alex Elder <elder@kernel.org>, Ben Myers <bpm@sgi.com>,
	open list <linux-kernel@vger.kernel.org>,
	xfs@oss.sgi.com, Raghavendra D Prabhu <rprabhu@wnohang.net>,
	raghu.prabhu13@gmail.com
Subject: Re: [PATCH 1/3] Add ratelimited printk for different alert levels
Date: Thu, 13 Sep 2012 10:51:12 +1000	[thread overview]
Message-ID: <20120913005112.GK11511@dastard> (raw)
In-Reply-To: <1347420159.2456.15.camel@joe2Laptop>

On Tue, Sep 11, 2012 at 08:22:39PM -0700, Joe Perches wrote:
> On Wed, 2012-09-12 at 03:43 +0530, raghu.prabhu13@gmail.com wrote:
> > Ratelimited printk will be useful in printing xfs messages which are otherwise
> > not required to be printed always due to their high rate (to prevent kernel ring
> > buffer from overflowing), while at the same time required to be printed.
> []
> > diff --git a/fs/xfs/xfs_message.h b/fs/xfs/xfs_message.h
> []
> > @@ -30,6 +32,32 @@ void xfs_debug(const struct xfs_mount *mp, const char *fmt, ...)
> >  }
> >  #endif
> >  
> > +#define xfs_printk_ratelimited(xfs_printk, dev, fmt, ...)		\
> > +do {									\
> > +	static DEFINE_RATELIMIT_STATE(_rs,				\
> > +				      DEFAULT_RATELIMIT_INTERVAL,	\
> > +				      DEFAULT_RATELIMIT_BURST);		\
> > +	if (__ratelimit(&_rs))						\
> > +		xfs_printk(dev, fmt, ##__VA_ARGS__);			\
> > +} while (0)
> 
> It might be better to use an xfs singleton RATELIMIT_STATE
> 
> DEFINE_RATELIMIT_STATE(xfs_rs);
> ...
> #define xfs_printk_ratelimited(xfs_printk, dev, fmt, ...)		\
> do {									\
> 	if (__ratelimit(&xfs_rs))					\
> 		xfs_printk(dev, fmt, ##__VA_ARGS__);			\
> } while (0)

Which would then result in ratelimiting dropping potentially
important, unique messages. I think it's much better to guarantee
ratelimited messages get emitted at least once, especially as there
is the potential for multiple filesystems to emit messages
simultaneously.

I think per-location rate limiting is fine for the current usage -
ratelimiting is not widespread so there isn't a massive increase in
size as a result of this. If we do start to use ratelimiting in lots
of places in XFS, then we might have to revisit this, but it's OK
for now.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

WARNING: multiple messages have this Message-ID (diff)
From: Dave Chinner <david@fromorbit.com>
To: Joe Perches <joe@perches.com>
Cc: raghu.prabhu13@gmail.com, xfs@oss.sgi.com,
	Raghavendra D Prabhu <rprabhu@wnohang.net>,
	Ben Myers <bpm@sgi.com>, Alex Elder <elder@kernel.org>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/3] Add ratelimited printk for different alert levels
Date: Thu, 13 Sep 2012 10:51:12 +1000	[thread overview]
Message-ID: <20120913005112.GK11511@dastard> (raw)
In-Reply-To: <1347420159.2456.15.camel@joe2Laptop>

On Tue, Sep 11, 2012 at 08:22:39PM -0700, Joe Perches wrote:
> On Wed, 2012-09-12 at 03:43 +0530, raghu.prabhu13@gmail.com wrote:
> > Ratelimited printk will be useful in printing xfs messages which are otherwise
> > not required to be printed always due to their high rate (to prevent kernel ring
> > buffer from overflowing), while at the same time required to be printed.
> []
> > diff --git a/fs/xfs/xfs_message.h b/fs/xfs/xfs_message.h
> []
> > @@ -30,6 +32,32 @@ void xfs_debug(const struct xfs_mount *mp, const char *fmt, ...)
> >  }
> >  #endif
> >  
> > +#define xfs_printk_ratelimited(xfs_printk, dev, fmt, ...)		\
> > +do {									\
> > +	static DEFINE_RATELIMIT_STATE(_rs,				\
> > +				      DEFAULT_RATELIMIT_INTERVAL,	\
> > +				      DEFAULT_RATELIMIT_BURST);		\
> > +	if (__ratelimit(&_rs))						\
> > +		xfs_printk(dev, fmt, ##__VA_ARGS__);			\
> > +} while (0)
> 
> It might be better to use an xfs singleton RATELIMIT_STATE
> 
> DEFINE_RATELIMIT_STATE(xfs_rs);
> ...
> #define xfs_printk_ratelimited(xfs_printk, dev, fmt, ...)		\
> do {									\
> 	if (__ratelimit(&xfs_rs))					\
> 		xfs_printk(dev, fmt, ##__VA_ARGS__);			\
> } while (0)

Which would then result in ratelimiting dropping potentially
important, unique messages. I think it's much better to guarantee
ratelimited messages get emitted at least once, especially as there
is the potential for multiple filesystems to emit messages
simultaneously.

I think per-location rate limiting is fine for the current usage -
ratelimiting is not widespread so there isn't a massive increase in
size as a result of this. If we do start to use ratelimiting in lots
of places in XFS, then we might have to revisit this, but it's OK
for now.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

  reply	other threads:[~2012-09-13  0:50 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-11 22:13 [PATCH V2 0/3] Print when ENOSPC due to lack of inodes in non-inode64 mount raghu.prabhu13
2012-09-11 22:13 ` [PATCH 1/3] Add ratelimited printk for different alert levels raghu.prabhu13
2012-09-11 22:13   ` raghu.prabhu13
2012-09-11 22:43   ` Dave Chinner
2012-09-11 22:43     ` Dave Chinner
2012-09-12  3:22   ` Joe Perches
2012-09-12  3:22     ` Joe Perches
2012-09-13  0:51     ` Dave Chinner [this message]
2012-09-13  0:51       ` Dave Chinner
2012-09-11 22:13 ` [PATCH 2/3] XFS: Print error when xfs_ialloc_ag_select fails to find continuous free space raghu.prabhu13
2012-09-11 22:13   ` raghu.prabhu13
2012-09-11 22:48   ` Dave Chinner
2012-09-11 22:48     ` Dave Chinner
2012-09-11 22:13 ` [PATCH 3/3] XFS: Print error when unable to allocate inodes or out of free inodes raghu.prabhu13
2012-09-11 22:13   ` raghu.prabhu13
2012-09-11 23:21   ` Dave Chinner
2012-09-11 23:21     ` Dave Chinner
2012-09-21  7:16     ` Raghavendra D Prabhu
2012-09-26  6:14       ` Raghavendra Prabhu

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=20120913005112.GK11511@dastard \
    --to=david@fromorbit.com \
    --cc=bpm@sgi.com \
    --cc=elder@kernel.org \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=raghu.prabhu13@gmail.com \
    --cc=rprabhu@wnohang.net \
    --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 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.