Date: Sat, 1 Feb 2014 22:53:48 -0500 (EST) From: Rick Macklem <rmacklem@uoguelph.ca> To: J David <j.david.lists@gmail.com> Cc: freebsd-net@freebsd.org, Garrett Wollman <wollman@freebsd.org> Subject: Re: Terrible NFS performance under 9.2-RELEASE? Message-ID: <251642279.1400386.1391313228315.JavaMail.root@uoguelph.ca> In-Reply-To: <CABXB=RQDDn2AW0tU4hb9mS5hN5B52VFcCGiicv0SCkMB7SEKAg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
J David wrote:
> On Fri, Jan 31, 2014 at 6:16 PM, Rick Macklem <rmacklem@uoguelph.ca>
> wrote:
> > You can certainly try "-o rsize=61440,wsize=61440" (assuming a 4K
> > page size)
> > for the mount, if you'd like.
>
> This has previously been tested with all 4k steps between 16k and
> 32k.
> All of them perform worse than
>
> With 61440, NFS fails outright on the random read test:
>
> $ iozone -e -I -s 1g -r 4k -i 0 -i 2
>
Btw, if you do want to test with O_DIRECT ("-I"), you should enable
direct io in the client.
sysctl vfs.nfs.nfs_directio_enable=1
I just noticed that it is disabled by default. This means that your
"-I" was essentially being ignored by the FreeBSD client.
It also explains why Linux isn't doing a read before write, since
that wouldn't happen for direct I/O. You should test Linux without "-I"
and see if it still doesn't do the read before write, including a "-r 2k"
to avoid the "just happens to be a page size" case.
rick
> Iozone: Performance Test of File I/O
>
> Version $Revision: 3.420 $
>
> Compiled for 64 bit mode.
>
> Build: freebsd
>
> [...]
>
> Include fsync in write timing
>
> O_DIRECT feature enabled
>
> File size set to 1048576 KB
>
> Record Size 4 KB
>
> Command line used: iozone -e -I -s 1g -r 4k -i 0 -i 2
>
> Output is in Kbytes/sec
>
> Time Resolution = 0.000005 seconds.
>
> Processor cache size set to 1024 Kbytes.
>
> Processor cache line size set to 32 bytes.
>
> File stride size set to 17 * record size.
>
> random
> random bkwd record stride
>
> KB reclen write rewrite read reread read
> write read rewrite read fwrite frewrite fread freread
>
> 1048576 4 24688 23891
>
> Error reading block at 1073729536
>
> read: Bad file descriptor
>
>
> Upon using the -w option, which leaves the file intact on exit, it's
> possible to see that it's not even 1gig in length:
>
> $ ls -aln iozone.tmp
>
> -rw-r----- 1 1000 0 1073709056 Feb 1 01:18 iozone.tmp
>
>
> It's 32k short, which is a pretty surprising result.
>
> Thanks!
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to
> "freebsd-net-unsubscribe@freebsd.org"
>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?251642279.1400386.1391313228315.JavaMail.root>
