web-dev-qa-db-ja.com

多数のファイルがあるNTFSドライブのパフォーマンスが遅い

私はこのセットアップを見ています:

  • Windowsサーバー2012
  • 1 TB NTFSドライブ、4 KBクラスター、最大90%フル
  • 10,000個のフォルダに保存された1,000万個のファイル=〜1,000個のファイル/フォルダ
  • ほとんどが50 KB未満のかなり小さいファイル
  • ディスクアレイでホストされている仮想ドライブ

アプリケーションがランダムなフォルダーに保存されているファイルにアクセスする場合、各ファイルの読み取りには60〜100ミリ秒かかります。テストツールを使用すると、ファイルを開くときに遅延が発生するようです。その場合、データの読み取りにかかる時間はごくわずかです。

要約すると、これは、50個のファイルを読み取るのに3〜4秒かかりやすいことを意味します。書き込みはバッチで行われるため、ここではパフォーマンスは問題になりません。

私はすでにSOおよびSFに関するアドバイスに従って、これらの数値に到達しました。

読み取り時間についてはどうしますか?

  • ファイルあたり60〜100ミリ秒で問題ないことを考慮してください(そうではありませんか?)
  • セットアップを改善する方法はありますか?
  • 正確に時間が費やされているかを知ることができる低レベルの監視ツールはありますか?

[〜#〜]更新[〜#〜]

  1. コメントで述べたように、システムはSymantec Endpoint Protectionを実行します。ただし、これを無効にしても読み取り時間は変わりません。

  2. PerfMonは、読み取りあたり10〜20 msを測定します。これは、ファイルの読み取りに最大6回のI/O読み取り操作が必要であることを意味します。これはMFTルックアップとACLチェックですか?

  3. MFTのサイズは〜8.5 GBで、メインメモリよりも大きくなります。

11
Paul B.

サーバーに十分なメモリがありませんでした。 NTFSメタファイルデータをメモリにキャッシュする代わりに、すべてのファイルアクセスに複数のディスク読み取りが必要でした。いつものように、一度見れば問題は明らかです。私の視点を曇らせたものを共有しましょう:

  • サーバーは、タスクマネージャーとRamMapの両方で使用可能な2 GBのメモリを示しました。したがって、どちらのWindowsも、利用可能なメモリがメタファイルデータの意味のある部分を保持するのに十分ではないと判断しました。または、一部の内部制限により、メタファイルデータにメモリの最後のビットを使用できません。

  • RAMタスクマネージャーをアップグレードすると、メモリの使用量が表示されなくなります。しかし、RamMapは複数のGBのメタファイルデータがスタンバイデータとして保持されていると報告しました。明らかに、スタンバイデータは大きな影響を与える可能性があります。

分析に使用したツール:

  • fsutil fsinfo ntfsinfo driveletter: NTFS MFTサイズを表示する(または NTFSInfo
  • RamMap メモリ割り当てを表示します
  • Process Monitor は、読み取られたすべてのファイルの前に、ドライブ:\ $ Mftおよびドライブ:\ $ Directoryに対する約4つの読み取り操作が実行されることを示します。 $ Directoryの正確な定義を見つけることはできませんでしたが、 MFTに関連しているようです も同様です。
5
Paul B.