From: "Darrick J. Wong" <djwong@kernel.org>
To: Dave Chinner <david@fromorbit.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 3/4] xfs_io: add a quiet option to bulkstat
Date: Tue, 26 Apr 2022 17:38:22 -0700 [thread overview]
Message-ID: <20220427003822.GW17025@magnolia> (raw)
In-Reply-To: <20220426234453.682296-4-david@fromorbit.com>
On Wed, Apr 27, 2022 at 09:44:52AM +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
>
> This is purely for driving the kernel bulkstat operations as hard
> as userspace can drive them - we don't care about the actual output,
> just want to drive maximum IO rates through the inode cache.
>
> Bulkstat at 3.4 million inodes a second via xfs_io currently burns
> about 30% of CPU time just formatting and outputting the stat
> information to stdout and dumping it to /dev/null.
>
> wall time rate IOPS bandwidth
> unpatched 17.823s 3.4M/s 70k 1.9GB/s
> with -q 15.682 6.1M/s 150k 3.5GB/s
>
> The disks are at about 30% of max bandwidth and only at 70kiops, so
> this CPU can be used to drive the kernel and IO subsystem harder.
>
> Wall time doesn't really go down on this specific test because the
> increase in inode cache turn-over (about 10GB/s of cached metadata
> (in-core inodes and buffers) is being cycled through memory on a
> machine with 16GB of RAM) and that hammers memory reclaim into a
> utter mess that often takes seconds for it to recover from...
>
> Signed-off-by: Dave Chinner <dchinner@redhat.com>
Heh, moar bulkstat.
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
--D
> ---
> io/bulkstat.c | 9 ++++++++-
> man/man8/xfs_io.8 | 6 +++++-
> 2 files changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/io/bulkstat.c b/io/bulkstat.c
> index 201470b29223..411942006591 100644
> --- a/io/bulkstat.c
> +++ b/io/bulkstat.c
> @@ -67,6 +67,7 @@ bulkstat_help(void)
> "\n"
> " -a <agno> Only iterate this AG.\n"
> " -d Print debugging output.\n"
> +" -q Be quiet, no output.\n"
> " -e <ino> Stop after this inode.\n"
> " -n <nr> Ask for this many results at once.\n"
> " -s <ino> Inode to start with.\n"
> @@ -104,11 +105,12 @@ bulkstat_f(
> uint32_t ver = 0;
> bool has_agno = false;
> bool debug = false;
> + bool quiet = false;
> unsigned int i;
> int c;
> int ret;
>
> - while ((c = getopt(argc, argv, "a:de:n:s:v:")) != -1) {
> + while ((c = getopt(argc, argv, "a:de:n:qs:v:")) != -1) {
> switch (c) {
> case 'a':
> agno = cvt_u32(optarg, 10);
> @@ -135,6 +137,9 @@ bulkstat_f(
> return 1;
> }
> break;
> + case 'q':
> + quiet = true;
> + break;
> case 's':
> startino = cvt_u64(optarg, 10);
> if (errno) {
> @@ -198,6 +203,8 @@ _("bulkstat: startino=%lld flags=0x%x agno=%u ret=%d icount=%u ocount=%u\n"),
> for (i = 0; i < breq->hdr.ocount; i++) {
> if (breq->bulkstat[i].bs_ino > endino)
> break;
> + if (quiet)
> + continue;
> dump_bulkstat(&breq->bulkstat[i]);
> }
> }
> diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8
> index e3c5d3ea99dd..d876490bf65d 100644
> --- a/man/man8/xfs_io.8
> +++ b/man/man8/xfs_io.8
> @@ -1143,7 +1143,7 @@ for the current memory mapping.
>
> .SH FILESYSTEM COMMANDS
> .TP
> -.BI "bulkstat [ \-a " agno " ] [ \-d ] [ \-e " endino " ] [ \-n " batchsize " ] [ \-s " startino " ] [ \-v " version" ]
> +.BI "bulkstat [ \-a " agno " ] [ \-d ] [ \-e " endino " ] [ \-n " batchsize " ] [ \-q ] [ \-s " startino " ] [ \-v " version" ]
> Display raw stat information about a bunch of inodes in an XFS filesystem.
> Options are as follows:
> .RS 1.0i
> @@ -1164,6 +1164,10 @@ Defaults to stopping when the system call stops returning results.
> Retrieve at most this many records per call.
> Defaults to 4,096.
> .TP
> +.BI \-q
> +Run quietly.
> +Does not parse or output retrieved bulkstat information.
> +.TP
> .BI \-s " startino"
> Display inode allocation records starting with this inode.
> Defaults to the first inode in the filesystem.
> --
> 2.35.1
>
next prev parent reply other threads:[~2022-04-27 0:38 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-26 23:44 [PATCH 0/4] xfsprogs: fixes and updates Dave Chinner
2022-04-26 23:44 ` [PATCH 1/4] metadump: handle corruption errors without aborting Dave Chinner
2022-04-27 0:45 ` Darrick J. Wong
2022-04-27 1:26 ` Dave Chinner
2022-04-26 23:44 ` [PATCH 2/4] metadump: be careful zeroing corrupt inode forks Dave Chinner
2022-04-27 0:40 ` Darrick J. Wong
2022-04-27 1:27 ` Dave Chinner
2022-04-26 23:44 ` [PATCH 3/4] xfs_io: add a quiet option to bulkstat Dave Chinner
2022-04-27 0:38 ` Darrick J. Wong [this message]
2022-04-26 23:44 ` [PATCH 4/4] xfsprogs: autoconf modernisation Dave Chinner
2022-04-27 0:42 ` Darrick J. Wong
2022-04-27 1:33 ` Dave Chinner
2022-05-26 18:49 ` Eric Sandeen
2022-05-26 19:44 ` Eric Sandeen
2022-05-27 1:11 ` Dave Chinner
2022-05-27 6:17 ` Christoph Hellwig
2022-05-27 17:04 ` Darrick J. Wong
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=20220427003822.GW17025@magnolia \
--to=djwong@kernel.org \
--cc=david@fromorbit.com \
--cc=linux-xfs@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).