Number of necessary biod threads

The biod threads are handled internally within NFS. The number of threads is self-tuning in that NFS creates and destroys threads as needed, based on NFS load.

You can tune the maximum number of biod threads per mount with the biod mount option.

Because biod threads handle one read or write request at a time and because NFS response time is often the largest component of overall response time, it is undesirable to block applications for lack of a biod thread.

Determining the best number of maximum biod threads is an iterative process. The guidelines listed below are solely a reasonable starting point. The general considerations for configuring biod threads are as follows:

  • Increasing the number of threads cannot compensate for inadequate client or server processor power or memory, or inadequate server disk bandwidth. Before changing the number of threads, you should check server and client resource-utilization levels with the iostat and vmstat commands
  • If the CPU or disk subsystem is already at near-saturation level, an increase in the number of threads will not yield better performance
  • Only reads and writes go through a biod thread
  • The defaults are generally a good starting point, but increasing the number of biod threads for a mount point might be desirable if multiple application threads are accessing files on that mount point simultaneously. For example, you might want to estimate the number of files that will be written simultaneously. Ensure that you have at least two biod threads per file to support read ahead or write behind activity.
  • If you have fast client workstations connected to a slower server, you might have to constrain the rate at which the clients generate NFS requests. A potential solution is to reduce the number of biod threads on the clients, paying attention to the relative importance of each client's workload and response time requirements. Increasing the number of biod threads on the client negatively impacts server performance because it allows the client to send more requests at once, further loading the network and the server. In cases where a client overruns the server, it might be necessary to reduce the number of biod threads to one.