I happened upon the DragonFlyBSD diary [1] and saw an entry about NFS performance improvements. After some digging I came across a patch from David Rhodus to increase NFS performance between Linux clients and (Free|DragonFly)BSD servers [2]. The patch doesn't appear to have been committed to DragonFlyBSD, so there may be problems with it. This issue was diagnosed and reported to hackers_at_ last September by Richard Sharpe [3]. In any case, I've seen the Linux/FreeBSD NFS issue pop up [4,5], so maybe this will help a bit. Attached is a version of the patch I modified for FreeBSD (to correct line numbers and whitespace). Credit should go to David Rhodus (and Richard Sharpe). I'm not running NFS at present (and don't have any Linux machines anyway), SO THIS PATCH HAS NOT BEEN TESTED IN ANY WAY. If it works, great. Also, it probably deserves mention in the man page. I'm sure there are other fixes that are applicable to FreeBSD, but I don't have the know-how at this point to determine which. [1] DragonFlyBSD diary: http://www.dragonflybsd.org/status/diary.cgi [2] Patch by David Rhodus posted to the DragonFlyBSD Digest: http://www.shiningsilence.com/dbsdlog/archives/000063.html [3] Post by Richard Sharpe to hackers_at_ last September: http://lists.freebsd.org/pipermail/freebsd-hackers/2003-September/003269.html [4] Linux/FreeBSD NFS issue: http://lists.freebsd.org/pipermail/freebsd-current/2004-February/021546.html http://66.102.7.104/search?q=cache:http://www.richardsharpe.com/ethereal-stuff.html#Time%20Sequence%20Graphs [5] PRs concerning NFS with Linux (among the many NFS PRs): http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/56461 http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/56500 Jon Noack --- sys/nfsserver/nfs_syscalls.c.orig Fri Nov 7 16:57:09 2003 +++ sys/nfsserver/nfs_syscalls.c Tue Mar 2 03:11:48 2004 _at__at_ -100,6 +100,9 _at__at_ &nfsrvw_procrastinate, 0, ""); SYSCTL_INT(_vfs_nfsrv, OID_AUTO, gatherdelay_v3, CTLFLAG_RW, &nfsrvw_procrastinate_v3, 0, ""); +static int sacksize = 2048; +SYSCTL_INT(_vfs_nfsrv, OID_AUTO, sacksize, CTLFLAG_RW, + &sacksize, 0, ""); static int nfssvc_addsock(struct file *, struct sockaddr *, struct thread *); _at__at_ -217,7 +220,7 _at__at_ } #endif if (so->so_type == SOCK_STREAM) - siz = NFS_MAXPACKET + sizeof (u_long); + siz = NFS_MAXPACKET + sizeof (u_long) + sacksize; else siz = NFS_MAXPACKET; error = soreserve(so, siz, siz);Received on Tue Mar 02 2004 - 02:24:47 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:45 UTC