4 GBのRAMで実行されているOS Xマシンがあるとします。単一のプロセスが3 GB以上を占めることがないように設定することは可能ですか?したがって、プロセスのメモリ消費量に関係なく、システムの応答性を維持するために常にいくらかのメモリが残っていますか?
4 GBのRAMで実行されているOS Xマシンがあるとします。単一のプロセスが3 GB以上を占めることがないように設定することは可能ですか?したがって、プロセスのメモリ消費量に関係なく、システムの応答性を維持するために常にいくらかのメモリが残っていますか?
回答:
これと同様の質問がここに記載されています。MacOSアプリケーションが使用できるRAMの量を制限するにはどうすればよいですか?
彼らはulimitコマンドの使用を推奨していますが、希望する量に制限することができませんでした。彼らが遭遇した問題は、-uまたは-vを設定するオプションがメモリページングシステムを考慮していないという事実だったと思います。たとえば、実際のRAMでプロセスにX量のスペースしか割り当てることができませんが、 1日中仮想メモリにアクセスできます。
これは、危険な仮想メモリの無効化である可能性があり、RAMが実行されるとMacがロックするなどのことに注意してください。
引数-l、-m、または-vを指定してulimitを実行してみてください。ただし、ulimitのマニュアルページに記載されているように、これらの設定に注意を払うかどうかをOSに伝えます。
ulimit:ulimit [-SHacdefilmnpqrstuvx] [limit]
シェルリソースの制限を変更します。
そのような制御を許可するシステムで、シェルおよびシェルが作成するプロセスで使用可能なリソースを制御します。
OS Xがulimitを無視するかどうかを確認する明確なソースを実際に見つけることはできませんが、参照されたulimitが失敗した後
ulimitを自分のニーズに合わせて機能させることができる場合は、それを試してみてください。ulimitの組み合わせや仮想メモリを無効にすると、選択プロセスでその3 GBの制限を設定できる場合があります。参考までに、Snow Leopard System 10.6の仮想メモリを完全に無効にする方法について詳しく説明しています。
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
MacでLion(または新しいOSX)サーバーを実行している場合、そのMacのVM(VirtualBox、Parallels、またはVMWareなど)内でOSXを実行できる場合があります。VMを3 GBの物理RAMに制限すると、VM内のアプリやプロセスもそのように制限されます。VM内のOSがバッキングスワップディスク制限またはクラッシュした場合でも、VMをホストするシステムは応答性を維持する必要があります。
暴走する可能性のあるプロセスをデバッグしている場合は、VMにsshしてコマンドラインからデバッガーまたはデバッグnubを実行し、ロックアップするまでログを記録できる場合があります。