public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: David Chinner <dgc@sgi.com>
To: xaiki@sgi.com
Cc: xfs@oss.sgi.com
Subject: Re: [[PATCH, RESEND]] less AGs for single disks configs.
Date: Mon, 12 Nov 2007 20:01:47 +1100	[thread overview]
Message-ID: <20071112090147.GD66820511@sgi.com> (raw)
In-Reply-To: <1194839329-22003-6-git-send-email-xaiki@sgi.com>

On Mon, Nov 12, 2007 at 02:48:49PM +1100, xaiki@sgi.com wrote:
> From: Niv Sardi <xaiki@sgi.com>
> 
> get the underlying structure with get_subvol_stripe_wrapper(),
> and pass sunit | swidth as an argument to calc_default_ag_geometry().
> 
> if it is set, get the AG sizes bigger.
> 
> this also cleans up a typo:
> -       } else if (daflag)      /* User-specified AG size */
> +       } else if (daflag)      /* User-specified AG count */

No need to mention that you are cleaning up a typo in the description ;)

> ---
>  xfsprogs/mkfs/xfs_mkfs.c |   18 ++++++++++++------
>  1 files changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/xfsprogs/mkfs/xfs_mkfs.c b/xfsprogs/mkfs/xfs_mkfs.c
> index 78c2c77..4cf9975 100644
> --- a/xfsprogs/mkfs/xfs_mkfs.c
> +++ b/xfsprogs/mkfs/xfs_mkfs.c
> @@ -393,6 +393,7 @@ void
>  calc_default_ag_geometry(
>  	int		blocklog,
>  	__uint64_t	dblocks,
> +	int		multidisk,
>  	__uint64_t	*agsize,
>  	__uint64_t	*agcount)
>  {
> @@ -428,12 +429,13 @@ calc_default_ag_geometry(
>  	 *
>  	 * This scales us up smoothly between min/max AG sizes.
>  	 */
> +
>  	if (dblocks > GIGABYTES(512, blocklog))
> -		shift = 5;
> +		shift = 5 - (multidisk == 0);
>  	else if (dblocks > GIGABYTES(8, blocklog))
> -		shift = 4;
> +		shift = 4 - (multidisk == 0);
>  	else if (dblocks >= MEGABYTES(128, blocklog))
> -		shift = 3;
> +		shift = 3 - (multidisk == 0);
>  	else
>  		ASSERT(0);

Ok, so now we end up with half the number of allocation groups
at these different sizes. That's not exactly what I had in mind.
basically, what you've done works out as:

	> 512GB  old = 32 AGs, new = 16AGs
	> 8 GB   old = 16 AGs, new = 8AGs
	> 128MB  old = 8 AGs, new = 4AGs

on an 8Gb filesystem we still get 8 AGs, which is far too many.
on a 750GB disk, we still get 16AGs, which to far too many.

A single spindle, regardless of it's size, will have similar
seek characteristics so scaling the number of AGs with size
is the wrong thing to do - you don't get better parallelism
out of a single spindle, just more seeks and lower performance.
hence keeping the number of AGs fixed up to the point where
the AG size tops out (i.e. 4TB) seems like a better scaling
factor to me. i.e. something like:


	if (!multidisk) {
		if (dblocks >= TERABYTES(4, blocklog)) {
			blocks = XFS_AG_MAX_BLOCKS(blocklog);
			goto done;
		}
		agcount = 4;
		/* work out ag size here */
		goto done;
	}

I'd also like to see some test results showing the mkfs output
for the different configurations to confirm it works correctly
(i.e. that the corner cases work correctly).

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group

  reply	other threads:[~2007-11-12 13:25 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-29  7:56 Default mount options (that suck less) Niv Sardi
2007-10-29  8:55 ` David Chinner
2007-10-29 10:44   ` nscott
2007-10-29 14:01   ` Eric Sandeen
2007-10-29 21:26     ` David Chinner
2007-10-29 14:03 ` Eric Sandeen
2007-10-29 15:05   ` Hannes Dorbath
2007-10-29 15:07     ` Eric Sandeen
2007-10-30  8:40       ` Stewart Smith
2007-10-31  4:11         ` Nathan Scott
2007-10-31  4:13           ` Eric Sandeen
2007-10-29 21:05   ` David Chinner
2007-10-29 15:26 ` Eric Sandeen
2007-10-29 15:44   ` Chris Wedgwood
2007-10-29 15:51     ` Eric Sandeen
2007-10-30  0:45   ` Timothy Shimmin
2007-10-31 11:05     ` James Braid
2007-10-31 11:27       ` Justin Piszcz
2007-11-01  0:47         ` James Braid
2007-10-31 15:21       ` Eric Sandeen
2007-10-31 15:41       ` Chris Wedgwood
2007-11-01  0:32         ` James Braid
2007-10-29 23:48 ` David Chinner
2007-10-31 23:35 ` Niv Sardi
2007-10-31 23:40   ` Niv Sardi
2007-11-01  1:17     ` Niv Sardi
2007-11-01  2:27   ` Eric Sandeen
2007-11-12  2:28   ` Niv Sardi
2007-11-12  3:10     ` David Chinner
2007-11-12  3:48   ` [[PATCH, RESEND]] Default to log version 2 xaiki
2007-11-12  3:48     ` [[PATCH, RESEND]] Default to version 2 attributes xaiki
2007-11-12  3:48       ` [[PATCH, RESEND]] Drop the ability to turn unwritten extents off completly xaiki
2007-11-12  3:48         ` [[PATCH, RESEND]] V2 inodes per default, and move DFL bits to XFS_DFL_SB_VERSION_BITS, xaiki
2007-11-12  3:48           ` [[PATCH, RESEND]] reduce imaxpct for big filesystems, xaiki
2007-11-12  3:48             ` [[PATCH, RESEND]] less AGs for single disks configs xaiki
2007-11-12  9:01               ` David Chinner [this message]
2007-11-12 14:57                 ` Justin Piszcz
2007-11-12 20:31                   ` David Chinner
2007-11-12  6:33             ` [[PATCH, RESEND]] reduce imaxpct for big filesystems, David Chinner
2007-11-12  6:31           ` [[PATCH, RESEND]] V2 inodes per default, and move DFL bits to XFS_DFL_SB_VERSION_BITS, David Chinner
2007-11-13  0:51             ` Niv Sardi
2007-11-12  6:27         ` [[PATCH, RESEND]] Drop the ability to turn unwritten extents off completly David Chinner
2007-11-12  6:24       ` [[PATCH, RESEND]] Default to version 2 attributes David Chinner
2007-11-12  6:23     ` [[PATCH, RESEND]] Default to log version 2 David Chinner
2007-11-13  4:10 ` RESEND(2) xaiki
2007-11-13  4:10   ` [PATCH TAKE 2 1/6] Default to log version 2 xaiki
2007-11-13  4:10     ` [PATCH TAKE 2 2/6] Default to version 2 attributes xaiki
2007-11-13  4:10       ` [PATCH TAKE 2 3/6] Drop the ability to turn unwritten extents off completly xaiki
2007-11-13  4:10         ` [PATCH TAKE 2 4/6] V2 inodes per default, and move DFL bits to XFS_DFL_SB_VERSION_BITS, xaiki
2007-11-13  4:10           ` [PATCH TAKE 2 5/6] reduce imaxpct for big filesystems, xaiki
2007-11-13  4:10             ` [PATCH TAKE 2 6/6] less AGs for single disks configs xaiki
2007-11-13  4:47   ` RESEND(2) David Chinner

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=20071112090147.GD66820511@sgi.com \
    --to=dgc@sgi.com \
    --cc=xaiki@sgi.com \
    --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