我正在查看此设置:
- Windows Server 2012
- 1 TB NTFS驱动器,4 KB群集,约90%的已满容量
- 约10,000万个文件夹中存储的约1000万个文件=约1,000个文件/文件夹
- 大部分文件小于50 KB
- 磁盘阵列上托管的虚拟驱动器
当应用程序访问随机文件夹中存储的文件时,读取每个文件需要60-100毫秒。使用测试工具,似乎在打开文件时发生延迟。读取数据仅需花费一小部分时间。
总之,这意味着读取50个文件很容易需要3-4秒,这比预期的要多得多。批处理是写的,因此此处性能不是问题。
我已经遵循关于SO和SF的建议来得出这些数字。
- 使用文件夹减少每个文件夹的文件数量(在文件系统中存储一百万个图像)
- 运行
contig
对文件夹和文件进行碎片整理(https://stackoverflow.com/a/291292/1059776) - 8.3名称和上次访问时间被禁用(配置NTFS文件系统以提高性能)
读取时间该怎么办?
- 认为每个文件60到100毫秒是可以的(不是吗?)
- 有什么想法可以改善设置吗?
- 是否有低级监视工具可以告诉您确切花费了什么时间?
更新
如注释中所述,系统运行Symantec Endpoint Protection。但是,禁用它不会更改读取时间。
PerfMon每次读取的时间为10-20毫秒。这意味着任何文件读取都需要约6个I / O读取操作,对吗?这是MFT查找和ACL检查吗?
MFT的大小约为8.5 GB,比主内存大。
为了排除某些问题,您是否愿意共享RAMMap的屏幕截图?
—
Tomas Dabasinskas
您的意思是“文件摘要”表吗?现在您提到它,我看到一个内存为900 MB的SYMEFA.DB文件,它使我想起了系统上已安装Symantec Endpoint Protection。也许是罪魁祸首?我会尝试找出更多。
—
Paul B.
实际上,我对元文件的使用更感兴趣
—
Tomas Dabasinskas
好的,我知道了。图元文件显示总计250 MB,活动40,待机210。看起来正常与否?
—
Paul B.
是的,似乎如此
—
Tomas Dabasinskas '16