コマンドラインを使用してWindows XPでディスクキャッシュを無効にしますか?


1

私はよくVMwareで使用するために、Windows XPの本当に無駄のない最適化されたインストールを作成したいと思いました。

私はnLiteでかなりの数日を使っていて、本当に無駄のないインストールをしています。 ISOは本当に素晴らしいです。

さて、今の精神では、インストール後のバッチスクリプトをまとめようとしています。これは、nLiteではできない最後の一握りの調整を適用しますが、それでも自動化したいのです。

ホストOSで既にキャッシュが行われているので、そのような調整の1つはディスクキャッシュを無効にすることです。そのため、Windowsはディスクキャッシュに貴重な(そして乏しい)メモリを使用しないことをお勧めします。

すべての設定が終わったら、GUIを使ってやるのは簡単ですが、私が自分のバッチスクリプトでそれを実行できれば、本当にクールです。各ドライブのディスクキャッシングをオフにするか(2つのドライブがセットアップにあり、そのうちの1つはスワップファイルと一時ファイル用に固定されているのでスナップショットのスペースを無駄にしません)。システム全体のキャッシュを一度に無効にして、オフにした?

何かアイデアをありがとうございました:)

ダニエル

編集:単に "書き込みキャッシュを無効にすることは悪い"という議論を避けるために(私は本当に私の質問への回答がほしいのですが:)ありがとう)。

書き込みキャッシュなし(左)と書き込みキャッシュ(右)のATTOベンチマーク:

ATTO benchmarks for no write caching (left) and write caching (right)

編集2:@ techie007によるインスピレーションに従って、私は最初にキャッシュをオフにすることによるメモリの利点を決定しようとしました。これらのスクリーンショットからわかるように、少なくともメモリに関しては、キャッシングをオフにしても何も得られません。ここでのどんな変化も完全に統計的な不確実性の範囲内でしょう。

記録としては、これを実行する最善の方法がよくわからなかったので、どちらの実行でもマシンを再起動し、しばらくの間落ち着かせてから実行中および実行後にATTOを実行してmemの使用状況を監視しました。

最初の2つは書き込みキャッシュが有効になっています(ATTOの間、そしてその後)。

enter image description here

enter image description here

次の2つは同じシナリオですが、書き込みキャッシュが無効になっています。

enter image description here

enter image description here


ATTOベンチマークは確かにおもしろいです。ライトキャッシュを無効にすることで得られる利点を示すベンチマークはありますか?明らかに少ないメモリ使用量がありますか?より少ないCPU使用率?実行中のプロセスが少ない?
Ƭᴇcʜιᴇ007


@ techie007 - それは本当に良い質問です。その影響がメモリ消費量の減少になると私は思っています。いくつかテストをして報告します。
DanielSmedegaardBuus

@ techie007 - 私の編集からわかるように、本当の利益はまったくありません!テストしてくれてありがとう:)
DanielSmedegaardBuus

考えてみれば、この種の最適化はそもそもVMware Toolsに実装するのは簡単なことではないと思われるので、それはおそらくすでに起こっていることです。
DanielSmedegaardBuus

回答:


1

不可能です。 Windowsは実際にはディスクキャッシュを持っていません、それはページキャッシュを持っています、そして全体のメモリ管理サブシステムはその周りに構築されています。どのメモリがアクティブでどのメモリが非アクティブであるかを追跡するようなことでさえも、ページキャッシュのページ保護を通して管理されます。

ゲストがキャッシングを制御しない場合、それはゲストがホストにすべてのディスクアクセスを渡す必要があることを意味します。コードがページ境界を通過するたびに、ホストまでのソフトフォールトとしてプログラムは微視的な速度で実行されます。それはまさに最も明白な問題です、もっとあらゆる種類の恐ろしいものがたくさんあります。

毎日車で車を運転して仕事をするようなものです。


こんにちはDavid :)応えてくれてありがとう!私はひどい言い方をしているかもしれません…あなたはリードキャッシングについて正しいかもしれませんが、少なくともライトキャッシングを無効にするオプションがあります(例えばUSBスティックではデフォルトで無効になっています)。これはGUIで簡単に無効にできますが、コマンドラインから実行したいのですが。可能であれば(それはお勧めできませんが)、読み取りキャッシュでも同じです。乾杯:)
DanielSmedegaardBuus

@DanielSmedegaardBuusそれは何の利益ももたらさないでしょう。書き込みキャッシュを無効にすると何らかの利点があると思うのはなぜですか。
David Schwartz

ホストに書き込みキャッシュがあるからです。そのため、ホストOSが最終的に書き込み要求を取得し、それをキャッシュにスローして戻ってくるので、同期化されていても、どの書き込み操作もすでにほとんどすぐに戻ります。また、私は2013 + Airで700+ MB / sの読み書きをしています。さらに、私が書いていることのほとんどはvmhgfsを介してホスト上の共有フォルダになります。
DanielSmedegaardBuus

@DanielSmedegaardBuusゲストからホストにリクエストを渡す必要があるのは、ただの早急なことです。ライトキャッシュの主なポイントは次のとおりです。 集計 たくさんの小さなものがいくつかの大きなものに書き込まれます。
David Schwartz

リクエストを通過させますか?どういう意味ですか?書き込み要求?どのようにそれが通過しないのでしょうか?唯一の違いは、書き込みがゲストRAMのキューに入れられてから断続的にホスト(キャッシュ)にフラッシュされるか、書き込みがホストのキャッシュにキューされて断続的にディスクにフラッシュされるかです。私のATTOベンチマークが示すように、I / Oパフォーマンスは同じです。ライトキャッシュのポイントを見逃してしまったというのはどういう意味ですか?私のポイントは、ホスト上にすでに書き込みキャッシュがあるため、ゲスト内の別のキャッシュがパフォーマンスの向上にあまり役立たないということです。
DanielSmedegaardBuus

1

そして最後の答えは、そうです、あなたは私が前に説明した(醜い)方法でそれを行うことができますが、(少なくともXPでは)それをすることに利点はありません。

パフォーマンスと同様に、メモリ使用量も事実上同じです。

それで、全体として、これは良いニュースです。私のスクリプトでそれを実装するのは本当に難しいことがわかったからです。

私を誇りに思ってくれてありがとう。


0

さて、このベンチマークを行うことは実際にはゴム製のダッキング体験であることがわかりました:)

VMwareを使った私のように、あなたが本当に特定のユースケースにいることを知っていない限り、これは本当に良い答えではありません。あなたがレジストリキーを介してこれを行うことができますので、あなたがキーへのパスを知っている場合に限ります。

これが私の場合のコマンドです。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\IDE\DiskVMware_Virtual_IDE_Hard_Drive___________00000001\3030303030303030303030303030303030303130\Device Parameters\Disk" /v UserWriteCacheSetting /t REG_DWORD /d 00000000 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\IDE\DiskVMware_Virtual_IDE_Hard_Drive___________00000001\3130303030303030303030303030303030303130\Device Parameters\Disk" /v UserWriteCacheSetting /t REG_DWORD /d 00000000 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE\DiskVMware_Virtual_IDE_Hard_Drive___________00000001\3030303030303030303030303030303030303130\Device Parameters\Disk" /v UserWriteCacheSetting /t REG_DWORD /d 00000000 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE\DiskVMware_Virtual_IDE_Hard_Drive___________00000001\3130303030303030303030303030303030303130\Device Parameters\Disk" /v UserWriteCacheSetting /t REG_DWORD /d 00000000 /f

これは、ide0仮想アダプタ上の2つのドライブ(プライマリとスレーブ)に対するものです。少なくともFusion 6では。

UserWriteCacheSettingを検索してそれぞれを無効にしたいのですが、ATMコマンドラインからどのようにしたらよいのかわかりません。見つけたら、更新します:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.