Mac OS X Server v10.6:共有メモリセグメント値の調整

System V 共有メモリセグメントと呼ばれることがあるshm_open(2) を使用するアプリケーションにアクセスする Mac OS X Server v10.6 クライアントは、共有メモリにリソースを設定する必要があります。たとえば、postgres とその他のデータベースでは、こうしたリソースの割り当てを調整する必要があります。

Mac OS X Server の共有メモリセグメントは sysctl 変数を通して設定されます。変数は次のとおりです。

  • kern.sysv.shmmax - 全共有メモリセグメントの最大サイズ (バイト)
  • kern.sysv.shmmin - 共有メモリセグメントの最小サイズ (バイト)
  • kern.sysv.shmmni - システム全体の共有メモリセグメントの最大数
  • kern.sysv.shmseg - プロセスあたりの共有セグメントの最大数
  • kern.sysv.shmall - システム全体の共有メモリセグメントに割り当てられたページの最大数

重要:この記事には、経験豊かなサーバ管理者向けの高度な設定手順が記載されています。これらの値を変更すると、パフォーマンスに重大な悪影響を及ぼす可能性があります。Mac OS X Server v10.6 を使用するときは、これらの値を調整する必要はほとんどありません。

値を読み取る

上記の変数のデフォルト値は、サーバのハードウェア構成によって異なります。各設定のデフォルト値を読み取るには、ターミナルで、sysctl コマンドを対象の変数名とともに使います。下記は、その例です。

sysctl kern.sysv.shmmax

kern.sysv.shmmax 変数のデフォルト値を返します。
 

値を設定する

128 MB を超えるセグメントを使用する場合は、Mac OS X Server v10.6 で 64 ビットカーネルをサポートするハードウェアが推奨されます。お使いのハードウェアが 64 ビットカーネルをサポートするかどうかを判断するには、こちらの記事 を参照してください。64 ビットカーネルを使用する場合、共有メモリセグメントサイズの主な制限は、対象サーバの物理 RAM の容量になります。共有メモリセグメントに割り当てるメモリを計画する場合は、システム全体で使用されるメモリを考慮する必要があります。

たとえば、サーバで下記を使用していると想定します。

512 MB - 常駐カーネルメモリ
3.8 GB - すべてのアプリケーション (共有メモリセグメントは含まれない) によって使用される常駐メモリ
1 GB - 共有メモリ領域
5.3 GB - 上記の合計

この例では、1 つの 1 GB 共有メモリ領域をサポートするために、最低 6 GB の物理 RAM が必要です。さらに、ページテーブルと仮想メモリに追加のメモリが必要になるため、1 GB の共有メモリセグメント 1 つを 500 プロセスで共有する場合は、1 GB よりもさらに多くのメモリが必要となります。

上記の変数値を変更するには、次のフォーマットのテキスト行で、ファイル /etc/sysctl.conf を作成します。

kern.sysv.shmmax=1073741824

この例では、共有メモリの最大サイズが 1 GB (1073741824 バイト) に増加します。デフォルト値から変更する各変数の値を設定するには、別の行を使います。

ファイルを作成したら、サーバを再起動して新しい値を有効にします。

公開日: