OSXでより多くのRAMを使用し、スワップをより少なくする方法はありますか?


12

私が抱えている問題はサーバー(および他のOSXボックス)にあり、4GBのRAMがありますが、OSXは使用可能なRAMの40-60%しか使用せず、6-7GBのスワップもあります。サーバーはApacheとMySQLを実行していますが、他のマシンはデスクトップです。

私はその使用方法を類似のLinuxボックス(ハードウェアとソフトウェア)と比較しましたが、Linuxは通常80-90%のRAMを使用し、スワップファイルははるかに小さい(2-3GB)ことを発見しました。また、Linuxサーバーは通常、はるかに高速に実行されます。

ディスクスワップファイルを使用する前に、OSXにRAMの大部分または大部分を強制的に使用させる方法はありますか?

Windowsでは、実際にスワップを完全に無効にすることができます。OSXに似たようなものはありますか?


明確化のために:1.ボトルネックはVMシステムですか?メモリスターが表示されている場合と同様に、ページアウトが発生すると大量に発生します。2. FreeおよびVMサイズの情報はどこで入手できますか?たとえば、アクティビティモニターに記載されているVMサイズは、スワップファイルのサイズとは異なります。
Chealion

VMシステム(VMまたはスワップ)に問題があるという証拠はありませんが、デスクトップには6 GBのRAMがあります。通常は2〜3 GBが無料です。プログラムを切り替えると、すべてがRAMにあるため、非常に高速になりますが、Illustratorのようなものに切り替えるには2〜15秒かかります。サーバーでも同様のことが起こっていると考えています。MySQLや一時テーブルのキャッシュなどです。topを使用して、VM、RAM、およびスワップの使用量を判断しています。何か案は?
ダリル・ヘイン

3
実際のvmの使用状況を判断するには、実行するのが最も簡単です。du -sh /var/vmつまり、sleepimage(ラップトップで最もよく見られる)が存在する場合、人為的に高くなる可能性があるということです。スローアップを引き起こしているのがメモリかどうかを判断するのに役立つツールがいくつかありvm_statます。特に、ページアウト値に関心がある場合-かなり増加する場合は、頻繁にスワップしていることがわかります。Appleがメモリを管理する方法の詳細については、developer.apple.com
documentation / Performance / Conceptual /…

回答:


17

最も基本的な答えは?いいえ。OSはユーザーのメモリ管理を処理します。プロセスは要求に応じて必要なだけのメモリを提供し、システムの実行方法を変更できるという点では全体を提供しません。LinuxサーバーがMacサーバーよりも優れている理由について、メモリ使用率が方程式の一部であるかどうかを把握しようとしても、あまり役に立ちません。

そのため、仮想メモリシステムにおける「hackability」の不足のあなたの最良のオプションは、それは本当にあなたがパフォーマンスの問題を抱えている理由であるかどうかを確認するために、仮想メモリの性能を評価するためにある-最も基本的なを使用することですvm_statまたは使用、それに従ってくださいを使用vm_stat [number of seconds]して、ページアウトが何回発生しているかを確認します。RAMからハードドライブに未使用のページを移動すると、ハードドライブからRAMにページを取得するよりもはるかに低コストです。OS X用語のページは4kbのデータを指します。

また、32ビットプロセス(Illustratorなど)は4GBを超えるアクセスができないため、6GBがインストールされている場合、理論的には2GBの空き領域を確保し、プロセスがメモリ不足になる可能性があります。

デスクトップとサーバーの両方で、vm_stat 2特にIllustratorに切り替えるときに数秒の遅延が発生する場合は、最後の列を実行して確認します。

スワップの実際の大きさを確認するには、アクティビティモニターでスワップサイズを確認するか、実行しdu -shc /var/vm/swap* | tail -n 1ます。

を使用して du -sh /var/vmは注意点が1つあります。休止状態モード(過去4年以上)を搭載したラップトップでは、sleepimageインストールしたメモリのサイズとほぼ同じサイズになる場合があります。


Mac OS Xメモリ用語:

有線:これはカーネルコードなどを指します。RAMから移動してはならないメモリ。常駐メモリとも呼ばれます。

共有:2つ以上のプロセス間で共有されるメモリ。両方のプロセスでこのメモリ量が表示されるため、実際に使用されているメモリ量について少し誤解を招く可能性があります。

リアル:これは、task_info()によって報告されるアプリケーションの「実際の」メモリ使用量です。現在のプロセスが持っている物理ページの数の大まかなカウントです。(RSIZE)

民間:これは、常駐メモリで使用される、プロセスが単独で使用しているメモリです。(RPRVT)

バーチャル:何かにマップされるプロセス内のアドレス空間の総量-それが変数または何かのための任意の大きな空間であろうと-それは実際のVMの使用に相当しません。(VSIZE)

アクティブ:現在としてラベル付けされ、RAMが使用されているメモリ。

非活性:「非アクティブなメモリは使用されなくなり、ディスクにキャッシュされました。別のアプリケーションがスペースを必要とするまでRAMに残ります。それに後で」-Mac OS Xヘルプ

Free:データなしで実際に使用可能なRAMの量。


私が知っている(そしてフォローアップ調査で見つけた)最高のドキュメントは、開発者のWebサイトにあるApple自身のメモリ管理の記事です。

その他の価値のある情報源:Darwin-devメーリングリスト:[ 1 ]、[ 2 ]、およびMacOSXHintsに関する古い記事。さらに、Mike Ashは彼のブログに素人の紹介を掲載しています。


sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plistdynamic_pager(実際に仮想メモリの割り当てを行うプログラム)が起動しないように実行してから再起動することで、仮想メモリシステムを無効にすることは可能です(試していません)。ただし、OSは仮想メモリを持っていると想定しているため、非常に迅速に問題が発生する可能性があります。バックアップ実行をロードするにはsudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(必要に応じてシングルユーザーモードから)

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