Date: Tue, 8 Dec 2009 17:11:10 -0600 From: Kevin <kevin@your.org> To: Pawel Jakub Dawidek <pjd@FreeBSD.org> Cc: freebsd-fs@freebsd.org Subject: Re: "zfs receive" lock time Message-ID: <EBC441B4-E2B6-4FD7-8303-E531226A83F3@your.org> In-Reply-To: <20091204202134.GA1716@garage.freebsd.pl> References: <30582AF2-B1E8-4C07-A487-C220845963D2@your.org> <20091204202134.GA1716@garage.freebsd.pl>
next in thread | previous in thread | raw e-mail | index | archive | help
On Dec 4, 2009, at 2:21 PM, Pawel Jakub Dawidek wrote: > On Wed, Dec 02, 2009 at 02:55:23PM -0600, Kevin wrote: >> >> If the slave is completely idle, "zfs receive" takes a fraction of a >> second. If the slave has been very busy (lots of read activity, no >> writes - the slave has everything mounted read only), suddenly "zfs >> receive" can take 30 seconds or more to complete, the whole time it >> has the filesystem locked. For example, I'd see: >> > > Read activity is related to the dataset on the slave that is being > received? Is that right? > Correct. > There are two operations that can suspend you file system this way: > rollback and receive. The suspend is done by acquiring write lock for > the given file system where every other operation acquires read lock. > In the end receive to acquire write lock has to wait for all read > operations to finish. > > I'm not sure how your applications use it, but if files are open for > short period of time only and then closed, you could do something like > this: > > master# curtime=`date "+%Y%m%d%H%M%S"` > master# zfs snapshot pool/fs@${curtime} > master# zfs send -i pool/fs@${oldtime} pool/fs@${curtime} | \ > ssh slave zfs recv pool/fs > slave# zfs clone pool/fs@${curtime} pool/fs_${curtime} > slave# ln -fs /pool/fs_${curtime} /pool/usethis > > Then point your application to use directory /pool/usethis/ (clone, > instead of received file system). And clean up clones as you wish. > Read activity on clones shouldn't affect received file system. This worked much much better, thank you! I'm still a little blurry on why "zfs receive" is so so so much slower (going from ms to >20s) if there's any read activity going on at all, but this seems to make it not matter to us. -- Kevin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EBC441B4-E2B6-4FD7-8303-E531226A83F3>