web-dev-qa-db-ja.com

OSXでより多くのRAMおよびより少ないスワップを使用するようにする方法はありますか?

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

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

ディスクスワップファイルを使用する前に、OSXにRAM)の多くまたはほとんどを使用させる方法はありますか?

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

12
Darryl Hein

最も基本的な答えは?いいえ。OSはユーザーのメモリ管理を処理します。プロセスに必要なだけのメモリを提供し、システムのパフォーマンスを変更できるという点ではそれほど多くはありません。 LinuxサーバーがMacサーバーを上回っている理由について、メモリ使用率が方程式の一部であるかどうかを理解しようとしても、あまり役に立ちません。

仮想メモリシステムには「ハッキング可能性」がないため、仮想メモリのパフォーマンスを評価して、それが本当にパフォーマンスの問題を抱えている理由であるかどうかを確認するのが最善の選択肢です。最も基本的なのは、vm_statを使用するか、followを使用することです。 vm_stat [number of seconds]を使用してライブで、発生しているページアウトの数を確認します。未使用のページをRAMからハードドライブに移動する方が、ページをハードドライブからRAMに戻すよりもはるかに低コストです。OSX用語でのページは4kbのデータを指します。

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

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

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

du -sh /var/vmの使用には、1つの注意点があります。休止状態モード(過去4年以降のもの)のラップトップでは、インストールしたメモリの量とほぼ同じサイズのsleepimageが存在する可能性があります。


Mac OS Xメモリ専門用語:

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

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

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

Private:これは、プロセスが独自に使用しているメモリであり、常駐メモリで使用されます。 (RPRVT)

Virtual:何かにマップされるプロセス内のアドレス空間の合計量-それが変数のための任意の大きなスペースであろうとなかろうと-それは以下に等しくありません実際のVM使用。(VSIZE)

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

Inactive: "非アクティブなメモリは使用されなくなり、ディスクにキャッシュされました。RAMまで別のアプリケーションにはスペースが必要です。この情報をRAMに残しておくと、後でユーザー(またはコンピューターのクライアント)が戻ってきた場合に役立ちます。」-Mac OSXヘルプ

無料:データなしで実際に利用可能なRAMの量。


私が知っている(そして追跡調査で見つけることができた)最高のドキュメントは、Apple自身の メモリの管理 開発者のWebサイトの記事です。

その他の価値のある情報源:Darwin-devメーリングリスト:[ 1 ]、[ 2 ]および MacOSXHints に関する古い記事。さらに、マイク・アッシュは彼の ブログ に良い素人の紹介を投稿しました


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

17
Chealion