Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Jan 2002 10:12:12 -0500
From:      Steve Shorter <steve@nomad.lets.net>
To:        freebsd-stable@freebsd.org
Subject:   "server not responding" / "is alive again" NFS tunables
Message-ID:  <20020116101212.A610@nomad.lets.net>

next in thread | raw e-mail | index | archive | help
Howdy!


	I have a dedicated NFS server with 16 nfsd's running, connected
to SCSI raid/softupdates and good network connectivity/switching. Under
moderate or even sometimes light load the clients(7 of them) log messages

     nfs server 192.168.10.2:/mnt: not responding
     nfs server 192.168.10.2:/mnt: is alive again

 several times per minute. They always have the same timestamp. Performance
is not noticably impaired, but I am wondering if this situation will eventually
become a performance barrier as the system ramps up to full production, if
the above log messages mean that packets must be delayed or retransmitted.

	I have experimented with both udp/tcp mounts with various rw sizes
ranging from 8192 - 32768. tcp with rw=32768 was the worst case wrt above, and
am currently using udp mounts with default rw. Running 8 or 16 nfsd gives no
noticable difference wrt the above either.

	I can find no issues on the server side, and was wondering if
there is a timeout threshold on the client side that is triggering the
messages/condition and whether adjusting the compile time tunables in
sys/nfs/nfs.h can aleviate the problem(if it even is a problem).

	The server is 4.5-PRE, the clients are 4.4-RELEASE. I know
that there have been a log of NFS changes in 4.5, but testing 4.5 on
the clients is problematic. Do any of those changes affect the above?

	So which variable(s) in nfs.h affect the client side and contribute
to the server timeout situation. Or are there any other suggestions?

	Here are the variables in nfs.h(4.5-RC) for your amusement. Thanks

/*
 * Tunable constants for nfs
 */

#define	NFS_MAXIOVEC	34
#define NFS_TICKINTVL	5		/* Desired time for a tick (msec) */
#define NFS_HZ		(hz / nfs_ticks) /* Ticks/sec */
#define	NFS_TIMEO	(1 * NFS_HZ)	/* Default timeout = 1 second */
#define	NFS_MINTIMEO	(1 * NFS_HZ)	/* Min timeout to use */
#define	NFS_MAXTIMEO	(60 * NFS_HZ)	/* Max timeout to backoff to */
#define	NFS_MINIDEMTIMEO (5 * NFS_HZ)	/* Min timeout for non-idempotent ops*/
#define	NFS_MAXREXMIT	100		/* Stop counting after this many */
#define	NFS_MAXWINDOW	1024		/* Max number of outstanding requests */
#define	NFS_RETRANS	10		/* Num of retrans for soft mounts */
#define	NFS_MAXGRPS	16		/* Max. size of groups list */
#ifndef NFS_MINATTRTIMO
#define	NFS_MINATTRTIMO 3		/* VREG attrib cache timeout in sec */
#endif
#ifndef NFS_MAXATTRTIMO
#define	NFS_MAXATTRTIMO 60
#endif
#ifndef NFS_MINDIRATTRTIMO
#define	NFS_MINDIRATTRTIMO 30		/* VDIR attrib cache timeout in sec */
#endif
#ifndef NFS_MAXDIRATTRTIMO
#define	NFS_MAXDIRATTRTIMO 60
#endif
#define	NFS_WSIZE	8192		/* Def. write data size <= 8192 */
#define	NFS_RSIZE	8192		/* Def. read data size <= 8192 */
#define NFS_READDIRSIZE	8192		/* Def. readdir size */
#define	NFS_DEFRAHEAD	1		/* Def. read ahead # blocks */
#define	NFS_MAXRAHEAD	4		/* Max. read ahead # blocks */
#define	NFS_MAXUIDHASH	64		/* Max. # of hashed uid entries/mp */
#define	NFS_MAXASYNCDAEMON 	20	/* Max. number async_daemons runnable */
#define NFS_MAXGATHERDELAY	100	/* Max. write gather delay (msec) */
#ifndef NFS_GATHERDELAY
#define NFS_GATHERDELAY		10	/* Default write gather delay (msec) */
#endif
#define	NFS_DIRBLKSIZ	4096		/* Must be a multiple of DIRBLKSIZ */
#ifdef _KERNEL
#define	DIRBLKSIZ	512		/* XXX we used to use ufs's DIRBLKSIZ */
#endif



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




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