5
「非アクティブ」メモリが残っている場合にMac OS Xがスワップを使用できないようにするにはどうすればよいですか?
OS Xの日々の使用(およびインターネット全体のさまざまな投稿によると他のいくつかの使用)での一般的な現象で、システムは「空き」メモリがなくなると遅くなるようです。おそらく、これはスワッピングによるものです。重いディスクアクティビティが明らかであり、vm_statが多くのページアウトを報告するからです。(間違って修正してください) ただし、「非アクティブ」RAMの量は、スワッピングの開始/発生/終了時の使用可能なすべてのメモリの約12.5%〜25%(^ 1。)です。 http://support.apple.com/kb/ht1342によると: 非アクティブなメモリ メモリ内のこの情報は積極的に使用されていませんが、最近使用されました。 たとえば、Mailを使用してから終了した場合、Mailが使用していたRAMは非アクティブなメモリとしてマークされます。この非アクティブメモリは、空きメモリと同様に、別のアプリケーションで使用できます。ただし、別のアプリケーションで非アクティブメモリが使用される前にメールを開くと、低速のハードディスクからメールをロードするのではなく、非アクティブメモリがアクティブメモリに変換されるため、メールが速く開きます。 そして、http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.htmlによると: 非アクティブリストには、現在物理メモリに常駐しているが最近アクセスされていないページが含まれます。これらのページには有効なデータが含まれていますが、いつでもメモリから解放されます。 したがって、基本的には、プログラムが終了すると、そのメモリは非アクティブとしてマークされ、いつでも要求可能になります。それでも、OS Xは、「空き」メモリが少なくなるたびに、このメモリを要求するのではなく、スワップファイルへのメモリのスワップを開始することを好みます。 どうして?たとえば、スワップファイルに触れずに非アクティブなメモリを即座に解放することに対するこの動作の利点は何ですか?一部のソース(^ 2。)は、OS Xが解放する前に「非アクティブ」メモリをページアウトしてスワップすることを示していますが、メモリがいつでもメモリから解放される可能性がある場合、それは意味がありませんか?スワッピングは高価で、リリースは安価ですよね? この動作は、何らかの設定または既知のハックを使用して変更できますか?(できれば、swap / dynamic_pagerを完全に無効にして再起動する機能を含まないものを...) 私はパージコマンド、およびいくつかの空きメモリを強制するためのディスク権限の修復の概念を高く評価していますが、これらは実際にスワップ/リリース決定ロジックを修正するよりも多くの空きメモリを強制的に強制する方法です... ところで同様の質問がここに頼まれた:http://forums.macnn.com/90/mac-os-x/434650/why-does-os-x-swap-when/、ここで:のhttp://hintsforums.macworld .com / showthread.php?t = 87688ですが、OPがコアの質問を再尋ねたとしても、どの回答もそれに対する答えに対処しません... ^ 1。更新2012年3月17日この質問を最初に投稿してから、インストール済みのRAMを4GBから8GBに変更しましたが、問題は残っています。「非アクティブ」RAMの量は、以前0.5gb-1.0gbでしたが、スワップの開始/発生/終了時に通常1.0-2.0GBになりました。つまり、osxによってRAMの約12.5%-25%が非アクティブとして保持されるようです。カーネルロジック。 ^ 2。たとえば、https://apple.stackexchange.com/questions/4288/what-does-it-mean-if-i-have-lots-of-inactive-memory-at-the-end-of-a-work-日: すべてのメモリが使用されると(空きメモリは0)、OSは非アクティブなメモリをスワップファイルに書き込み、アクティブなメモリにより多くのスペースを確保します。 更新日2012年3月17日 以下は、これまでに役立つことが提案されている方法のまとめです。 パージコマンド 「パフォーマンス分析のためにコールドディスクバッファーキャッシュを使用して初期ブート条件を概算するために使用されます。malloc、vm_allocateなどを介して割り当てられた匿名メモリには影響しません。」 これはosxがディスクキャッシュをスワップアウトするのを防ぐのに役立ちます(osxが実際にそうするのはばかげています)が、ディスクキャッシュが解放されるという欠点があるため、ディスクキャッシュがスワップアウトすると、単にコールドディスクバッファーキャッシュになり、パフォーマンスに悪影響を与える可能性があります。 FreeMemoryアプリおよび/またはいくつかのフリーメモリを強制的にディスクのアクセス権を修復 メモリを解放する助けにはならず、数ギガバイトのメモリ内容をRAMからhdに移動するだけです。最終的に、メモリの解放中に開いていたアプリケーションを使用しようとすると、そのvmの多くがスワップ上にあるため、これにより多くのスワップインが発生します。 dynamicpagerwrapperを使用したスワップ割り当ての高速化 スワップ使用を高速化するためには良いことのように思えますが、そもそも非アクティブなメモリがある間にosxスワッピングの問題に対処しません。 dynamicpagerを無効にして再起動してスワップを無効にする これにより、すべてのメモリが使用されている場合、osxはシステムハングの価格にスワップを使用しなくなります。実行可能な代替ではありません... ハッキングされたdynamicpagerを使用してスワップを無効にする 上記のdynamicpagerを無効にするのと同様に、ブログ投稿へのコメントからの一部の抜粋は、これが実行可能な解決策ではないことを示しています。「システムのメモリが不足すると、OS全体がハングします...」、「Macのメモリをすべて消費すると、マシンがハングする可能性があります」 要約すると、「非アクティブ」なメモリが残っているときに、Mac OS Xがスワップを使用できないようにする方法はまだわかりません。それが不可能な場合は、少なくともosxがいつでもメモリから解放される可能性のあるメモリをスワップアウトすることを好む理由について少なくとも説明がありますか?