次のコマンドを実行した結果を解釈しようとしています
iostat -mnhyc
それは以下を生成します
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
NFSマウントから実際に読み取られているデータの量はどれくらいですか? rMB_nor/sまたはrMB_svr/sを検討する必要がありますか? iostatのマニュアルページには、rMB_nor/sはread(2)呼び出しを介してアプリケーションによって読み取られたMBの数であり、rMB_svr/sはNFSクライアントによってNFSREAD要求を介してサーバーから読み取られたMBの数であると記載されています。しかし、私はそれらの違いを正確に理解していません。 NFS READとread(2)の違いは何ですか? NFSマウントへのすべての読み取りをNFSREADにするべきではありませんか? rMB_svr/sがrMB_nor/s以上であると期待すべきではありませんか?
データがファイルシステムキャッシュで利用可能な場合、「read」syscallはデータを取得しますが、NFSサーバーに送信される読み取り要求はありません。これは、アプリケーションが同じブロックを複数回読み取る場合、またはユーザーが同じファイルを複数回開く場合に発生する可能性があります。ファイルシステムキャッシュをフラッシュして、iostatの結果を再度確認できます。
# echo 3 > /proc/sys/vm/drop_caches