本サイトのコンテンツには、商品プロモーションが含まれている場合があります。

Solaris

SCSA PartII 仮想メモリとスワップ空間およびコアダンプの管理[SCSA]Part II Solaris memoy and swap area guide memo

スポンサーリンク

1.仮想メモリとは
a)仮想メモリ
物理メモリに対して、その領域が不足した際にメモリの一部として透過的に使用されるハードディスク上のスペース。
b)スワップ空間
仮想メモリの保存に使われるディスクスライスをスワップ空間(スワップ領域、スワップスペースとも表記される)またはスワップスライスという。
c)仮想スワップ空間
ディスク上のスワップ空間にアクセスするためのメモリ上の仮想アドレス。システムはこの仮想スワップ空間のアドレスを使ってスワップ空間にアクセスする。
物理メモリ上の一部を使って仮想スワップ空間を確保している

2.スワップスライスのサイズ
Solaris10のデフォルト値は512MBだが必須ではないので「0」でもよい
実際に構築する際には以下のサイトのドキュメントを参照する
http://docs.sun.com/app/docs/doc/819-0386/6n2qla4r5?a=view

3.SWAPFSとTMPFS
SWAPFS
仮想スワップ空間を管理する仮想ファイルシステム。物理メモリ(物理RAM)/仮想メモリ(スワップスライス)またはスワップファイル(スワップ空間を追加できるファイル)のデータにアクセスする。仮想スワップ空間アドレス経由で各メモリ空間にアクセスするため、物理メモリ上のメモリ空間アドレスを節約できる
TMPFS
/tmpディレクトリを物理メモリにマッピングする仮想ファイルシステム。メモリ上のファイルシステムなので高速な読み取り/書き込みが可能となるが、物理メモリが少なくなるとディスク上にスワップされるため余計に遅くなる。
/tmpディレクトリはスワップ空間から割り当てられることに注意が必要(スワップ空間が不足するかも)
仮想ファイルは再起動すると消える。
/tmpにはファイルを置かない。

4.仮想ファイルシステムとは
Solarisがサポートしているメモリベースのファイルシステム
メモリベースなので格納されているデータへの高速アクセスが可能

5.スワップ/メモリ関連用語
ページ
メモリスペースの割当単位。SPARCでは1ページ8KB
アロケーション
プログラムで使用するメモリを確保すること
ページフォルト
プログラムがスワップに保存されているデータを必須としたときにそのデータが物理メモリ上に存在しない状態。この発生は物理メモリの不足を意味する
ページング
ページフォルとが発生した際にSWAPFSが要求されたデータをスワップから物理メモリ上に移動すること。(実際には仮想スワップ空間アドレスのリンク先を変更する)

ページアウト(スワッピング)
SWAPFSが利用率の低いデータを物理メモリ上からスワップに移動すること(実際には仮想スワップ空間アドレスのリンク先を変更する)

6.mkfileコマンド
稼働中のシステムでスワップスペースが足りなくなった場合、パーティション構成の変更なしにスワップスペースを追加することができる。
mkfileコマンドで既存のUFSファイルシステムまたはNFSファイルシステムにスワップファイルを作成し、SWAPコマンドで有効化する

mkfile [ファイルサイズ] [ファイル名]  (SWAPファイルをつくる)

# mkfile△100m△/swapdir/file1
※削除はswap△-dのあとにrmコマンドで行う
無効化する場合はswap△-dのみ

7.SWAPコマンド
スワップ空間を管理するコマンド。mkfileコマンドで作成されたスワップファイルをスワップ空間へ追加/削除(有効化/無効化)できる
swap < オプション>[ファイルのフルパス]
-a [ファイルのフルパス]
空きスライスやスワップファイルをシステムのスワップ空間に追加
-l
スワップ空間のリストを表示
-s
スワップ空間の統計のリストを表示
-d [ファイルのフルパス]
スワップ空間の削除

# swap△-a△/swapfile/file1
# swap△-a△/dev/dsk/c0r0d0s3
※リブートするとリセットされるので/etc/vfstabへ追記が必要

8.スワップ領域の追加手順
i.mkfileコマンドを使用してスワップファイルを作成する
# mkfile△nnn[k|b|m]△filename
ii.swapコマンドを使用してスワップファイルを有効にする
# /usr/sbin/swap△-a△/path/filename
iii.システムのブート時に自動的に有効になるようにスワップファイルのエントリを/etc/vtstabファイルに追加する
# /path/filename△--swap--no---
iv.スワップファイルの追加を確認する
# /usr/sbin/swap△-l

9.スワップ領域の削除
swap -dコマンドでスワップ空間を削除
# /usr/sbin/swap△-d/path/filename
# rm△swap△-filename

10.コアファイルとクラッシュダンプ
アプリケーションやシステム自身のクラッシュ時にクラッシュ情報が保存されるとその情報からクラッシュの原因が分かり、問題への対応が出来ることがある。
クラッシュした時のメモリの中身をファイルにする
コアファイル
アプリケーションがクラッシュしたときに作成されるファイル
クラッシュダンプファイル
システムがクラッシュしたときに作成されるファイル
11.コアファイル
プロセスまたはアプリケーションが異常終了すると作成される
デフォルトではアプリケーションが実行されていたディレクトリに保存される
プロセス別コアファイルとグローバルコアファイルの2種類がある

12.coreadmコマンド
コアファイル名前と保存場所を表示または設定する
# coreadm [-g(-i|-d|-e) ]

-d
オプション無効
-e
オプション有効
-i
プロセス別コアファイルのファイル名を指定
-I
プロセス別コアファイルのコンテンツを指定
-g
大域コアファイルのファイル名を指定
-G
大域コアファイルのコンテンツを指定

13.クラッシュダンプ
Solarisシステムがクラッシュしたときの動作
1.コンソールにエラーメッセージを出力
2.物理メモリのコピーをダンプでバイスに書き込む
3.自動リブート
4.savecoreコマンドが実行されダンプデバイスからカーネルの名前リストをunix.(連番になる)クラッシュダンプデータをvmcore.に書き込む
※各ファイルは/var/crash/ディレクトリにある。

14.dumpadmコマンド
システムクラッシュダンプ情報の管理コマンド。オプション無しでは情報の表示をする

Dump content: kernel pages
Dump device: /dev/dsk/c0t3d0s1 (swap)
Savecore directory: /var/crash/venus
Savecore enabled: yes

ダンプの内容はカーネルメモリーページであるカーネルメモリーがスワップでバイス/dev/dsk/c0t3d0s1にダンプされる
swa-p -lコマンドによりすべてのスワップ領域を識別できる。システムクラッシュダンプファイルは/var/crash/venusディレクトリに保存

15.システムクラッシュダンプ情報の管理コマンド
# dumpadm

-n
リブート時のsavecoreコマンドの自動実行を無効にする
-d
ダンプデバイスを指定
-s
savecoreコマンドが書き込んだファイルを保存

  # savecore -L 強制ダンプ。現在のメモリのスナップを取得

-Solaris
-,