パフォーマンステストでは、Windowsのディスク読み取りキャッシュをクリアする必要があります。グーグルで試しましたが、再起動や他の手動のもの以外は何も見つかりませんでした。私がやりとりする前に、Windowsのディスク読み取りキャッシュをクリアする方法を誰かが知っているかどうか知りたいのですが。私はWindows 7でテストしていますが、Windows XPソリューションにも興味があります。
または、テストで使用されないことがわかっているデータをキャッシュに入力して、テストを実行します。
Stack Overflowでも同じ質問をしました
https://stackoverflow.com/questions/478340/clear-file-cache-to-repeat-performance-testing
私はWin XPを使用していましたが、思いついた最善の解決策は次のとおりです。
Windowsのより良いビューについてXP Filesystem Cache-try ATM by Tim Murgent -ファイルシステムキャッシュのワーキングセットサイズとスタンバイリストサイズの両方を確認できますWindowsの場合XP-ダウンロードできる古いバージョンのATM 1が必要 ここ V2とV3にはServer 2003が必要なので、 Vista以降。
Cachesetは "Cache WS Min"を削減しますが、実際のデータはスタンバイリストの形式で引き続き存在し、他のデータに置き換えられるまで使用できます。次に、それを別のもので置き換えるには、MemAlloc、Chad Austinによるflushmem、またはWindows Server 2003リソースキットツールのConsume.exeなどのツールを使用します。
私は RAMMap を使用しました。いくつかのタイプの割り当てのメモリを解放する可能性があります。
ファイルキャッシュの内容は[ファイルの概要]タブで確認でき、[空]メニューから[空のスタンバイリスト]を選択すると、このキャッシュがクリアされます。
マシンを再起動します。
ベストプラクティスは、ベンチマークに使用するすべてのテストファイルが、アレイコントローラーキャッシュ(または、VMゲストでベンチマークを行う場合はWindows OSメモリ)の2倍で、最低1 GBのテストファイルであることを確認することです。これにより、キャッシングが確実に無効になります。ディスクベンチマークには [〜#〜] sqlio [〜#〜] を使用します。付属のドキュメントには豊富な情報があります。
Gregをエコーして、この問題を回避する方法は、使用しているデータセットが使用可能なRAMの量を大幅に超えるようにすることです。大量のコントローラーとディスクベースのキャッシュも含むハードウェアプラットフォームでテストを実行している場合は、それらの量も超えていることを確認する必要があります。これにより、キャッシュのすべてのレイヤーが導入するソフトウェアの最適化よりも、実際のハードウェアパフォーマンスに関連するパフォーマンスが保証されます。
つまり、読み取りキャッシュを使用したいベンチマークを実行する前に、有用なデータの読み取りキャッシュを削除するだけの場合は、読み取りキャッシュメモリのすぐ下にあるサイズの単一ファイルを読み取ることです。それにいくつかのファイル操作を行います。これにより、キャッシュがパージされ、この1つの大きなファイルでいっぱいになります。それを閉じると、キャッシュは効果的にフラッシュされます気になるデータの。トリッキーな部分は、そのファイルがどれほどの大きさである必要があるかを理解することです。最近では、そのサイズが3GBのオーダーになる可能性が非常に高くなっています。その時点で、それを動作させるためにいくつかの1GBのジャンクファイルが必要になる場合があります。
StackOverflowで自分の質問に投稿した this answer を見てください。
基本的に:ハンドルをCreateFile
ハンドルなし書き込み共有アクセスしようとすると、エラーが返されても、キャッシュがフラッシュされて無効になります。
お役に立てれば!
ほとんどすべてのオプションは「手動のもの」になると思います。 UNIXでは、各ベンチマークを実行する前にデバイスをアンマウント/再マウントすることはかなり標準的です。 Windowsでコマンドラインツールを使用してデバイスをマウント解除/マウントできるかどうかはわかりませんが、自動化が目的の場合は、そのようなユーティリティを探す価値があります。