質問: 「非アクティブ」メモリがまだあるときにmac os xがスワップを使用できないようにする方法 私の日々のos xの一般的な現象(およびインターネット全体のさまざまな投稿による他のいくつかの現象)では、利用可能な「空き」メモリがなくなると、システムが遅くなるようです。おそらく、これはスワッピングが原因であると考えられます。これは、重いディスクアクティビティが明らかであり、vm_statが多くのページアウトを報告するためです。 (私を間違ったことから訂正してください)ただし、「非アクティブ」ramの量は、スワッピングが開始/発生/終了したときに、通常、使用可能なすべてのメモリ(^ 1。)の約12.5%〜25%です。 http://support.apple.com/kb/ht1342 によると: 非アクティブなメモリ メモリ内のこの情報は積極的に使用されていませんが、最近使用されました。 たとえば、mailを使用していてそれを終了した場合、mailが使用していたramは非アクティブメモリとしてマークされます。この非アクティブメモリは、freeと同様に、他のアプリケーションで使用できます。ただし、別のアプリケーションで非アクティブメモリが使用される前にメールを開くと、低速のハードディスクからメールをロードする代わりに、非アクティブメモリがアクティブメモリに変換されるため、メールの起動が速くなります。 そして http://developer.apple.com/library/mac/#documentation/performance/conceptual/managingmemory/articles/aboutmemory.html によると: 非アクティブリストには、現在物理メモリに常駐しているが最近アクセスされていないページが含まれています。これらのページには有効なデータが含まれていますが、いつでもメモリから解放される可能性があります。 したがって、基本的には、プログラムが終了すると、そのメモリは非アクティブとしてマークされ、いつでも要求可能になるはずです。それでも、os xは、「空き」メモリが少なくなると、このメモリを要求するのではなく、メモリをスワップファイルにスワップアウトすることを好みます。どうして?この動作の利点は、たとえば、非アクティブなメモリを即座に解放し、スワップファイルにさえ触れないことです。一部のソース(^ 2。)は、os xが解放する前にスワップするために「非アクティブ」メモリをページアウトすることを示していますが、メモリがメモリから解放される可能性がある場合、これは意味をなさないいつでも?スワッピングは高価で、リリースは安いですよね?この動作は、設定または既知のハックを使用して変更できますか? (できれば、swap/dynamic_pagerを完全に無効にして再起動することを含まないものが望ましい...) purge コマンドと、一部の空きメモリを強制するためのディスクアクセス許可の修復の概念に感謝しますが、これらは実際にスワップを修正するよりも多くの空きメモリを強制的に強制する方法です/リリース決定ロジック...ところで、同様の質問がここで行われました: 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。 update 17-mar-2012 この質問を最初に投稿して以来、インストール済みramを4 gbから8 gbに変更しましたが、問題は解決しません。 「非アクティブ」ramの量は以前は0.5gb-1.0gbでしたが、スワップが開始/発生/終了すると、通常は約1.0-2.0gbです。つまり、ramの約12.5%-25%がosxによって非アクティブとして保持されているようですカーネルロジック。^ 2。たとえば https://apple.stackexchange.com/questions/4288/what-does-it-mean-if-i-have-lots-of-inactive-memory-at-the-end-of- a-work-day : すべてのメモリが使用されると(空きメモリは0)、osは非アクティブなメモリをスワップファイルに書き込んで、アクティブなメモリの空き容量を増やします。 update 17-mar-2012 以下は、これまでに役立つことが提案されているメソッドのまとめです。purgeコマンド「パフォーマンス分析のためにコールドディスクバッファーキャッシュを使用して初期ブート条件を概算するために使用されます。malloc、vm_allocateなどを通じて割り当てられた匿名メモリには影響しません。」.これは、osxがディスクキャッシュをスワップアウトするのを防ぐのに役立ちます(これは、最初にosxが実際にそうするのはばかげています)が、ディスクキャッシュが解放されるという欠点があるため、ディスクキャッシュがスワップアウトすると、コールドディスクバッファキャッシュが発生し、パフォーマンスに悪影響を与える可能性があります。 the freememory app and/or repairing disk permissions to force some free memory メモリの解放の助けにはならず、数ギガバイトのメモリの内容をramからhdに移動するだけです。最後に、メモリの解放中に開いていたアプリケーションを使用しようとすると、多くのスワップインが発生します。これは、そのvmの多くがスワップ上にあるためです。 dynamicpagerwrapper を使用してスワップ割り当てを高速化スワップの使用を高速化するために行うことは良いことのようですが、非アクティブなメモリが残っているときに、そもそもosxスワッピングの問題に対処していません。 dynamicpager を無効にして再起動することでスワップを無効にするこれにより、すべてのメモリが使用されている場合、osxはシステムハングの価格までスワップを使用しなくなります。実行可能な代替案ではありません... a hacked dynamicpager を使用してスワップを無効にする上記のダイナミックページャーを無効にするのと同様に、ブログ投稿へのコメントからの一部の抜粋は、これが実行可能な解決策ではないことを示しています:「通常どおり非アクティブなメモリが高い」。 「システムのメモリが不足すると、os全体がハングします...」、「macのメモリをすべて消費すると、マシンがハングする可能性があります」要約すると、まだ「非アクティブ」なメモリがあるときに、mac os xがスワップを使用できないようにする方法はまだわかりません。それが不可能な場合は、少なくともosxがメモリをスワップアウトする理由のどこかに、いつでもメモリから解放される可能性があるという説明があるかもしれません?
回答: os x 10.5以降、mac os xに明らかなメモリ管理の問題があります。その後、しばらくするとシステムの速度が大幅に低下するという不満がウェブに散らばっています。その当時、私はより遅いマシン、1gbのramを搭載したmac miniを持っていたので、(間違って)ハードウェアの不良が原因であると結論しました。2010 mbp、コアi7、8 gb ram、デュアルgpuが搭載されました。 mac os x snow leopardは苦痛でしたが、os x lionへの移行後、macで深刻な作業を行うことは悪夢になり始めました。ようやく問題のあるシナリオを再現できたので、テストを実行して画面をビデオに記録しました。 mac os x lionのパフォーマンスの問題-メモリ管理の破損 私は、私のpictures /フォルダーにある大量の画像ファイルに対して、unixの基本的なものであるtar + bzipコマンドを実行します。開始する直前に、「purge」コマンドを実行して、非アクティブ/キャッシュされたプログラムデータを削除します。ビデオを見ると、空きメモリが非常に速く減少し始め、非アクティブが常に増加していることがわかります。 「bsdtar」コマンドを見ると、ramの断片のみが必要なので、このプロセスには問題はありません。これはプログラムのメモリリークであるとは言えません。問題は非アクティブなramではなく、アクティブ/有線にあるためです。無料のメモリが100 mbを下回ったときに、safari、iphoto、ms wordなどのアプリをいくつか起動したところ、通常の場合(無料のramがある場合)、アプリの起動に数分かかることがわかります。読み込みに3〜5秒かかります。linux centos 6ボックスで同じシナリオと同じコマンドを実行しましたが、問題ありません。メモリ使用量は10〜20mb程度で、キャッシュ/バッファに問題はありません。mac os xでは、メモリ管理が非常に壊れている必要があります。