2002-04-07 H.J. Lu <hjl@lucon.org>
authorhjl <hjl>
Sun, 7 Apr 2002 20:50:53 +0000 (20:50 +0000)
committerhjl <hjl>
Sun, 7 Apr 2002 20:50:53 +0000 (20:50 +0000)
* etc/redhat/nfs.init: Read /etc/sysconfig/nfsd for NFS tuning.

ChangeLog
etc/redhat/nfs.init

index 5ed37f6..0cab806 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
-2002-02-280   Steven Whitehouse <steve@gw.chygwyn.com>
+2002-04-07  H.J. Lu <hjl@lucon.org>
+
+       * etc/redhat/nfs.init: Read /etc/sysconfig/nfsd for NFS tuning.
+
+2002-02-28   Steven Whitehouse <steve@gw.chygwyn.com>
              NeilBrown <neilb@cse.unsw.edu.au>
 
        Add support for fsid=nn export option so that device
index 406fef1..2f0d8dc 100755 (executable)
@@ -8,6 +8,7 @@
 #              networks. This service provides NFS server functionality, \
 #              which is configured via the /etc/exports file.
 # probe: true
+# config: /etc/sysconfig/nfsd
 
 # Source function library.
 . /etc/rc.d/init.d/functions
@@ -27,37 +28,76 @@ fi
 [ -x /usr/sbin/exportfs ] || exit 0
 [ -s /etc/exports ] || exit 0
 
-RQUOTAD=`type -path rpc.rquotad`       # Remote quota server
+# Check for and source configuration file otherwise set defaults
+# TUNE_QUEUE: controls whether to up the size of input queues
+NFSDCFG=/etc/sysconfig/nfsd
+if [ -f "$NFSDCFG" ]; then
+   # Tune nfs server settings
+   . "$NFSDCFG"
+else
+   # Set some defaults
+   TUNE_QUEUE ="no"
+   # Default to NFS version 3.
+   RPCMOUNTDOPTS=""
+fi
+
+# Number of servers to be started by default
+[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8
 
-# Number of servers to be started up by default
-RPCNFSDCOUNT=8
-# Default to NFS version 3.
-RPCMOUNTDOPTS=""
+# Remote quota server
+[ -z "$RQUOTAD" ] && RQUOTAD=`type -path rpc.rquotad`
+
+# Get the initial values for the input sock queues
+# at the time of running the script.
+if [ "$TUNE_QUEUE" = "yes" ]; then
+    RMEM_DEFAULT=`/sbin/sysctl -n net.core.rmem_default`
+    RMEM_MAX=`/sbin/sysctl -n net.core.rmem_max`
+    WMEM_DEFAULT=`/sbin/sysctl -n net.core.wmem_default`
+    WMEM_MAX=`/sbin/sysctl -n net.core.wmem_max`
+    # 256kb recommended minimum size based on SPECsfs NFS benchmarks
+    [ -z "$NFS_QS" ] && NFS_QS=262144
+fi
 
 # See how we were called.
 case "$1" in
   start)
        # Start daemons.
+       # Apply input queue increase for nfs server
+       if [ "$TUNE_QUEUE" = "yes" ]; then
+           /sbin/sysctl -w net.core.rmem_default=$NFSD_QS >/dev/null 2>&1
+           /sbin/sysctl -w net.core.rmem_max=$NFSD_QS >/dev/null 2>&1
+           /sbin/sysctl -w net.core.wmem_default=$NFSD_QS >/dev/null 2>&1
+           /sbin/sysctl -w net.core.wmem_max=$NFSD_QS >/dev/null 2>&1
+       fi
        action "Starting NFS services: " /usr/sbin/exportfs -r
-       if [ -n "$RQUOTAD" ]; then
-               echo -n "Starting NFS quotas: "
-               daemon rpc.rquotad
-               echo
+       if [ -n "$RQUOTAD" -a "$RQUOTAD" != "no" ]; then
+           echo -n "Starting NFS quotas: "
+           daemon rpc.rquotad
+           echo
        fi
        echo -n "Starting NFS daemon: "
        daemon rpc.nfsd $RPCNFSDCOUNT
        echo
 
-       # Let's see if we support NFS version 3.
-       /usr/sbin/rpcinfo -u localhost nfs 3 &>/dev/null
-       if [ $? -ne 0 ]; then
+       if [ -z "$RPCMOUNTDOPTS" ]; then
+           # Let's see if we support NFS version 3.
+           /usr/sbin/rpcinfo -u localhost nfs 3 &>/dev/null
+           if [ $? -ne 0 ]; then
                RPCMOUNTDOPTS="--no-nfs-version 3"
+           fi
        fi
 
        echo -n "Starting NFS mountd: "
        daemon rpc.mountd $RPCMOUNTDOPTS
        echo
        touch /var/lock/subsys/nfs
+       # reset input queue for rest of network services
+       if [ "$TUNE_QUEUE" = "yes" ]; then
+           /sbin/sysctl -w net.core.rmem_default=$RMEM_DEFAULT >/dev/null 2>&1
+           /sbin/sysctl -w net.core.rmem_max=$RMEM_MAX >/dev/null 2>&1
+           /sbin/sysctl -w net.core.wmem_default=$WMEM_DEFAULT >/dev/null 2>&1
+           /sbin/sysctl -w net.core.wmem_max=$WMEM_MAX >/dev/null 2>&1
+       fi
        ;;
   stop)
        # Stop daemons.