SWAPON(2) | Linux Programmer's Manual | SWAPON(2) |
名前
swapon, swapoff -ファイル/デバイスへのスワップを開始/停止する書式
#include <unistd.h>説明
swapon() は path で指定されたファイルやブロック・デバイスにスワップ領域を設定する。 swapoff() は path で指定されたファイルやブロック・デバイスへのスワップを停止する。swapon() の swapflags 引き数に SWAP_FLAG_PREFER フラグが指定された場合、新しいスワップ領域はデフォルトよりも高い優先度を持つ。優先度は以下のように変換されて swapflags に指定する。
(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK
SWAP_FLAG_DISCARD フラグが swapon() の swapflags 引き数に指定された場合、スワップデバイスが破棄 (discard) 操作や trim 操作をサポートしている場合には、解放されたスワップページは再利用される前に破棄される (これにより、SSD (Solid State Device) によっては性能が向上することがあるが、たいていは性能の向上はない)。「注意」も参照のこと。
これらの関数は特権プロセス ( CAP_SYS_ADMIN ケーパビリティ (capability) を持つプロセス) のみが使用できる。
優先度
それぞれのスワップ領域は高 (high) と低 (low) のどちらかの優先度を持つ。デフォルトの優先度は低である。低い優先度の領域において、新しい領域は古い領域よりさらに低い優先度を持つ。swapflags が設定されたものは全て高い優先度となり、デフォルトよりも高い優先度を持つ。使用者はそれらに負でない値が指定できる。大きな数字は高い優先度を意味する。
高い優先度の領域から順にスワップ・ページとして使用される。より低い優先度の領域を使用する前により高い優先度の領域を使い切る。もし二つ以上の領域が同じ優先度を持ち、使える中で一番高い優先度であれば、それらのページは間でラウンド・ロビン方式で配分される。
Linux 1.3.6 において、カーネルは通常はこれらの規則に従っている。しかし例外も存在している。
返り値
成功した場合は 0 が返される。エラーの場合は-1 が返され、 errno が適切に設定される。エラー
- EBUSY
- ( swapon() において) 指定された path が既にスワップ領域として使用されている。
- EINVAL
- ファイル path は存在するが、通常のファイルもブロック・デバイスも参照していない。または swapon() において、指定された path のファイルが有効なスワップの署名 (signature) を含んでいないか、tmpfs のようなインメモリ (in-memory) のファイルシステム上にある。または swapoff() において、 path が現在のところスワップ領域でない。
- ENFILE
- オープンされたファイルの総数がシステム全体の上限に達していた。
- ENOENT
- ファイル path が存在しない。
- ENOMEM
- スワップを開始するのに十分なメモリーがシステムにない。
- EPERM
- 使用者が CAP_SYS_ADMIN ケーパビリティを持っていない。もしくは、最大数のスワップファイルがすでに使用されている (下記の「注意」の節を参照)。
準拠
これらの関数は Linux 特有であり、移植を意図したプログラムでは使用してはいけない。二番目の swapflags 引き数は Linux 1.3.2 から導入された。注意
パーティションやパスは mkswap(8) によって準備されていなければならない。関連項目
mkswap(8), swapoff(8), swapon(8)この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2010-11-15 | Linux |