[comp.unix.wizards] "find" thrashes NFS servers

lamaster@ames.arc.nasa.gov (Hugh LaMaster) (10/04/89)

Why does "find" thrash NFS servers?  Is there anything that can be done
about it?  

I have observed it on a wide variety of machines and situations, but I 
don't know the cause or cure, if any.  If you haven't tried it, run a
performance monitor on a server, go to a client, and find something
in /usr say or whatever is mounted on the server.  I have seen load averages
as high as 35 and 90% in system state on a 2 MIPS Sun server - 4 nfs daemons,
Xylogics 753/ Imprimis SMD-E drives.  I have also seen this effect on Ultrix.

  Hugh LaMaster, m/s 233-9,  UUCP ames!lamaster
  NASA Ames Research Center  ARPA lamaster@ames.arc.nasa.gov
  Moffett Field, CA 94035     
  Phone:  (415)694-6117       

jim@cs.strath.ac.uk (Jim Reid) (10/04/89)

In article <32961@ames.arc.nasa.gov> lamaster@ames.arc.nasa.gov (Hugh LaMaster) writes:
>Why does "find" thrash NFS servers?  Is there anything that can be done
>about it?  

Any recursive traverse of a remote file system will place a high load on
the server. The client has to make an NFS get file attributes request
for every file/directory it encounters. Find causes lots of these
requests to get generated. Servicing the requests places a high load on
the server. A UNIX NFS server handles these requests at interrupt time
and they can take a bit of time to process. If the requests arrive from
clients at a sustained high rate (i.e. as a client ploughs through a
remote filesystem), most of the CPU time will be given over to NFS
service, leaving little for anyone else.

The best answer is to stop find from wandering into a remote filesystem.
Most NFS implementations have a find command that understands a -fstype
option (or others like -mountstop) to help this. The same problem arises
from other recursive traverses: du and ls -R spring to mind.

		Jim