swap zone exhausted, increase kern.maxswzone2014年02月01日 13時56分16秒

swap zone exhausted, increase kern.maxswzone が大量に表示されて焦った。

調べてみると、loader.conf に設定できて、32MB がデフォルトでおよそ、7GB のスワップ領域が利用できるらしい。他にも 64MB がデフォルトで 14GB 利用できるとの記述も目にしたので、変わったのかもしれない。

何はともあれ現在利用中のシステムは 8.4-RELEASE。i386 のシステムに 4GB の実メモリが搭載。普段は 2GB のスワップ領域なのだが、tmpfs で大量に使いはじめたので 3GB を追加して、5GB にしておいた。

不思議なのは、この 5GB を使いきる前にこのエラーが表示され始めたこと。焦ってしまい、正確な数字は覚えていないのだが、スワップを 2GB から 3GB ぐらい行った頃にこれが出てきた。上とは計算が合わない。

メーhリングリストの swap zone exhausted, increase kern.maxswzone にて指摘された Kernel hang on 6.x によると、これは スワップ領域は残っているが、スワップを管理するハッシュテーブルが埋まってしまった事に起因するらしい。そして、スワップ領域が無くなった時にプロセスが殺されるのに対して、こちらでは待ち続けるそうだ。

/usr/src/sys/vm/swap_pager.c のこの部分みたいだ。


swap = *pswap = uma_zalloc(swap_zone, M_NOWAIT);
if (swap == NULL) {
    mtx_unlock(&swhash_mtx);
    VM_OBJECT_UNLOCK(object);
    if (uma_zone_exhausted(swap_zone)) {
        printf("swap zone exhausted, increase kern.maxsw
zone\n");
        vm_pageout_oom(VM_OOM_SWAPZ);
        pause("swzonex", 10);
    } else
        VM_WAIT;
    VM_OBJECT_LOCK(object);
    goto retry;
}

急いで必要ないファイルを tmpfs から消したら、通常運転に戻った。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2014/02/01/7209255/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。