Slide 1

Slide 1 text

絶対殺すSIGKILLシグナルと 絶対死なないプロセス Feb. 8th, 2025 Satoru Takeuchi X: satoru_takeuchi 1

Slide 2

Slide 2 text

SIGKILLシグナル ● シグナルの一つ ○ 📝 過去動画: 「その88 シグナル」 ● 特徴 ○ デフォルト動作はプロセスの終了 ○ マスクもできない ○ シグナルハンドラを設定できない ○ プロセスを絶対殺すという強い意志 ● 詳細は”man 7 signal”を参照 2

Slide 3

Slide 3 text

プロセスのD state ● Linuxにおけるプロセスの状態の一つ ○ R: 実行可能 or 実行中 ○ S: イベント待ち状態 ■ シグナル受信によって待ちが解除される ■ e.g. キーボード入力待ち ○ D: イベント待ち状態 ■ シグナルを受信しても他の状態になるまで処理しない ■ e.g. I/O待ち ● 詳細は”man 1 ps”を参照 3

Slide 4

Slide 4 text

D stateになったプロセスにSIGKILLを送ると…? 4 VS 絶対殺す SIGKILL 絶対死なない プロセス

Slide 5

Slide 5 text

D stateになったプロセスの勝ち 5 VS 絶対殺す SIGKILL 絶対死なない プロセス くにへかえるんだな。 おまえにもかぞくがいるだろう …

Slide 6

Slide 6 text

D stateのプロセスにはSIGKILLを送っても死なない ● カーネルレベルの話なのでユーザ空間からはどうにもならない ● よくある例 ○ ハードウェア障害でI/O処理が進まない ○ なんらかのカーネルバグ ● 対処方法も色々 ○ あきらめる ○ 再起動する ○ 📝 PFN の Kubernetes クラスタにおける Uninterruptible Sleep との付き合い方 ■ https://tech.preferred.jp/ja/blog/uninterruptible-sleep-in-k8s/ 6

Slide 7

Slide 7 text

まとめ ● SIGKILLよりもD stateのほうが強い 7