ファイルキャッシュをクリアしてパフォーマンステストを繰り返す
-
20-08-2019 - |
質問
パフォーマンス結果の偏りを防ぐために、キャッシュされたファイルの内容を削除するにはどのようなツールやテクニックを使用できますか?ファイルとディレクトリの内容に関するキャッシュされた情報を完全にクリアするか、選択的に削除する必要があると思います。
私が開発しているアプリケーションは特殊な圧縮ユーティリティであり、オペレーティング システムが最近アクセスしておらず、ディスク ブロックがキャッシュされる可能性が低いファイルの読み取りと書き込みという多くの作業を実行することが期待されています。
ファイル処理作業を実行するためのさまざまな戦略をプロファイリングするタスクを繰り返すときに発生する IO 時間の変動を除去したいと考えています。
Windows XP が私のメインの開発マシンであるため、主に Windows XP 用のソリューションに興味がありますが、Linux を使用してテストすることもできるため、その環境に関する回答にも興味があります。
SysInternalsを試してみた キャッシュセット, しかし、「クリア」をクリックしても、数回読み込んだだけのファイルを再読み込みする時間は目に見えて増加しません(コールドブート後のタイミングの復元)。
解決
他のヒント
は、Windows XPの場合は、あなたはFILE_FLAG_NO_BUFFERINGオプションでのCreateFileを使用してファイルを開いた後、ハンドルを閉じることにより、特定のファイルのキャッシュをクリアすることができるはずです。これは、文書化されていない、それはそれ以降のバージョンのWindows上で動作するかどうかは分かりませんが、ファイル圧縮ライブラリを比較するテストコードを書くとき、私はずっと前にこれを使用していました。読み取りまたは書き込みアクセスをこのトリックに影響を与えた場合、私は覚えていません。
クgoogling与えるこれらのオプションのためのLinux
- Unmountマウント、パーティションを保持ファイル
sync && echo 1 > /proc/sys/vm/drop_caches
コマンドライン用です こちらの
からのソース:
EmptyStandbyList.exe
は、コマンドラインツールfor Windows(Vista、 上記できる空:
- 工作セット
- 変更後のページのリスト
- の待機リスト(優先順位を0~7)、
- の優先度0待受画面になりました。
使用量:
EmptyStandbyList.exe workingsets|modifiedpagelist|standbylist|priority0standbylist
がその場で発音を確認することが一つの技術(再起動)のう:
- 行数のコピー MemAlloc
- それぞれが割り当て大きなチャンクメモリに数回
- 使用過程Explorerのシステムのキャッシュサイズの低減に非常に低いレベル
- 辞めのMemAllocプログラム
な選択的なものです。理想的には持ってき方など、さすがだなと私が明確に特定の部分のメモリを使っているキャッシュのディスクブロックのファイルにしたいなキャッシュされます。
#include <fcntl.h>
int posix_fadvise(int fd, off_t offset, off_t len, int advice);
POSIX_FADV_DONTNEED
アドバイスオプション付き:
指定されたデータは近い将来アクセスされることはありません。
Windows XP ファイルシステム キャッシュをよりよく確認するには、次のことを試してください。 ATM by ティム・マージェント - ファイルシステム キャッシュのワーキング セット サイズとスタンバイ リスト サイズの両方をより詳細かつ正確なビューで確認できます。Windows XP の場合 - ダウンロード可能な ATM の古いバージョン 1 が必要です ここ 以来 V2 そして V3 Server 2003、Vista 以降が必要です。
あなたはそれを観察するでしょうが、 Sysinternals キャッシュセット 「キャッシュ WS 最小値」が減少します。実際のデータは、他のものに置き換えられるまで、使用できるスタンバイ リストの形式で引き続き存在します。それを別のものに置き換えるには、次のようなツールを使用します。 メムアロック または チャド・オースティン著のflushmem または、次の場所から Consume.exe を実行します。 Windows Server 2003 リソース キット ツール.
Windows APIの呼び出しがありますます。https:ファイル・システム・キャッシュをフラッシュするために使用することができ//docs.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-setsystemfilecachesize を。また、非常に小さい値にキャッシュサイズを制限するために使用することができます。テストのこれらの種類のための完璧なルックスます。