From owner-cvs-sys Wed Nov 6 02:53:34 1996 Return-Path: owner-cvs-sys Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id CAA10540 for cvs-sys-outgoing; Wed, 6 Nov 1996 02:53:34 -0800 (PST) Received: (from dfr@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id CAA10519; Wed, 6 Nov 1996 02:53:21 -0800 (PST) Date: Wed, 6 Nov 1996 02:53:21 -0800 (PST) From: Doug Rabson Message-Id: <199611061053.CAA10519@freefall.freebsd.org> To: CVS-committers, cvs-all, cvs-sys Subject: cvs commit: src/sys/nfs nfs.h nfs_bio.c nfs_subs.c nfs_syscalls.c nfs_vfsops.c nfs_vnops.c nfsmount.h nfsnode.h Sender: owner-cvs-sys@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk dfr 96/11/06 02:53:20 Modified: sys/nfs nfs.h nfs_bio.c nfs_subs.c nfs_syscalls.c nfs_vfsops.c nfs_vnops.c nfsmount.h nfsnode.h Log: Improve the queuing algorithms used by NFS' asynchronous i/o. The existing mechanism uses a global queue for some buffers and the vp->b_dirtyblkhd queue for others. This turns sequential writes into randomly ordered writes to the server, affecting both read and write performance. The existing mechanism also copes badly with hung servers, tending to block accesses to other servers when all the iods are waiting for a hung server. The new mechanism uses a queue for each mount point. All asynchronous i/o goes through this queue which preserves the ordering of requests. A simple mechanism ensures that the iods are shared out fairly between active mount points. This removes the sysctl variable vfs.nfs.dwrite since the new queueing mechanism removes the old delayed write code completely. This should go into the 2.2 branch. Revision Changes Path 1.19 +2 -2 src/sys/nfs/nfs.h 1.29 +85 -35 src/sys/nfs/nfs_bio.c 1.34 +4 -4 src/sys/nfs/nfs_subs.c 1.15 +40 -40 src/sys/nfs/nfs_syscalls.c 1.31 +6 -1 src/sys/nfs/nfs_vfsops.c 1.37 +2 -1 src/sys/nfs/nfs_vnops.c 1.8 +22 -1 src/sys/nfs/nfsmount.h 1.16 +3 -1 src/sys/nfs/nfsnode.h