Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all
名前
swapon, swapoff - ファイル/デバイスへのスワップを開始/停止する
書式
#include <unistd.h> #include <asm/page.h> /* PAGE_SIZE を見つけるため */ #include <sys/swap.h> int swapon(const char *path, int swapflags); int swapoff(const char *path);
説明
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) によって準備されていなければならない。 使用できるスワップファイルの数には上限があり、その上限は カーネル定数 MAX_SWAPFILES で定義 される。 MAX_SWAPFILES の値は、カーネル 2.4.10 より前では 8、 カーネル 2.4.10 以降では 32 である。 カーネル 2.6.18 以降では、カーネルが CONFIG_MIGRATION オプションを有効にして作成 された場合、 この上限が 2 少ない値 (つまり 30) となる (このカーネルでは、 mbind(2) と migrate_pages(2) のページマイグレーション機能用にスワップテーブルのエントリーが 二つ予約さ れる)。 カーネル 2.6.32 以降では、カーネルが CONFIG_MEMORY_FAILURE オプションを有効にして 作成された場合、 この上限がさらに 1 少ない値となる。 スワップページの破棄は、カーネル 2.6.29 で導入され、その後カーネル 2.6.36 で SWAP_FLAG_DISCARD フラグが指定された場合にだけ実行されるようになったが、 今でも、このフラ グビットが指定されていない場合であっても、 swapon が呼び出された際にスワップ領域全体の破棄 が行われる。
関連項目
mkswap(8), swapoff(8), swapon(8)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。