
私たちは、同じローカル ボリューム (RAID1) 上の複数のファイルに一度に小さな (22kB) 書き込みを実行するアプリケーションを作成しました (1 つのスレッドが他のスレッドに代わって複数の場所に非同期キュー書き込みを実行します)。
書き込みの 99.9% は低遅延ですが、ときどき (おそらく 1 分か 2 分に 1 回)、特に説明のない非常に遅延の大きい書き込み (10 秒以上) が 1 回か 2 回発生します。
プラットフォーム: NTFS 搭載の Win2003 Server。
監視: Sysinternals Process Monitor (以下のリンクを参照) および当社独自のアプリケーション ログ。
私たちは、いくつかの Web サイトから収集した情報を基に、この問題を解決するためにさまざまなことを試しました。たとえば、
ファイル名の最初の部分を一意にして、8.3 の名前生成を支援する
複数のディレクトリにファイルを書き込む
Intel ディスク書き込みキャッシュの変更
Windows ファイル/プリンタ共有
メモリ使用量を最小限に抑える
バランス
ファイル共有のデータスループットを最大化
ネットワークアプリケーションのデータスループットを最大化
システム->詳細->パフォーマンス->詳細
NtfsDisableLastAccessUpdate - fsutil behavior setdisablelastaccess 1 を使用する
8.3 の名前生成を無効にする - 「fsutil behavior set enable8dot3 1」を使用して再起動します
大容量のファイルシステムキャッシュを有効にする
カーネルコードのページングを無効にする
IO ページロック制限
インデックスサービスをオフ(またはオン)にする
しかし、何も大きな違いはないようです。まだ試していないことがたくさんありますが、同じ問題、原因、解決策(プログラムによるものかどうかは関係ありません)に遭遇した人はいるでしょうか?
IOMeter と簡単なセットアップを使用して問題を再現できます。
IOMeter を起動し、切断ボタンを使用して「トポロジ」の最初のワーカー スレッドを除くすべてのスレッドを削除します。
ワーカー スレッドを選択し、[ディスク ターゲット] タブで使用したいディスクの横にあるボックスにチェックを入れ、[最大ディスク サイズ] に「2000000」と入力します (注: 少なくとも 1 GB の空き領域が必要です。セクター サイズは 512 バイトです)
次に、新しいアクセス仕様を作成し、それをワーカー スレッドに追加します。
転送要求サイズ = 22kB
100% シーケンシャル
アクセス仕様の割合 = 100%
読み取り/書き込み率 = 100% 書き込み
結果表示の更新頻度を 5 秒に、テスト セットアップの実行時間を 20 秒に変更し、両方の「自動的に生成するワーカーの数」設定を 0 に変更します。
トポロジ パネルでワーカー スレッドを選択し、ワーカーの複製ボタンを 59 回押して、同一設定のスレッドを 60 個作成します。
「実行」ボタン (緑の旗) を押して、「結果」タブを監視します。「最大 I/O 応答時間 (ミリ秒)」は、私たちのマシンでは常に少なくとも 3500 に達します。私たちのマシンはそれほど遅いわけではありません (4GB とオンボード RAID を備えた Xeon 8 コア ラック サーバー)。
他の人がどうなっているか興味があります。これは NTFS ファイルシステムに関係しているのではないかと思います (現在、私たちのファイルシステムは 75% が断片化されたファイルで占められています)。この原理に基づいていくつか試してみるつもりです。しかし、これは RAM ディスクでは見られず、RAID10 アレイではそれほど深刻ではないため、ディスク パフォーマンスにも関係しています。
ご協力いただければ幸いです。
リチャード
右クリックして「リンクを新しいタブで開く」を選択します。
ProcMon 結果
答え1
この問題に関して、より多くの情報が手に入りました。
さまざまなハードウェアを使用して 12 台の異なるマシンで説明した IOMeter テストをテストした結果、特定の RAID チップセットに絞り込むことができました (同じチップセットを搭載した 3 台の異なるマシンが RAID1 と RAID10 を使用してこの動作を示しています)。他のすべてのマシンでは、少なくとも 1 桁良い結果が得られました。
チップセット: Intel 631xESB/632xESB SATA RAID (別名 ESB2)
詳しい情報と、できれば Intel からの回答については、Intel サイトのこの投稿を参照してください。
Intel 631xESB/632xESB SATA RAID (別名ESB2) の書き込みが遅い
リチャード