Jump to content 日本-日本語

製品 >  ソフトウェア >  HP- UX Developer Edge

HP-UXメモリ管理 ホワイト・ペーパー バージョン1.4

スワップ・スペース管理
HP-UX/Integrityサーバー お問い合せ
コンテンツに進む

スワップ・スペース管理


スワップ・スペースとは高速記憶装置(ほとんどの場合ディスク・ドライブ)上の領域であり、仮想メモリ・システムでプロセスの非アクティブ化とページングに使用するために予約されます。システム上に少なくとも1つのスワップ・デバイス(一次スワップ)がなければなりません。

システムの起動時に、各スワップ・デバイスの場所(ディスク・ブロック番号)とサイズが512KBブロックで表示されます。カーネルを再構成しなくても、システムの実行中に必要に応じて(つまり動的に)スワップを追加できます。

スワッパーはプロセス作成時にスワップ・スペースを予約しますが、ページがディスクに移る必要があるまでディスクからスワップ・スペースを割り当てません。プロセス作成時にスワップが予約されるため、スワッパーがスワップ・スペースを使い果たすことを防止できます。

HP-UXでは、物理スワップと擬似スワップの両方を使用して効率的なプログラム実行を実現しています。

擬似スワップ・スペース


スワップ・スペースに使用されるシステム・メモリを擬似スワップ・スペースと呼びます。このスペースにより、物理スワップを割り当てなくてもメモリ内でプロセスを実行できます。擬似スワップを、オペレーティング・システム・パラメータswapmem_onで制御します。このパラメータのデフォルト値は1で、擬似スワップが使用可能なことを示します。

通常は、ページ・アウトしなければならない場合に備えて、システムによるプロセスの実行時にスワップ・スペースがプロセス全体用に予約されます。このモデルに従えば、1GBのプロセスを実行するために、構成済みの1GBのスワップ・スペースがシステムに存在しなければなりません。これによりシステムがスワップ・スペースを使い果たすことを防止できますが、最低限のスワッピングが生じた場合やスワッピングが生じなかった場合、スワップ用に予約されたディスク・スペースが十分に活用されません。

このようなリソースの浪費を回避するために、HP-UXは擬似スワップとしてシステム・メモリ容量の最大7/8までアクセスするように構成されています。これは、システム・メモリが2つの機能(プロセス実行スペースとスワップ・スペース)を果たすことを意味しています。擬似スワップ・スペースを利用すれば、2GBのスワップを備える2GBのメモリ・システムで、最大3.75GBのプロセスを実行できます。以前と同様に、プロセスがこの拡張しきい値を超えて成長したり、この値を超えるプロセスが作成されると、そのプロセスは失敗します。

スワップに擬似スワップを使用するとページがロックされるため、擬似スワップの量が増えるとロック可能メモリの量が減ります。

アプリケーション全体がメモリに常駐している場合に最良のパフォーマンスが発揮される生産ラインのシステム(コントローラなど)では、擬似スワップ・スペースを使用すればパフォーマンスが向上します。そのために、アプリケーションをメモリ内にロックするか、作成されるプロセスの総数がシステム・メモリの7/8を超えないようにします。

作成されるプロセスの数が許容数に近づくと、スラッシングが生じ、システム応答速度が低下することがあります。必要な場合は、/usr/conf/master.d/core-hpuxの調整パラメータswapmem_onをゼロに設定すれば擬似スワップ・スペースを使用不可にできます。

擬似スワップを割り当てられた領域の二重リンク・リストの先頭に、pswaplistというリスト(最後がヌルになっている)があります。

物理スワップ・スペース


物理スワップ・スペースには、デバイス・スワップ・スペースとファイル・システム・スワップ・スペースの2種類があります。

デバイス・スワップ・スペース


デバイス・スワップ・スペースは固有の予約済み領域(ディスク全体またはLVMディスクの論理ボリューム)に存在し、一般にファイル・システム・スワップ・スペースよりも高速です。

ファイル・システム・スワップ・スペース


ファイル・システム・スワップ・スペースはマウントされたファイル・システム上に配置され、サイズはシステムのスワッピングのアクティビティによって変わります。ただし、未使用のファイル・システム・ブロックが必ずしも連続していないことがあるため余分な読み取り/書き込み要求が生じることと、コードの追加階層の余分なオーバーヘッドが原因で、スループットはデバイス・スワップよりも遅くなります。

システム・パフォーマンスを最適化するために、ファイル・システム・スワップ・スペースの割り当てと割り当て解除はswchunkサイズのチャンクで行われます。swchunkは構成可能なオペレーティング・システム・パラメータであり、デフォルト値は2048KB(2MB)です。ファイル・システム・スペースのチャンクがこのページ方式で使用されなくなると、ファイル・システムで使用するために解放されます(ただし、swaponコマンドで事前に割り当てられていない場合)。

ファイル・システム・スワップ・スペースへのスワッピングの場合、スワップ・スペースの各チャンクはファイル・システム・スワップ・ディレクトリ内のファイルであり、その名前はシステム名とswaptab索引から構成されます(たとえば、beckyという名前のシステム上のswaptab[6]はbecky.6となります)。

スワップ・スペースのパラメータ


表23 構成可能なスワップ・スペース・パラメータ

パラメータ 目的
swchunk DEV_BSIZEブロックの数(スワップ・スペース単位)。すべてのシステムでデフォルト値は2MB。
maxswapchunks システム上で許容されるスワップ・チャンクの最大数。
swapmem_on 擬似スワップを使用した場合に、物理スワップ・スペースよりも多くのプロセスを作成できるようにするパラメータ。

スワップ・スペースのグローバル変数


スワップ・スペースに関連するカーネル・グローバル変数が多数あります。スワップ・スペース予約にとって最も重要な変数は、swapspc_cnt、swapspc_max、swapmem_cnt、swapmem_max、sys_memです。

表24 スワップ・スペースの特性(グローバル変数)

変数 意味
bswlist 空きスワップ・ヘッダ・リストの先頭。
swdevt[] デバイス・スワップ・テーブル。
fswdevt[] ファイル・システム・スワップ・テーブル。
swaptab[] スワップ・チャンクのテーブル。
swapphys_cnt ディスク上の使用可能な物理スワップ・スペースのページ数。これは、予約されているかどうかにかかわらず、未割り当てページの数になる。下記のswapspc_cntは、予約されていないページのみの数。
swapphys_buf 使用可能な物理スワップ・スペースのページ数。swapphys_cntがこの数を下回ると、ページのメモリ上のコピーがディスク上のコピーよりも新しい場合、vhandのエージ針によりスワップ・スペースが解放される(これは、ページをページ・アウトしなければならない場合に、スワップ・スペースを再割り当てする必要があることを意味する)。
swapspc_cnt 使用可能なすべてのデバイスとシステム上で現在使用できるスワップの合計(ページ単位)。スワップが予約または解除されるたびに更新され、デバイスまたはファイル・システムがスワップピングに対して使用可能になるになるたびに更新される。
swapspc_max システム上の現在使用可能なデバイス・スワップとファイル・システム・スワップの合計(ページ単位)。デバイスとファイル・システムがスワッピングに対して使用可能になるたびに更新される。
swapmem_cnt 現在使用可能な擬似スワップのページ総数。初期値はswapmem_max。
swapmem_max 使用可能な擬似スワップの最大ページ数。初期値は使用可能なシステム・メモリの7/8。
pswaplist 擬似スワップを使用する領域のリンク・リスト。
maxdev_pri 使用可能なスワップ・デバイスの最高優先順位。
maxfs_pri 使用可能なスワップ・ファイル・システムの最高優先順位。
phys_mem_pages システム上の物理メモリのページ数。
sys_mem 擬似スワップとして使用できないメモリのページ数。通常の初期値は、使用可能なシステム・メモリ + 25ページ + sysmem_maxページ。
sysmem_max 使用可能なデバイス・スワップがあるシステムの初期化時にsys_mem(擬似スワップに使用できないページ数)に追加される(ただし、swapmem_max > 0になる場合のみ)。
maxmem 動的バッファ・キャッシュ用にphys_mem_pagesの初期dbc_min_pctが割り当てられた後、freememの初期値に設定される。maxmem - swapmem_maxは、擬似スワップからスチールされたページをカーネルが返す場合にsys_memの上限として使用される。
freemem 残りの未予約の空きメモリ・ブロック全体のページ数。
freemem_cnt メモリを待機するためにglobal_freemem上で休眠状態にあるスレッドの数(ここでカウントされない別のメモリ待機方法もある)。

スワップ・スペース値


システム・スワップ・スペース値の計算方法は次のとおりです。

  • システム上で使用可能な総スワップ
    • デバイス・スワップとファイル・システム・スワップの場合:swapspc_max
    • 擬似スワップの場合:swapspc_max + swapmem_max
  • 割り当てられるスワップ
    • デバイス・スワップとファイル・システム・スワップの場合:swapspc_max - [sum(swdevt[n].sw_nfpgs) + sum(fswdevt[n].fsw_nfpgs)]
    • 擬似スワップの場合:swapspc_max - [sum(swdevt[n].sw_nfpgs) + sum(fswdevt[n].fsw_nfpgs)] +(swapmem_max - swapmem_cnt)
HP-UXでは、プロセスがスワップ・スペース不足で抹消される原因は、(sbrk()を使用した)データ領域の成長またはスタックの成長のみです。プログラムのテキストでは、スワップは使用されません。

物理スワップ・スペースの予約


スワップの予約は、数値によって行われます。システムの物理スワップ・スペースのページ数には制限があります。HP-UXでは、適切なカウンタを減分することでプロセス用のスペースが予約されます。

UNIXシステムやUNIXに類似したシステムのほとんどでは、必要に応じてスワップが割り当てられます。しかし、スワップ・スペースが使い果たされているにもかかわらずプロセスのページをスワップ・デバイスに書き込む必要がある場合、プロセスを抹消する以外に方法はありません。HP-UXでは、この問題を軽減するために、プロセスがforkまたはexecされる時点でスワップが予約されます。新しいプロセスがforkまたはexecされる際、予約済みの使用可能スワップ・スペースがプロセス全体を処理するには不十分な場合、プロセスが実行されないことがあります。

システム起動時に、swapspc_cntとswapmem_cntは使用可能なスワップ・スペースと擬似スワップの合計に初期化されます。

デバイス・スワップまたはファイル・システム・スワップを追加するためにswapon()が呼び出されると、新たに使用可能になったスワップ量がページ単位に変換され、2つのグローバル・スワップ予約カウンタswapspc_max(使用可能になったスワップ総量)とswapspc_cnt(使用可能なスワップ・スペース)に追加されます。

プロセス用にスワップ・スペースが予約されるたびに(つまり、プロセスの作成または成長時に)、必要なページ数だけswapspc_cntが減分されます。カーネルは、必要になるまでディスク・ブロックを実際には割り当てません。

スワップ・スペースが使い果たされている場合(swapspc_cnt == 0)、スワップ予約が要求されると、ファイル・システム・スワップ・スペースの追加チャンクが割り当てられます。これが成功した場合、swapspc_maxとswapspc_cntの両方が更新され、現在と以降の要求を満たすことができます。ファイル・システム・チャンクを割り当てることができなかった場合、擬似スワップが使用可能でなければ要求は失敗します。

(プロセスの終了または縮小が原因で)スワップ・スペースが不要になると、解放されたページ数だけswapspc_cntが増分されます。swapspc_cntは決してswapspc_maxを上回らず、常にゼロ以上です。ファイル・システム・スワップのチャンクが不要になると、チャンクがファイル・システムに対して再び解除され、swapspc_maxとswapspc_cntが更新されます。

デバイス・スワップ・スペースまたはファイル・システム・スワップ・スペースが使用できない場合、擬似スワップが最後の手段として使用されます。 swapmem_cntが減分され、ページがメモリにロックされます。擬似スワップは解放または割り当てされますが、決して予約されません。

スワップ予約スピンロック


rswap_lockスピンロックは、スワップ予約構造swapspc_cnt、swapspc_max、swapmem_cnt、swapmem_max、sys_mem、およびpswaplistを保護します。

擬似スワップ・スペースの予約


調整パラメータswapmem_onが1に設定されている場合、使用可能なシステム・メモリの約7/8を擬似スワップ・スペースとして使用できます。擬似スワップは、グローバル擬似スワップ予約カウンタswapmem_max(使用可能な擬似スワップ)とswapmem_cnt(現在使用可能な擬似スワップ)で追跡されます。物理スワップ・スペースが使い果たされ、追加のファイル・システム・スワップを取得できない場合、swapmem_cntが減分されてプロセス用の擬似スワップ・スペースが予約されます。

たとえば256MBシステムでは、swapmem_maxとswapmem_cntで約224MBの擬似スワップ・スペースが追跡され、残りのスペースは、システム使用のためのみに予約されたページ数を示すグローバルsys_memで追跡されます。

プロセスは、領域ごとのカウンタr_swapmemを増分することで、プロセスに割り当てられた擬似スワップ・ページの数を追跡します。擬似スワップを使用するすべての領域が、擬似スワップ・リストpswaplist上でリンクされます。デバイス・スワップと擬似スワップの両方が使い果たされると(swapspc_cnt==0かつswapmem_cnt==0になると)、プロセスの作成または成長時の試行が失敗します。

割り当てられた擬似スワップ・スペースがプロセスで必要なくなると、解除されたスペース量だけswapmem_cntが増分され、r_swapmemが更新されます。

擬似スワップ以外の目的で使用できるメモリが擬似スワップで消費されるため(以降の項を参照)、メモリは節約して使用されます。物理メモリ・スワップ・スペースが最近解放されたかどうか、オペレーティング・システムで定期的にチェックされます。最近解放された場合、システムは擬似スワップ領域の二重リンク・リストをウォークして、擬似スワップの使用から、使用可能な物理スワップのみの使用にプロセスを移行しようとします。swapspc_cntがゼロに低下するか、別の領域で擬似スワップが利用されるまで、リスト上の各領域についてswapspc_cntがr_swapmem値だけ減分されます。次にswapmem_cntが、この移行に成功した擬似スワップ量だけ増分されます。

擬似スワップとカーネル・メモリ


擬似スワップは、システム・メモリの使用をめぐってカーネルと競合します。最初に、使用可能メモリの1/8(sys_memページ数)が擬似スワップに使用できないように設定されますが、これで、カーネル動的メモリとバッファ・キャッシュ・スペースの両方の処理に十分なメモリが確保されるとはとてもいえません。カーネルは、これらの目的のために擬似スワップからメモリをスチールし、ページのスチール時にswapmem_cntを減分します。swapmem_cntがゼロに達すると、sys_memがゼロに達するまでsys_memからのページの取得が開始されます。

スチールされた擬似スワップが返されると、解除される量が最初にsys_memに追加されます。sys_memが最大値(maxmem - swapmem_max)に達すると、返された追加ページだけswapmem_cntが増えます。

擬似スワップとロック可能メモリ


擬似スワップはシステム・メモリの使用量と関係があるため、スワップ予約方式にロック可能メモリのポリシーが反映されます。

プロセスがプロセス自体をメモリ内にロックする際、追加メモリが割り当てられるとは限りませんが、ロックされたページを汎用目的で使用できなくなります。そのため、これらのページを考慮してswapmem_cntが減分されます。プロセスがメモリ内にplockでロックされる場合、swapmem_cntもプロセス全体のサイズだけ減分されます。

スワップ・スペースの優先順位


スワップに使用可能なすべてのスワップ・デバイスとファイル・システムに0〜10の優先順位が付けられます。この優先順位は、デバイスまたはファイル・システムからスワップ・スペースが使用される順序を示します。システム管理者は、swapon(1M)コマンドのパラメータを使用してスワップ・スペースの優先順位を指定できます。

スワッピングは、優先順位が同じデバイスとファイルの両方に対して交互に行われますが、デバイスの方がCPU時間をより効率的に利用できるため、オペレーティング・システムによりファイル・システムの前にデバイスがスワップされます。

あるデバイスが他のデバイスよりも大幅に遅い場合を除いて、ほとんどのスワップ・デバイスに同じ優先順位を割り当てることをお勧めします。同じ優先順位を割り当てるとディスク・ヘッドの動きが制限されるため、ページング・パフォーマンスが向上します。

3つのスワップ・スペース割り当て規則


  • 優先順位の値が最低のスワップ・デバイスまたはファイル・システムから開始されます。番号が低いほど、優先順位が高くなります。つまり、優先順位1のシステムの前に優先順位0のシステムからスペースが取得されます。
  • 同じ優先順位のデバイスが複数ある場合、スワップ・スペースはデバイスからラウンドロビン方式で割り当てられます。このため、複数のデバイス間でスワップ要求をインターリーブするために、デバイスに同じ優先順位を割り当てる必要があります。同様に、複数のファイル・システムの優先順位が同じ場合も、ファイル・システム間でスワップ要求がインターリーブされます。次の図では、優先順位0の2つのスワップ・デバイス間で最初にスワップ要求がインターリーブされます。
  • デバイスとファイル・システムのスワップ優先順位が同じ場合、ファイル・スワップ・スペースの前にデバイスからすべてのスワップ・スペースが割り当てられます。このため、優先順位1のファイル・システムからスワップが割り当てられる前に、優先順位1のデバイスが割り当てられます。

図26 スワップ場所の選択
図26 スワップ場所の選択

スワップ・スペース構造


HP-UXでは、次のデータ構造を使用してスワップ・スペースが割り当てられます。

  • 同じ優先順位のスワップ・デバイスのリンクに使用されるデバイス・スワップ優先順位配列(swdev_pri[])。swdev_pri[n]のエントリは、優先順位nのスワップ・デバイス・リストの先頭になる。swdev_pri[]構造の最初のフィールドは、このリストの先頭になる。swdevt[]構造のsw_nextフィールドにより、各デバイスが適切な優先順位リストにリンクされる。
  • ファイル・システム・スワップ優先順位配列(swfs_pri[])。この配列はswdev_pri[]と同じ役割を果たすが、ファイル・システム・スワップ優先順位用。
  • 基本スワップ・デバイス情報の設定に使用されるデバイス・スワップ・テーブル(struct swdevt)。
  • 補足ファイル・システム・スワップ用のファイル・システム・スワップ・テーブル(struct fswdevt)。
  • 使用可能チャンクのスワップ・テーブル(struct swaptab)。スワップ・スペースの使用可能ページを追跡。
  • スワップ・ページのマッピング(struct swapmap)。この構造のエントリとswaptabが組み合わされてスワップ・ディスク・ブロック記述子になる。

次の表は、struct swdevtの要素の詳細です。

表25 デバイス・スワップ・テーブルswdevt[](struct swdevt)

要素 意味
sw_dev メジャー番号(上位8ビット)とマイナー番号(下位24ビット)で定義される実際のスワップ・デバイス。
sw_flags 複数のフラグ。SW_ENABLEフラグは、このデバイス上でスワップが使用可能になっていることを示す。
sw_start ディスク上のスワップ領域へのオフセット(KB単位)。
sw_nblksavail スワップ領域のサイズ(KB単位)。
sw_nblksenabled スワップに使用可能なブロック数。swchunkの倍数でなければならない(デフォルト値は2MB)。
sw_nfpgs デバイス上の空きスワップ・ページ数。ページが使用または解放されるたびに更新される。
sw_priority スワップ・デバイスの優先順位(0〜10)。
sw_head, sw_tail このスワップ・デバイスに関連付けられる最初と最後のswaptab[]エントリの索引。
sw_next この優先順位の次のデバイス・スワップ・エントリ(swdevt)へのポインタ。特定の優先順位のデバイスすべてをラウンドロビン方式で使用するために、swdev_pri内のポインタの更新に使用される循環リストとして実装される。

次の表は、struct fswdevtの要素の詳細です。

表26 ファイル・システム・スワップ・テーブルfswdevt[](struct fswdevt)

要素 意味
fsw_next この優先順位の次のファイル・システム・スワップへのポインタ。循環リストとして実装される。
fsw_flags 複数のフラグ。FSW_ENABLEフラグは、このファイル・システム上でスワップが使用可能になっていることを示す。
fsw_nfpgs このファイル・システム・スワップの空きスワップ・ページ数。ページが使用または解放されるたびに更新される。
fsw_allocated このファイル・システム上でスワップ用に割り当てられたswchunksの数。
fsw_min ファイル・システム・スワップが使用可能になる際に事前に割り当てられる最小swchunks。
fsw_limit ファイル・システム上で許容される最大swchunks。ゼロに設定されている場合、無制限。
fsw_reserve このファイル・SYSTEM上でスワップ以外の用途で予約される最小ブロック(サイズfsw_bsizeの)。
fsw_priority ファイル・システムの優先順位(0〜10)。
fsw_vnode スワップ・ファイルが作成されるファイル・システム・スワップ・ディレクトリ(/paging)のvnode。
fsw_bsize このファイル・システム上で使用されるブロック・サイズ。予約されるスペースfsw_reserveの量の決定に使用される。
fsw_head、fsw_tail このファイル・システム・スワップに関連付けられる最初と最後のエントリのswaptab[]への索引。
fsw_mntpoint ファイル・システム・マウント・ポイント。fsw_vnodeを文字で表したもの。ユーティリティ(swapinfo(1M)など)とエラー・メッセージに使用。

swaptab構造とswapmap構造


2つの構造がスワップ・スペースを追跡します。swaptab[]配列は、スワップ・スペースのチャンクを追跡します。swapmapエントリに、スワップ情報がページごとのレベルで保持されます。デフォルトでは、swaptabが2MBのスペース・チャンクを、swapmapがこの2MBチャンク内の各ページをそれぞれ追跡します。

swaptab[]配列の各エントリには、一意のswapmapへのポインタ(st_swpmp)があります。swapmapエントリには、swaptab索引への逆方向ポインタがあります。swaptabエントリ(デフォルトでは2MBまたは512ページ)で表される各ページについて1つのエントリがswapmapにあります。 つまり、swapmapのサイズはswchunkと一致します。

空きスワップ・ページのリンク・リストはswaptabエントリのst_freeから始まり、空きswapmapエントリのsm_nextそれぞれが使用されます。スワップのページが必要になると、カーネルがこれらの構造をウォークします(vm_swalloc.cのget_swap()ルーチンを使用して)。このルーチンは、実際にはチャンクを配置する他のルーチンなどを呼び出します。

  • まず、最低優先順位から、swdev_pri[].curr(swdevtエントリを指し示す)を調べる。
  • sw_nfpgsがゼロである(空きページがない)場合、ポインタsw_nextに従ってこの優先順位の次のswdevtエントリを取得する。
  • これらに空きページがない場合、swfs_pri[].curr(この優先順位のファイル・システム・スワップ)に移動して、fsw_nfpgsをチェックして空きページがあるかどうかを調べる。
  • これにも失敗した場合、次の優先順位に移って再試行する。
  • 空きページがあるswdevtまたはfswdevtが見つかると、sw_headまたはfsw_headから各swaptabエントリのst_nextをたどりながら、ゼロ以外のst_nfpgsを持つswaptabエントリが見つかるまで、そのデバイスのswaptabリストをウォークする。
  • st_freeが、このswaptab内の最初の空きswapmapエントリ(および最初の空きページ)を指し示す。
  • get_swchunk()ルーチンにより、swaptab索引のdbd_dataの14ビットとswapmap索引の14ビットでディスク・ブロック記述子(dbd)が作成される。この領域内のr_bstoreがディスク・デバイスswapdev_vpに設定され、dbdがDBD_BSTOREとマークされる。

    スワップからのフォールトインが発生すると、ファイル・システムから同じプロセスのフォールトインが続いて発生する。r_bstoreとdbd_dataが一緒にハッシュされ、ソフト・フォールトが発生していないかどうかチェックされ、次にdevswap_pagein()が呼び出される。devswap_pagein()ルーチンは、14ビットswaptab索引と14ビットswapmap索引としてdbd_dataを使用して、ディスク上のページの位置を判定する。
これで、スワップからのページの取得に必要な情報がすべて格納されます。

図27 swaptab構造とswapmap構造
図27 swaptab構造とswapmap構造

表27 スワップ・テーブル・エントリ(struct swaptab)

要素 意味
st_free チャンク内の最初の空きページへの索引。各エントリがスワップの4KBページにマッピング。
st_next 同じデバイス・スワップまたはファイル・スワップの次のswaptabへの索引。リストの最後では、st_nextは-1。
st_flags ST_INDEL:チャンクが削除中であることを示すファイル・システム・スワップ・フラグ。そのチャンクからのページは割り当てられない。swapdel()ルーチンでのみ設定される。
ST_FREE:チャンクのページが使用中でないため、チャンクを削除できることを示すファイル・システム・スワップ・フラグ。リモート・スワップの場合、すぐにチャンクを削除してはならない。このフラグの設定時は、st_free_timeを現在時間プラス30分(1800秒)に設定する必要がある。30分が経過すると、チャンクを解放できる。この期間中にチャンクが必要になった場合は、フラグをクリアできる。
ST_INUSE:swaptabエントリが変更中。
st_dev、st_fsp swdevt[]エントリへのポインタ、またはswaptabエントリを参照するfswdevt[]へのポインタ。
st_vnode デバイスまたはスワップ・ファイルのvnode。
st_nfpgs この(swchunk)swaptabエントリの空きページ数。
st_swpmp スワップ・ページのこのswchunkを定義するswapmap[]配列へのポインタ。
st_free_time リモートfsチャンクを解放できるタイミングを示す(ST_FREEフラグの説明を参照)。

表28 スワップ・マップ・エントリ(struct swapmap)

要素 意味
sm_ucnt ページを使用するスレッドの数。ゼロまで減分されると、スワップ・ページが解放され、空きページ・リンク・リストを更新できる。
sm_next swapmap[]内の次の空きページの索引。sm_ucntがゼロの場合のみ有効。これは、このswapmapエントリが、swaptabのst_freeで始まるリンク・リストに含まれることを意味する。
最初のページへ 前のページへ 次のページへ

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

オンラインサポート
製品の標準保証でご利用いただける無償のサービスです。

ショールーム

ショールーム 導入をご検討のお客様へ
業務アプリケーションの継続・標準化・開発性とシステム担当者様、システム開発者様が抱える悩み・疑問に対する解決策実体験して頂けます。
印刷用画面へ
プライバシー ご利用条件・免責事項