Cygwin環境で一部のbash
コマンドが実行される速度をベンチマークする前に、バッファーもキャッシュも使用されていないことを確認する必要があります。私はWindows7PCのCygwin/bash
でベンチマークを行っていますが、実際のキャッシュ動作はCygwinではなくWindows自体によって行われていると思われます。
nixベースのシステム では、次のようにしてすべてのキャッシュとバッファをクリアできます。
echo 3 > /proc/sys/vm/drop_caches
Windowsでのこのコマンドに相当するものは何ですか?
Twistyは、これを行うためのネイティブツールがWindowsにないことは正しいです。
ただし、さらに調査とテストを行うと、SysInternalsの同期ツールでさえ、Windowsがファイルとデータをキャッシュするために使用するメモリ(ファイルシステムキャッシュとも呼ばれ、Windowsが呼び出すメモリ)を実際にはクリアしないようですスタンバイメモリ。これは、Windowsのすべてのメモリ割り当てを監視する別のSysInternalsツールである RAMMap を使用して示すことができます。
Sync
ツールを実行する前後にRAMMapのスタンバイメモリ列を調べると、Sync
を実行する前後でWindowsのスタンバイメモリが実質的に変更されていないことがわかります。実際、Sync
はメモリに目立った影響を与えていないようです。これは、私が知る限り、パフォーマンステストの目的には本質的に役に立たないものです。
私は、Windowsのスタンバイリストをクリアするための効果的なプログラム方法を発見しましたが、 EmptyStandbyList.exe の形式で、Wen JiaLiuの単純なコマンドラインプログラムです。
EmptyStandbyList.exeは、Windows(Vista以降)用のコマンドラインツールで、次のものを空にすることができます。
- プロセスワーキングセット
- 変更されたページリスト
- スタンバイリスト(優先度0から7)
- 優先度0のスタンバイリストのみ
これを使用するには、EmptyStandbyList.exeファイルがシステムのPATH環境変数内の場所にあることを確認してから、EmptyStandbyList.exe
を呼び出す必要があります。シェル、またはメモリをフラッシュする必要がある場合はスクリプト内から。
CMD
:
EmptyStandbyList.exe
そしてbash
:
cmd \/c EmptyStandbyList.exe
実行後にWindowsのスタンバイメモリが正常にクリアされたことを確認するには、RAMMapを再度使用できます。
EmptyStandbyList.exe
EmptyStandbyList.exe
を実行した後Windowsに組み込まれている同等のコマンドはありません。ただし、Microsoftは 無料で利用可能Syncコマンドを作成します。このコマンドは、書き込まれていないデータをディスクにフラッシュする場合に限り、要求された処理を実行します。これは、SysinternalsSuiteのツールの一部です。
これがその作者からの 説明 です:
UNIXには、同期と呼ばれる標準ユーティリティが用意されています。これを使用して、オペレーティングシステムに、すべてのファイルシステムデータをディスクにフラッシュして、システム障害が発生した場合にデータが安定して失われないようにすることができます。そうしないと、キャッシュに存在する変更されたデータが失われます。これは私が書いた同期と呼ばれるもので、すべてのバージョンのWindowsで動作します。変更されたファイルデータがハードドライブに安全に保存されていることを知りたいときはいつでも使用してください。
コマンドを実行するには、管理者権限が必要です。 allディスクのバッファをフラッシュするには、次のコマンドを実行します。
sync
C:
のように、単一のドライブのみをターゲットにする場合は、次を使用します。
sync c:
次の方法でリムーバブルドライブのみをフラッシュすることもできます。
sync -r
このユーティリティは、Vista/Server2008以降のすべてのバージョンのWindowsで動作します。