Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Dec 2001 15:57:07 +1100
From:      Peter Jeremy <peter.jeremy@alcatel.com.au>
To:        Matthew Dillon <dillon@apollo.backplane.com>
Cc:        Maxim Sobolev <sobomax@FreeBSD.ORG>, Sheldon Hearn <sheldonh@FreeBSD.ORG>, cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG
Subject:   Re: cvs commit: src/sbin/newfs newfs.8
Message-ID:  <20011212155707.A27238@gsmx07.alcatel.com.au>
In-Reply-To: <200112101846.fBAIkee47815@apollo.backplane.com>; from dillon@apollo.backplane.com on Mon, Dec 10, 2001 at 10:46:40AM -0800
References:  <200111271953.fARJrFc88452@freefall.freebsd.org> <3C10F171.FEE996EB@FreeBSD.org> <200112101846.fBAIkee47815@apollo.backplane.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--4Ckj6UjgE2iN1+kY
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On 2001-Dec-10 10:46:40 -0800, Matthew Dillon <dillon@apollo.backplane.com> wrote:
>    Interesting.  I just ran a test using VN for /usr/ports:
...
>    So /usr/ports alone will eat 100MB of additional disk space on a
>    2K/16K filesystem, which is quite significant.
>
>
>    /usr/src has these characteristics:
>
>Filesystem  1K-blocks     Used    Avail Capacity  Mounted on	(1K/8K)
>/dev/vn0c     4065694  1002597  2737842    27%    /mnt
>Filesystem  1K-blocks     Used    Avail Capacity  Mounted on	(2K/16K)
>/dev/vn0c     4129310  1046374  2752592    28%    /mnt

This is about 3 times the size I got.  Are you sure this is a standard
/usr/src?

I've just done something similar: /usr/doc, /usr/ports, -CURRENT
/usr/src, /usr/www and an i386 -STABLE /usr/obj, for each of 4/.5,
8/1, 16/2 and 32/4 block sizes, using a 2048MB VN filesystem.  Apart
from /usr/obj, all the files were checked out from a CVS repository
and include CVS metadata (it might be interesting to see the
difference with the metadata deleted, but I didn't think of that until
later).  All filesystems were freshly created using "-i 8192".  The
script I used is attached.

Size:        4096/512   %     8K/1K   16K/2K   %     32K/4K    %    inodes
Available   2030712         2032623  2031598        2029532
/usr/doc      33471  -6.87    35940    40648 13.10    50068  39.31    6089
/usr/obj       [1]          1136121  1163554  2.41  1222868   7.64   42136
/usr/ports   105662 -31.33   153868   256562 66.74   468208 204.29  108516
/usr/src     355361  -4.88   373586   411666 10.19   489496  31.03   52467
/usr/www      11146  -7.48    12047    13980 16.05    17992  49.35    2422

The % columns are wastage compared to the 8K/1K filesystem.  Apart from
/usr/ports, the cost of moving to 16K/2K seems fairly small.  Whether
any of these are "typical" filesystems is arguable.

IMHO, the cases that will suffer badly from 2K frags are:
- /usr/ports.
- Older one-file-per-article news servers
- /var/spool/mqueue on big mailservers

I don't see that any of these will bite a novice sysadmin:  Building
/usr/ports is more a "FreeBSD developer" environment.  And anyone
running a large news or mail server needs to have some ideas about
what they are doing.

[1]  I did a kernel build part-way through and this figure isn't accurate.

Peter

--4Ckj6UjgE2iN1+kY
Content-Type: application/x-sh
Content-Disposition: attachment; filename="space.sh"

#!/bin/sh
#
# Check space wastage on a variety of filesystems for a variety of
# block and frag sizes

FILE=/usr/tmp/foo
SIZE=2048

# Checkout FS from CVS into vn1
check_cvs() {
	echo "############## Checking $1/$2 cvs: $3 ###################"
	newfs -b $1 -f $2 -i 4096 /dev/vn1c
	mount -o async,noatime /dev/vn1c /foo
	df -ki /foo
	cd /foo
	cvs -Q -R -d /usr/ncvs checkout $3
	df -ki /foo
	cd
	umount /foo
}

# Check filesystems for given block/frag size
check_size() {
	echo "############## Checking $1/$2 FS ###################"
	check_cvs $1 $2 doc
	check_cvs $1 $2 ports
	check_cvs $1 $2 src
	check_cvs $1 $2 www

	
	echo "############## Checking $1/$2 /usr/obj ###################"
	newfs -b $1 -f $2 -i 4096 /dev/vn1c
	mount -o async,noatime /dev/vn1c /foo
	df -ki /foo
	cd /usr
	find obj | cpio -pd /foo
	df -ki /foo
	cd
	umount /foo
}

dd if=/dev/zero of=$FILE bs=1m count=$SIZE || echo $?
vnconfig -e -s labels vn1 $FILE || exit $?
disklabel -wr vn1 auto || exit $?

check_size 4096 512
check_size 8192 1024
check_size 16384 2048
check_size 32768 4096

vnconfig -u vn1
rm -f $FILE

--4Ckj6UjgE2iN1+kY--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011212155707.A27238>