1

I'm trying to interpret the results of running the following command

iostat -mnhyc

It produces the following

Filesystem:               rMB_nor/s    wMB_nor/s    rMB_dir/s    wMB_dir/s    rMB_svr/s    wMB_svr/s     ops/s    rops/s    wops/s

/NFS_mount_path/    
                         376.46         0.00         0.00         0.00         0.98         0.00    132.80    129.60      0.00

How much data is actually being read from my NFS mount? Should I consider rMB_nor/s or rMB_svr/s? The man page for iostat says rMB_nor/s is the number of MB read by applications via the read(2) call, and rMB_svr/s is the number of MB read from the server by the NFS client via an NFS READ request. But, I don't understand exactly what is different about them. What is the difference between an NFS READ and a read(2)? Shouldn't all reads to the NFS mount be an NFS READ? Shouldn't I expect rMB_svr/s to be greater than or equal to rMB_nor/s?

adhanlon
  • 164
  • 1
  • 1
  • 6

1 Answers1

1

If data is available in the file system cache, then 'read' syscall will get the data, but there will be no read requests sent to the NFS server. This can happen when an application reads the same blocks several times, or when user opens the same file multiple times. You can flush the file system cache and watch the result of iostat again:

# echo 3 > /proc/sys/vm/drop_caches
kofemann
  • 4,626
  • 1
  • 25
  • 30