質問: コンピュータのメモリが少ないと、cpu使用率が高くなる可能性がありますか? 私の最後の 質問 から、別の質問が私の頭に浮かびました。そこに記載されているように、メモリが少ないと、オペレーティングシステムはwindowsでページファイルを使用します。メモリが少ないと、スーパーフェッチや...などのサービスがさらに機能します。だから私の質問はそれです:低リソース状態でのメモリ管理の必要性により、低メモリはより多くのcpu使用率(わずかに多く)を引き起こす可能性がありますか?答えが「はい」の場合、それは賢明ですか?
回答: クイックアンサー:はい...ええと、ある種...しかし極端な場合には、少なくともcpu使用率に関しては逆の効果があります。最近の「ramが不足している」という典型的なケースでは、ハードページフォールト率はそれほど高くなりませんが、全体的なページフォールト率は高くなります(追加のフォールトはソフトフォールトです)。ソフト障害にはディスクioは含まれません。ただし、障害を解決するには、メモリマネージャでコードを実行する必要があります。ソフトフォールトを解決するのにかかる時間は、約数百の命令時間と見積もっています。したがって、every命令を実行しようとすると、ソフトフォールトが発生した場合、作業が完了するまでに約300倍の時間がかかります。作業がすべてcpuバウンドであると仮定します。 (幸いなことに、ソフトフォールトを発生させる命令の割合はそれほど高くありません。)ただし、これによって測定されたcpu使用率は増加しません!スレッドが実行されているか実行されていないかのどちらかであり、cpu使用率カウンターを見ると、ありません...まあ、ほとんど*ありません。 ..アプリのコードの実行に費やされた時間と、アプリに代わってソフト障害を解決するためにメモリマネージャーに費やされた時間の目に見える違い。 mmは障害のあるプロセスのコンテキストで実行されるため、そのcpu時間はプロセスの時間の一部になります。* mmはもちろんカーネルモードで実行されるため、カーネルモードとユーザーモードで費やされる時間に違いが現れます。もちろん、アプリがメモリマネージャーで多くの時間を費やす必要がある場合は、実際の作業が大幅に少なくなります。ただし、測定されたcpu使用率%は変更されません。will変更とは、スレッドまたはプロセスが同じ実際の作業を実行するために必要なcpu時間の合計(%ではなく秒)です。より極端なケースは、ディスクとの間で頻繁にページングしている場合です。つまり、ハードページフォールトが発生しています。これは実際にはreduce測定されたcpu使用率です。これは、ページングi/o(またはその他のi/o)が完了するのを待つために費やされる時間は、cpuでコードを実行するために費やされる時間ではないためです。 i/o中、要求しているスレッドは待機中、または* nixがそれを「ブロック」と呼んでいます。ストレージデバイス(ディスクまたはssd)がi/oを実行するのにかかる時間は、メモリマネージャーがi/oをセットアップするために費やすcpu時間を完全に圧倒します。したがって、後者は無視できるようになります。これは、m.2ssdにもそれほど当てはまりません。したがって、ハード障害率が高い状況では、cpu使用率がパーセンテージで表示されます削減。 (つまり、ドライブがcpuのボトルネックになっています。)アプリがデータファイルの読み取りに多くの時間を費やした場合と同じです。ただし、もちろん、アプリが実行したい作業を完了するのにはるかに長い時間がかかることがわかります。ソフトフォールトの場合と同様に、はるかに悪いだけです。n.b。:ページングに使用されるファイルはページファイルだけではありません!システム内のすべてのマップされたファイル(すべてのプロセスが使用しているすべてのexeとdll、およびntoskrnel自体を含む)は、本質的にはページファイルです。したがって、ページファイルを削除しても、ハード障害やディスクからのページングが解消されるわけではありません。