ggatec デバイスをスワップに使うとデッドロックを起こす ― 2016年02月04日 13時08分55秒
実験の意味もあって今回 ggatec でインポートしたデバイスを swapon をして、スワップに使っていた。これはかなり危ない。ggatec のプロセスもスワップアウトしてしまうらしく、状況によっては復帰不可能になる。
第一段階の症状として、ggatec がスワップアウトしてしまう事。そうすると、pagein が出来なくなる。ggatec がメモリに戻らないと pagein が出来ないのだが、デバイスにアクセスする ggatec プロセスが、そのデバイス上に。そのような状態なると、swap pager が読み込みを待ち続けるので、以下のようなエラーがコンソールに出される。
swap_pager: indefinite wait buffer: bufobj: 0, blkno: xxxxxxxxxxx, size 4096
この状態になった時に、運良くシェルやログイン等がスワップアウトしていなくて、利用可能な状態であれな、ggatec rescue
にて、ggate デバイスを復帰することが出来ると、何とか回復することが出来る。
しかし、運悪く既に全てのシェルとターミナルがスワップアウトしていると、残念ながら復旧は不可能。スワップをメモリに呼び戻す為に必要なプロセスが、スワップデバイス上にある為に、まさにデッドロック。
手も足も出ない状況でも、nfs サーバとしては機能していた。nfsd にはスワップアウトされない特別な仕掛けがしてあるのかも知れない。
次回。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2016/02/04/8008506/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。