Solaris のシステム管理 (第 2 巻)

メモリーとシステム性能

システム上で実行中のプログラムに、使用可能な容量よりも大きな物理メモリーが必要になると、性能が低下します。この問題が発生すると、オペレーティングシステムはページングとスワッピングを開始し、ディスクと CPU のオーバーヘッドを増加させます。

ページングでは、最近参照されていないページが使用可能なメモリーページの空きリストに移動されます。カーネルのほとんどの部分はメインメモリーに常駐しており、ページングできません。

スワッピングは、ページングデーモンがメモリーの需要に追いつけなくなると発生します。スワッパは、休眠中または停止した軽量プロセス (LWP) をスワップアウトしようとします。休眠中または停止した LWP がなければ、スワッパは実行可能プロセスをスワップアウトします。そして優先順位に基づいて LWP をスワップバックします。スワッパは実行可能なプロセスをメモリーに戻します。ページのページングとスワッピングが発生すると、ディスクと CPU のオーバーヘッドが増加します。

スワップ空間

スワップ空間は、実際にはスワッピングに使用されるファイルシステムです。スワップ空間のサイズは、アプリケーションの要件に基づいて設定する必要があります。購入先にアプリケーションの要件を問い合わせてください。

表 24-5 に、Solaris のインストールプログラムがデフォルトのスワップ空間のサイズ設定に使用する値を示します。スワップ空間のサイズを設定する方法がわからない場合は、これらのデフォルトのスワップサイズから始めるとよいでしょう。

表 24-5 デフォルトのスワップサイズ

物理メモリーのサイズ 

デフォルトのスワップサイズ 

16 〜 64M バイト 

32M バイト 

64 〜 128M バイト 

64M バイト 

128 〜 512M バイト 

128M バイト 

512M バイトを超える場合 

256M バイト 

スワップ空間の管理については、『Solaris のシステム管理 (第 1 巻)』の「追加スワップ空間の構成の手順」を参照してください。

バッファー資源

read システムコールと write システムコール用のバッファーキャッシュは、カーネルアドレス空間内で一定の範囲の仮想アドレスを使用します。1 ページ分のデータがカーネルのアドレス空間に対応づけられ、プロセスが要求したデータ量がプロセスのアドレス空間に物理的にコピーされます。次に、ページはカーネル内で対応づけを解除されます。物理ページは、ページデーモンによって開放されるまでメモリー内に残ります。

これは、少数の入出力集中型プロセスによってメインメモリーが独占されたり、他のプロセスが排除されたりする可能性があることを意味します。メインメモリーの独占を防ぐには、スクリプト内で並列に、または at(1) コマンドを使用して、入出力集中型のプロセスの実行負荷を調整します。プログラマは、mmap(2)madvise(3) を使用して、プログラムが使用していないときに必ずメモリーを開放するように設定できます。