rbd devices report the following geometry: $ blockdev --getss --getpbsz --getiomin --getioopt /dev/rbd0 512 512 4194304 4194304 (4M is unnecessarily high and will probably be made configurable and changed to 64K in the future. By default, the new bluestore backend does double-write for I/Os smaller than 64K.) If pbsz != iomin, mkfs.xfs goes into multidisk mode and, under the assumption that larger multidisk filesystems will have more devices, chooses a higher agcount. Though rbd devices are indeed backed by multiple OSD devices, it appears that high agcount actually degrades the performance with multiple rbd devices on the same host. Commit 9a106b5fbb88 ("mkfs.xfs: Don't stagger AG for a single disk") has set a precedent for treating sunit == swidth specially. Take it one step further. Signed-off-by: Ilya Dryomov <idryomov@xxxxxxxxx> --- mkfs/xfs_mkfs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 2e53c1e83b6a..c3efa30005a2 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -2650,8 +2650,8 @@ _("agsize (%s) not a multiple of fs blk size (%d)\n"), (cfg->dblocks % cfg->agcount != 0); } else { calc_default_ag_geometry(cfg->blocklog, cfg->dblocks, - cfg->dsunit, &cfg->agsize, - &cfg->agcount); + cfg->dsunit != cfg->dswidth, + &cfg->agsize, &cfg->agcount); } } -- 2.14.4