Re: PATCH [NFSd] NFSv3/TCP

Greg Banks
2004-05-07T07:23:40Z

Neil Brown wrote:
>
> There was once a patch floating around which allowed a larger
> NFSSVC_MAXBLKSIZE on architectures with large page sizes, but it never
> got properly submitted I think.

Then please consider this a resend. I'll appreciate any guidance
about proper submission.

This patch has been in SGI's ProPack kernel for 6 months and resulted
in a significant improvement in NFS throughput at a number of customer
sites.

--- /usr/tmp/TmpDir.16250-0/linux/linux/include/linux/nfsd/const.h_1.5 Fri May 7
17:20:22 2004
+++ /usr/tmp/TmpDir.16250-0/linux/linux/include/linux/nfsd/const.h Fri May 7
17:20:22 2004
@@ -12,6 +12,7 @@
#include <linux/nfs.h>
#include <linux/nfs2.h>
#include <linux/nfs3.h>
+#include <asm/page.h>

/*
* Maximum protocol version supported by knfsd
@@ -19,9 +20,16 @@
#define NFSSVC_MAXVERS 3

/*
- * Maximum blocksize supported by daemon currently at 8K
+ * Maximum blocksize supported by daemon. We want the largest
+ * value which 1) fits in a UDP datagram less some headers
+ * 2) is a multiple of page size 3) can be successfully kmalloc()ed
+ * by each nfsd.
*/
-#define NFSSVC_MAXBLKSIZE (8*1024)
+#if PAGE_SIZE > (16*1024)
+#define NFSSVC_MAXBLKSIZE (32*1024)
+#else
+#define NFSSVC_MAXBLKSIZE (2*PAGE_SIZE)
+#endif

#ifdef __KERNEL__

Greg.
--
Greg Banks, R&D Software Engineer, SGI Australian Software Group.
I don't speak for SGI.