linux – 顺序读取大文件时NFS性能不佳

前端之家收集整理的这篇文章主要介绍了linux – 顺序读取大文件时NFS性能不佳前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有多个客户端的NFS3服务器.每个客户端都按顺序读取不同的大文件,性能非常差.

以下是我在服务器上的iostat中观察文件所在磁盘的内容

Device: rrqm/s  wrqm/s    r/s   w/s  rMB/s  wMB/s avgrq-sz avgqu-sz  await svctm  %util
sdX      24.33    0.00  712.67 0.00  18.41   0.00    52.91    11.95  16.91  1.40 100.00

如您所见,%util是100%.同时,聚合I / O吞吐量(rMB / s wMB / s)约为18MB / s,比磁盘容量慢10-20倍.

这个,以及rMB / s与r / s的比率,使我得出结论,不是一次读取每个文件的大块,而是NFS最终以小块的形式读取文件,在不同文件之间有大量的块交错.这反过来导致大量磁盘搜索,从而导致性能下降.

你能说证据的结论是否合理?

你会建议什么作为解决这个问题的方法?我可以更改阅读应用程序,并可以调整服务器和客户端上的NFS设置.我正在使用内核2.6.18的RedHat 5.6,其中I believe将rsize限制为32KB(我很高兴被证明是错误的).

编辑:当只有一个客户端读取单个文件时,这就是事物的样子:

Device: rrqm/s  wrqm/s     r/s   w/s    rMB/s  wMB/s avgrq-sz avgqu-sz  await svctm  %util
sdX     343.33    0.33 1803.33  0.67   105.78   0.00   120.09     0.91   0.50  0.31  56.47

如您所见,吞吐量要好得多,%util也要低得多.

解决方法

更快的磁盘,更多的内存.我认为你的结论是正确的 – 你是在寻求约束.

您的NFS服务器与工作集相比有多少内存?你的工作集是否适合缓存?

什么是后端存储?你说它的吞吐量大约为180-360MB /秒,但它对随机I / O的性能如何?我建议使用像fio这样的东西来获得一个想法. seekwatcher对于可视化I / O也很有趣.但是,如果你能避免更多地击中磁盘.

猜你在找的Linux相关文章