サイト移設しました。技術情報をwww.putise.comで更新しています。

Solaris > swap

 

スワップ空間と仮想メモリー

 

Solaris ソフトウェアは、一時記憶域にファイルシステムではなくディスクスライスを使用します。これらのスライスを「スワップ」スライスと呼びます。 スワップスライスは、システムの物理メモリーが不足し現在のプロセスを処理することができないときに、仮想メモリー記憶域として使用されます。

 

スワップ空間と TMPFS ファイルシステム

 

Solaris 環境では、TMPFS ファイルシステムは /etc/vfstab ファイル内のエントリによって自動的に稼働されます。TMPFS ファイルシステムは、ファイルとそれに関連付けられた情報をディスクではなくメモリー (/tmp ディレクトリ) に格納するので、これらのファイルへのアクセスが高速になります。

 

TMPFS ファイルシステムは、システムのスワップリソースから /tmp ディレクトリ内の領域を割り当てます。つまり、/tmp ディレクトリ内の領域を使い果たすと、スワップ空間も使い果たしたことになります

 

TMPFS を使用したいがスワップリソースが限られている場合は、

vfstabのサイズオプション (-o size) を指定して TMPFS ファイルシステムをマウントし、TMPFS が使用できるスワップリソースを制御する。

 

 

 

スワップ関連のエラーメッセージ

 

次のメッセージは、アプリケーションがさらに anonymous メモリーを取得しようとしたが、バックアップ用のスワップ空間が残っていなかったことを示します。

 

application is out of memory

 

malloc error 0

 

messages.1:Sep 21 20:52:11 mars genunix: [ID 470503 kern.warning] 

WARNING: Sorry, no swap space to grow stack for pid 100295 (myprog)

 

 

 

 

TMPFS 関連のエラーメッセージ

 

次のメッセージは、ファイルに書き込むときにページを割り当てることができない場合に表示されます。この問題は、TMPFS が許容限度を超えて書き込もうとしたときや、現在実行されているプログラムが大量のメモリーを使用している場合に発生することがあります。


directory: File system full, swap space limit exceeded

 

次のメッセージは、TMPFS が新しいファイルやディレクトリの作成中に物理メモリーを使い果たしたことを意味します。

 

directory: File system full, memory allocation failed

 

TMPFS 関連のエラーメッセージから回復する方法については、TMPFS(7FS) のマニュアルページを参照してください。

 

 

 

 

スワップリソースの監視

 

/usr/sbin/swap コマンドを使用してスワップ領域を管理します。2 つのオプション -l と -s は、スワップリソースに関する情報を表示します。

 

swap -l コマンドを使用すると、システムのスワップ領域を確認できます。有効になっているスワップデバイスやファイルは、swapfile カラムの下に表示されます。

 

# swap -l

swapfile             dev  swaplo blocks   free

/dev/dsk/c0t0d0s1   136,1      16 1638608 1600528

 

swap -s コマンドを使用すると、スワップリソースを監視できます。

 

# swap -s

total: 57416k bytes allocated + 10480k reserved = 67896k used, 

833128k available

 

used 値と available 値の合計は、システム上の合計スワップ空間に等しくなります。これには、物理メモリーの一部とスワップデバイス (またはファイル) が含まれます。

 

注 –

swap -l コマンドではスワップ空間が 512 バイトのブロック数として表示され、 swap -s コマンドでは 1024 バイトのブロック数として表示されます。swap -l の場合はスワップ空間の計算に物理メモリーが含まれないので、 swap -l で表示されたブロック数を合計して K バイト数に換算すると、 (swap -s で出力される) used と available の値の合計よりも少なくなります。

 

キーワード説明

 

bytes allocated

現在バックアップ用の記憶域 (ディスク上にとられたバックアップ用のスワップ空間) として使用可能なスワップ空間の合計容量を表す 1024 バイトのブロック数

 

reserved

現在は割り当てられていないが、後から使用できるようにメモリーによって回収されるスワップ空間の合計容量を表す 1024 バイトのブロック数

 

used

割り当て済みまたは予約済みのスワップ空間の合計容量を表す 1024 バイトのブロック数

 

available

後から予約や割り当てに使用可能なスワップ空間の合計容量を表す 1024 バイトのブロック数

 

 

 

 

スワップファイルを作成して使用可能にする方法

 

スーパーユーザーで実行します。


必要に応じて、スワップファイル用のディレクトリを作成します。

スワップファイルを作成します。

# mkfile nnn[k|b|m] filename

指定したサイズ「nnn」(K バイト、バイト、または M バイト) とファイル名でスワップファイルが作成されます。

 

スワップファイルを有効にします。

# /usr/sbin/swap -a /path/filename

 

絶対パス名を使用してスワップファイルを指定しなければなりません。スワップファイルが追加され、ファイルシステムがマウント解除されるか、またはシステムがリブートされるまで使用可能になります。


次のように、ファイルのフルパス名を指定し、ファイルシステムのタイプとして swap を指定して、スワップファイルのエントリを /etc/vfstab ファイルに追加します。

/path/filename   -      -       swap     -     no     -

スワップファイルが追加されたことを確認するには、次のように入力します。

 

$ /usr/sbin/swap -l




 

ワップファイルを削除する

 

不要になったスワップ空間を削除する方法

スーパーユーザーになります。


スワップ空間を削除します。

# /usr/sbin/swap -d /path/filename

スワップファイル名が削除されるので、スワッピングに使用できなくなります。ファイルそのものは削除されません。


/etc/vfstab ファイルを編集して、スワップファイルのエントリを削除します。


他の目的に使用できるようにディスク領域を復元します。

# rm /path/filename

スワップ空間がファイルの場合は削除します。また、スワップ空間が別のスライスに入っていて、不要なことがわかっている場合は、新しいファイルシステムを作成してマウントします。


削除したスワップファイルが使用できなくなっていることを確認します。

# swap -l