Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Jul 2008 20:26:46 +0200
From:      Peter Schuller <peter.schuller@infidyne.com>
To:        Pawel Jakub Dawidek <pjd@freebsd.org>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: Asynchronous writing to zvols (ZFS)
Message-ID:  <200807272026.54907.peter.schuller@infidyne.com>
In-Reply-To: <20080726205118.GB1345@garage.freebsd.pl>
References:  <200807262005.54235.peter.schuller@infidyne.com> <20080726205118.GB1345@garage.freebsd.pl>

next in thread | previous in thread | raw e-mail | index | archive | help
--nextPart101433479.frefnM8Eff
Content-Type: text/plain;
  charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hello,

> The problem is that we don't between async and sync I/O request on GEOM
> level, that's why I decided to commit a ZIL log after each write, which
> wasn't very smart it seems. This is handled differently in version I've
> in perforce. Could you try the below patch and see how it performs now?
>
> 	http://people.freebsd.org/~pjd/patches/zvol.c.patch

The above (though the files has moved, for anyone else reading wanting to=20
apply) does eliminate the synchronicity problem. I am now seeing 5-15=20
MB/second write speeds to the zvol, with 100% constituent disk utilization.

I am not sure why I don't see faster writes; I get more like 40-60 when=20
writing to a file in a ZFS file system on the same pool. But regardless, th=
e=20
synchronisity issue is gone.

Does your comment above regarding distinguishing bewteen sync and asynch ap=
ply=20
to the section of code affected by the above patch, or did you mean there i=
s=20
some other place above the zvol handling where there is lack of distinction?

That is, is the end-effect of the above change that we *never* do synchrono=
us=20
writes (because the fact that a write is supposed to be synchronous is=20
somehow lost before it reaches that point)?

I understand a zil_commit is only required on BIO_FLUSH requests, which is=
=20
what the patch fixes. But I get the impression from your phrasing above tha=
t=20
the reason that a zil_commit was done on every I/O from the get go was in a=
n=20
effort to honor actual synchronous writes by conservatively *always* doing=
=20
synchronous writes, because the synchronicity of synchronous writes would n=
ot=20
be propagated down to the zvol class. I wouldn't want to sacrifice=20
correctness just to get the speed ;)

=2D-=20
/ Peter Schuller

PGP userID: 0xE9758B7D or 'Peter Schuller <peter.schuller@infidyne.com>'
Key retrieval: Send an E-Mail to getpgpkey@scode.org
E-Mail: peter.schuller@infidyne.com Web: http://www.scode.org


--nextPart101433479.frefnM8Eff
Content-Type: application/pgp-signature; name=signature.asc 
Content-Description: This is a digitally signed message part.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (FreeBSD)

iEYEABECAAYFAkiMve4ACgkQDNor2+l1i323JQCeJGz+HHjH3+7otXK8uQTgiCHx
N/MAn2pTreSDYOpn4KrzwXM2CJIe9OLr
=PNCr
-----END PGP SIGNATURE-----

--nextPart101433479.frefnM8Eff--



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