>Number: 145395 >Category: bin >Synopsis: [nanobsd] [patch] Extremely slow nanobsd disk image creation >and 100% disk load on zfs >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Apr 04 23:00:13 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Alex Bakhtin >Release: 8.0-STABLE >Organization: >Environment: FreeBSD tarzan-new.private.flydrag.ru 8.0-STABLE FreeBSD 8.0-STABLE #1: Sat Apr 3 04:54:06 UTC 2010 bakh...@tarzan-new.private.flydrag.ru:/mnt/obj/usr/src.old/sys/DEBUG amd64
>Description: Extremely slow nanobsd disk image creation discovered on zfs. Image write speed is near 1 Megabyte/sec with 100% load of all zfs vdevs. This is because default -o sync behavior of mdconfig causing zfs to syncronize on every write. I think the best way to fix this is to provide an option in nanobsd.sh to allow user to switch to async mode (and use sync by default - POLA): # Use -o async option for mdconfig NANO_MD_ASYNC=0 After applying this patch image write speed is near 30 megs/sec on my HW. >How-To-Repeat: set NANO_OBJ to some zfs file system check image creation/partition duplication speed and disk load (f.e. using gstat). >Fix: Patch attached with submission follows: --- /usr/src/tools/tools/nanobsd/nanobsd.sh 2010-04-02 03:42:47.000000000 +0000 +++ nanobsd.sh 2010-04-05 06:43:41.000000000 +0000 @@ -128,6 +128,9 @@ # Can be "file" or "swap" NANO_MD_BACKING="file" +# Use -o async option for mdconfig +NANO_MD_ASYNC=0 + # Progress Print level PPLEVEL=3 @@ -428,6 +431,11 @@ MNT=${NANO_OBJ}/_.mnt mkdir -p ${MNT} + _NANO_MDCONFIG_OPTIONS=' ' + if [ "${NANO_MD_ASYNC}" == 1 ] ; then + _NANO_MDCONFIG_OPTIONS="-o async" + fi + if [ "${NANO_MD_BACKING}" = "swap" ] ; then MD=`mdconfig -a -t swap -s ${NANO_MEDIASIZE} -x ${NANO_SECTS} \ -y ${NANO_HEADS}` @@ -436,7 +444,7 @@ dd if=/dev/zero of=${IMG} bs=${NANO_SECTS}b \ count=`expr ${NANO_MEDIASIZE} / ${NANO_SECTS}` MD=`mdconfig -a -t vnode -f ${IMG} -x ${NANO_SECTS} \ - -y ${NANO_HEADS}` + -y ${NANO_HEADS} ${_NANO_MDCONFIG_OPTIONS}` fi trap "echo 'Running exit trap code' ; df -i ${MNT} ; umount ${MNT} || true ; mdconfig -d -u $MD" 1 2 15 EXIT >Release-Note: >Audit-Trail: >Unformatted: _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"