包含大量文件的NTFS驱动器上的性能缓慢


12

我正在查看此设置:

  • Windows Server 2012
  • 1 TB NTFS驱动器,4 KB群集,约90%的已满容量
  • 约10,000万个文件夹中存储的约1000万个文件=约1,000个文件/文件夹
  • 大部分文件小于50 KB
  • 磁盘阵列上托管的虚拟驱动器

当应用程序访问随机文件夹中存储的文件时,读取每个文件需要60-100毫秒。使用测试工具,似乎在打开文件时发生延迟。读取数据仅需花费一小部分时间。

总之,这意味着读取50个文件很容易需要3-4秒,这比预期的要多得多。批处理是写的,因此此处性能不是问题。

我已经遵循关于SO和SF的建议来得出这些数字。

读取时间该怎么办?

  • 认为每个文件60到100毫秒是可以的(不是吗?)
  • 有什么想法可以改善设置吗?
  • 是否有低级监视工具可以告诉您确切花费了什么时间?

更新

  1. 如注释中所述,系统运行Symantec Endpoint Protection。但是,禁用它不会更改读取时间。

  2. PerfMon每次读取的时间为10-20毫秒。这意味着任何文件读取都需要约6个I / O读取操作,对吗?这是MFT查找和ACL检查吗?

  3. 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

Answers:


5

服务器没有足够的内存。每次访问文件都需要多次读取磁盘,而不是在内存中缓存NTFS图元文件数据。与往常一样,一旦您看到它,问题就很明显。让我分享一下笼罩我的观点:

  • 服务器在任务管理器和RamMap中均显示2 GB可用内存。因此,两个Windows都认为可用内存不足以容纳图元文件数据的有意义部分。或某些内部限制不允许将存储器的最后一位用于图元文件数据。

  • 升级后,RAM Task Manager不会显示正在使用更多内存。但是,RamMap报告了多个GB的图元文件数据被保留为备用数据。显然,备用数据可能会产生重大影响。

用于分析的工具:

  • fsutil fsinfo ntfsinfo driveletter:显示NTFS MFT大小(或NTFSInfo
  • RamMap显示内存分配
  • 进程监视器显示每个读取的文件之前对drive:\ $ Mft和drive:\ $ Directory进行约4个读取操作。尽管我找不到$ Directory的确切定义,但它似乎也与MFT有关

那么增加物理内存确实可以缩短响应时间吗?您没有配置任何注册表设置?
D-Klotz

1
是。我以前玩过注册表设置。但是最后添加内存后不需要更改。
Paul B.

备用内存是可供程序使用的内存区域。但由于尚未使用它们,因此操作系统会将它们用作缓存。一旦任何程序需要该内存,它将立即被释放
phuclv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.