From: "Darrick J. Wong" <djwong@kernel.org>
To: sandeen@sandeen.net
Cc: Christoph Hellwig <hch@lst.de>,
Dave Chinner <dchinner@redhat.com>, Theodore Ts'o <tytso@mit.edu>,
linux-xfs@vger.kernel.org, allison.henderson@oracle.com
Subject: [PATCH 19/17] mkfs: increase default log size for new (aka bigtime) filesystems
Date: Fri, 25 Feb 2022 18:54:50 -0800 [thread overview]
Message-ID: <20220226025450.GY8313@magnolia> (raw)
In-Reply-To: <164263809453.863810.8908193461297738491.stgit@magnolia>
From: Darrick J. Wong <djwong@kernel.org>
Recently, the upstream kernel maintainer has been taking a lot of heat on
account of writer threads encountering high latency when asking for log
grant space when the log is small. The reported use case is a heavily
threaded indexing product logging trace information to a filesystem
ranging in size between 20 and 250GB. The meetings that result from the
complaints about latency and stall warnings in dmesg both from this use
case and also a large well known cloud product are now consuming 25% of
the maintainer's weekly time and have been for months.
For small filesystems, the log is small by default because we have
defaulted to a ratio of 1:2048 (or even less). For grown filesystems,
this is even worse, because big filesystems generate big metadata.
However, the log size is still insufficient even if it is formatted at
the larger size.
Therefore, if we're writing a new filesystem format (aka bigtime), bump
the ratio unconditionally from 1:2048 to 1:256. On a 220GB filesystem,
the 99.95% latencies observed with a 200-writer file synchronous append
workload running on a 44-AG filesystem (with 44 CPUs) spread across 4
hard disks showed:
Log Size (MB) Latency (ms) Throughput (MB/s)
10 520 243
20 220 308
40 140 360
80 92 363
160 86 364
For 4 NVME, the results were:
10 201 409
20 177 488
40 122 550
80 120 549
160 121 545
Hence we increase the ratio by 16x because there doesn't seem to be much
improvement beyond that, and we don't want the log to grow /too/ large.
This change does not affect filesystems larger than 4TB, nor does it
affect formatting to older formats.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
mkfs/xfs_mkfs.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index 96682f9a..7178d798 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -3308,7 +3308,17 @@ _("external log device size %lld blocks too small, must be at least %lld blocks\
/* internal log - if no size specified, calculate automatically */
if (!cfg->logblocks) {
- if (cfg->dblocks < GIGABYTES(1, cfg->blocklog)) {
+ if (cfg->sb_feat.bigtime) {
+ /*
+ * Starting with bigtime, everybody gets a 256:1 ratio
+ * of fs size to log size unless they say otherwise.
+ * Larger logs reduce contention for log grant space,
+ * which is now a problem with the advent of small
+ * non-rotational storage devices.
+ */
+ cfg->logblocks = (cfg->dblocks << cfg->blocklog) / 256;
+ cfg->logblocks = cfg->logblocks >> cfg->blocklog;
+ } else if (cfg->dblocks < GIGABYTES(1, cfg->blocklog)) {
/* tiny filesystems get minimum sized logs. */
cfg->logblocks = min_logblocks;
} else if (cfg->dblocks < GIGABYTES(16, cfg->blocklog)) {
next prev parent reply other threads:[~2022-02-26 2:54 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-20 0:21 [PATCHSET 00/17] xfsprogs: various 5.15 fixes Darrick J. Wong
2022-01-20 0:21 ` [PATCH 01/17] libxcmd: use emacs mode for command history editing Darrick J. Wong
2022-01-20 0:21 ` [PATCH 02/17] libxfs: shut down filesystem if we xfs_trans_cancel with deferred work items Darrick J. Wong
2022-02-04 21:36 ` Eric Sandeen
2022-02-04 21:47 ` Darrick J. Wong
2022-01-20 0:21 ` [PATCH 03/17] libxfs: don't leave dangling perag references from xfs_buf Darrick J. Wong
2022-02-04 22:05 ` Eric Sandeen
2022-01-20 0:21 ` [PATCH 04/17] libfrog: move the GETFSMAP definitions into libfrog Darrick J. Wong
2022-02-04 23:18 ` Eric Sandeen
2022-02-05 0:36 ` Darrick J. Wong
2022-02-07 1:05 ` Dave Chinner
2022-02-07 17:09 ` Darrick J. Wong
2022-02-07 21:32 ` Eric Sandeen
2022-02-10 3:33 ` Dave Chinner
2022-02-08 16:46 ` [PATCH v1.1 04/17] libfrog: always use the kernel GETFSMAP definitions Darrick J. Wong
2022-02-25 22:35 ` Eric Sandeen
2022-01-20 0:22 ` [PATCH 05/17] misc: add a crc32c self test to mkfs and repair Darrick J. Wong
2022-02-04 23:23 ` Eric Sandeen
2022-01-20 0:22 ` [PATCH 06/17] libxfs-apply: support filterdiff >= 0.4.2 only Darrick J. Wong
2022-01-20 0:22 ` [PATCH 07/17] xfs_db: fix nbits parameter in fa_ino[48] functions Darrick J. Wong
2022-02-25 21:45 ` Eric Sandeen
2022-01-20 0:22 ` [PATCH 08/17] xfs_repair: explicitly cast resource usage counts in do_warn Darrick J. Wong
2022-02-25 21:46 ` Eric Sandeen
2022-01-20 0:22 ` [PATCH 09/17] xfs_repair: explicitly cast directory inode numbers " Darrick J. Wong
2022-02-25 21:48 ` Eric Sandeen
2022-01-20 0:22 ` [PATCH 10/17] xfs_repair: fix indentation problems in upgrade_filesystem Darrick J. Wong
2022-02-25 21:53 ` Eric Sandeen
2022-01-20 0:22 ` [PATCH 11/17] xfs_repair: update secondary superblocks after changing features Darrick J. Wong
2022-02-25 21:57 ` Eric Sandeen
2022-01-20 0:22 ` [PATCH 12/17] xfs_scrub: report optional features in version string Darrick J. Wong
2022-01-20 1:16 ` Theodore Ts'o
2022-01-20 1:28 ` Darrick J. Wong
2022-01-20 1:32 ` [PATCH v2 " Darrick J. Wong
2022-02-25 22:14 ` Eric Sandeen
2022-02-26 0:04 ` Darrick J. Wong
2022-02-26 2:48 ` Darrick J. Wong
2022-02-26 2:53 ` [PATCH v3 " Darrick J. Wong
2022-02-28 21:38 ` Eric Sandeen
2022-01-20 0:22 ` [PATCH 13/17] mkfs: prevent corruption of passed-in suboption string values Darrick J. Wong
2022-01-20 0:22 ` [PATCH 14/17] mkfs: add configuration files for the last few LTS kernels Darrick J. Wong
2022-01-20 0:22 ` [PATCH 15/17] mkfs: document sample configuration file location Darrick J. Wong
2022-01-20 0:23 ` [PATCH 16/17] mkfs: add a config file for x86_64 pmem filesystems Darrick J. Wong
2022-02-25 22:21 ` Eric Sandeen
2022-02-26 2:38 ` Darrick J. Wong
2022-02-26 2:52 ` [PATCH v2 " Darrick J. Wong
2022-02-28 21:37 ` Eric Sandeen
2022-01-20 0:23 ` [PATCH 17/17] mkfs: enable inobtcount and bigtime by default Darrick J. Wong
2022-02-25 22:22 ` Eric Sandeen
2022-01-28 22:44 ` [PATCH 18/17] xfs_scrub: fix reporting if we can't open raw block devices Darrick J. Wong
2022-01-31 12:28 ` Christoph Hellwig
2022-02-26 2:54 ` Darrick J. Wong [this message]
2022-02-26 21:37 ` [PATCH 19/17] mkfs: increase default log size for new (aka bigtime) filesystems Dave Chinner
2022-02-28 23:22 ` Darrick J. Wong
2022-03-01 0:42 ` Dave Chinner
2022-03-01 2:38 ` Darrick J. Wong
2022-03-01 15:55 ` Brian Foster
2022-03-01 3:10 ` Dave Chinner
2022-02-28 21:44 ` Eric Sandeen
2022-03-01 2:21 ` Darrick J. Wong
2022-03-01 2:44 ` Eric Sandeen
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=20220226025450.GY8313@magnolia \
--to=djwong@kernel.org \
--cc=allison.henderson@oracle.com \
--cc=dchinner@redhat.com \
--cc=hch@lst.de \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@sandeen.net \
--cc=tytso@mit.edu \
/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).