![Win7 上进行大型网络复制后文件 io 性能缓慢](https://linux22.com/image/665600/Win7%20%E4%B8%8A%E8%BF%9B%E8%A1%8C%E5%A4%A7%E5%9E%8B%E7%BD%91%E7%BB%9C%E5%A4%8D%E5%88%B6%E5%90%8E%E6%96%87%E4%BB%B6%20io%20%E6%80%A7%E8%83%BD%E7%BC%93%E6%85%A2.png)
在构建过程的某个步骤中,我们运行一个工具,该工具可生成约 125,000 个文件。生成完成后,我们会将它们复制到网络共享,以便其他系统可以将它们复制下来进行进一步处理。
如果我们必须从网络执行文件的完整复制,性能会降低(约 -300%)。如果我们已经在本地拥有文件,并且我重新启动系统,性能会很好。
我目前的假设是 Windows 有某种文件描述符或文件句柄保持打开状态,并且副本仍然持有它们,从而减慢了文件系统密集型任务的速度。
我们的监控图表并没有表现出太多异常,并且与性能良好的系统基本一致...只是需要更长的时间。速度减慢在线程中最为明显,线程在 1500 左右所花的时间通常要短得多。
我还应该注意,125k 个文件都在一个目录中。我知道这会影响迭代目录列表的性能,但我不确定它会如何影响这个问题。
系统信息:
- Dell R7910 机架
- 英特尔 750 1.2TB PCIe
- Windows 7 企业版
监控图
答案1
另一端运行的是什么?(Windows、Linux、特定 NAS 操作系统,...)两端是否都使用 SMBv2 进行文件传输?目标服务器上的性能如何?
如果没有任何效果,您可以尝试将文件压缩到原始系统中的单个文件中,传输该文件并在目标上解压缩...