このページの本文へ

前へ 1 2 次へ

Apple Geeks 第29回

知ってトクするOS Xのコマンド(1)

2011年02月22日 12時00分更新

文● 海上忍

  • この記事をはてなブックマークに追加
  • 本文印刷

「launchctl」でスワップを停止

 最初に起動されるプロセスは「init」。これはUNIX系OSにおける常識のひとつだったといっていい。initがシェルを起動し、それにシェルスクリプト(/etc/rc)を実行させることが、典型的なシステム初期化の手続きだ。

 しかし、OS XではTigerのときinitを廃止し、代わりに「launchd」を採用した。この新しいスーパーサーバーは、起動時に/System/Library/LaunchDaemonsおよび/Library/LaunchDaemonsの内容をチェックし、必要なサービス(デーモン)を起動する。サービスごとにXML形式の設定ファイル(launchd.plist)が用意され、パラメータはそこに記述するという仕組みだ。

 話は変わって「スワップ」。OS Xでは、メモリー消費量が物理メモリー容量を超えるタイミングで仮想メモリー領域上に作業領域を作成(スワップアウト)するが、専用パーティションではなく起動用ボリューム(/private/var/vm)を使ううえ、一度スワップアウトされたプロセスは物理メモリー領域を使わなくなってしまう。そうなるとシステムのレスポンスが低下するので、4GB超の物理メモリーを搭載することが当たり前となりつつある現在、スワップなしでやり繰りすることを検討する価値はあるだろう。

 スワップアウトは、コマンド「dynamic_pager」により自動処理されるが、これは「launchctl」によって起動されたデーモンで、ユーザーと対話形式で実行される一般的なコマンドとは性質が異なる。dynamic_pagerの機能を停止させる場合には、launchd管理用のlaunchctlコマンドを、以下の要領で実行すること。


$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist


 これでスワップアウトは発生しなくなる……が、今度は物理メモリーを使い切ってしまうとシステムが不安定化する可能性が出てくる。「それでは困る、安全第一」という場合には、以下の通りコマンドを実行すれば、システムの既定値どおりdynamic_pagerが起動し、必要なタイミングでスワップアウトしてくれる。必要に応じて使い分けていただきたい。


$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist



前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII.jp RSS2.0 配信中