iostat 中 rMB_nor/s、rMB_dir/s 和 rMB_svr/s 有什么区别?

iostat 中 rMB_nor/s、rMB_dir/s 和 rMB_svr/s 有什么区别?

我正在尝试解释运行以下命令的结果

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 客户端通过 NFS READ 请求从服务器读取的 MB 数。但是,我不明白它们到底有什么不同。NFS READ 和 read(2) 之间有什么区别?对 NFS 挂载的所有读取难道不应该都是 NFS READ 吗?我不应该期望 rMB_svr/s 大于或等于 rMB_nor/s 吗?

答案1

如果文件系统缓存中有数据,则“read”系统调用将获取数据,但不会向 NFS 服务器发送任何读取请求。当应用程序多次读取相同的块或用户多次打开相同的文件时,可能会发生这种情况。您可以刷新文件系统缓存并再次查看 iostat 的结果:

# echo 3 > /proc/sys/vm/drop_caches

相关内容