我正在看这个设置:
当应用程序访问存储在随机文件夹中的文件时,需要60-100毫秒来读取每个文件。 使用testing工具时,似乎打开文件时发生延迟。 读取数据只需要很less的时间。
总之,这意味着读取50个文件很容易花费3-4秒,这比预期的要多得多。 写作是批量完成的,所以表演在这里不成问题。
我已经遵循SO和SF的build议来达到这些数字。
contig来整理文件夹和文件( https://stackoverflow.com/a/291292/1059776 ) 如何处理阅读时间?
UPDATE
如评论中所述,系统运行Symantec Endpoint Protection。 但是,禁用它不会改变读取时间。
PerfMon每次读取10-20毫秒。 这意味着读取任何文件需要6次I / O读操作,对吧? 这是MFT查找和ACL检查?
MFT的大小约为8.5GB,比主内存大。
服务器没有足够的内存。 而不是caching内存中的NTFS图元文件数据每个文件访问需要多个磁盘读取。 像往常一样,一旦你看到这个问题是显而易见的。 让我分享我的观点:
服务器显示在任务pipe理器和RamMap中都有2GB的可用内存。 因此,Windows决定可用内存不足以保存元文件数据的有意义的部分。 或者一些内部限制不允许使用图元文件数据的最后一个内存位。
升级后,RAM任务pipe理器将不会显示更多正在使用的内存。 然而,RamMap报告了多GB的元文件数据被保存为备用数据。 显然,备用数据可能会产生重大影响。
用于分析的工具:
fsutil fsinfo ntfsinfo driveletter:显示NTFS MFT大小(或NTFSInfo )