Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プロセスを殺戮する恐怖のOOM killer
Search
Satoru Takeuchi
PRO
September 22, 2022
Technology
1
430
プロセスを殺戮する恐怖のOOM killer
以下動画のテキストです
https://youtu.be/D13PVCaHnk0
Satoru Takeuchi
PRO
September 22, 2022
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
デバイスにアクセスするデバイスファイル
sat
PRO
1
26
ファイルシステムのデータを ブロックデバイスへの操作で変更
sat
PRO
1
18
デバイスドライバ
sat
PRO
0
22
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
66
共有メモリ
sat
PRO
3
55
マルチスレッドプログラム
sat
PRO
3
44
Linuxのブートプロセス initramfs編
sat
PRO
2
54
Linuxのブートプロセス
sat
PRO
6
160
シェルのジョブ
sat
PRO
1
37
Other Decks in Technology
See All in Technology
計装を見直してアプリケーションパフォーマンスを改善させた話
donkomura
2
150
ペアーズにおける評価ドリブンな AI Agent 開発のご紹介
fukubaka0825
9
2.7k
Pythonデータ分析実践試験 出題傾向や学習のポイントとテクニカルハイライト
terapyon
1
160
SaaS公式MCPサーバーをリリースして得た学び
kawamataryo
5
1.4k
自動化の第一歩 -インフラ環境構築の自動化について-
smt7174
1
140
猫でもわかるS3 Tables【Apache Iceberg編】
kentapapa
2
230
使えるデータ基盤を作る技術選定の秘訣 / selecting-the-right-data-technology
pei0804
9
1.5k
Azure & DevSecOps
kkamegawa
2
200
20250514 1Passwordを使い倒す道場 vol.1
east_takumi
0
130
DynamoDB のデータを QuickSight で可視化する際につまづいたこと/stumbling-blocks-when-visualising-dynamodb-with-quicksight
emiki
0
170
クラウドネイティブ環境の脅威モデリング
kyohmizu
2
430
LLM アプリケーションのためのクラウドセキュリティ - CSPM の実装ポイント-
osakatechlab
0
440
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Building Applications with DynamoDB
mza
94
6.4k
Making Projects Easy
brettharned
116
6.2k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.5k
How to Ace a Technical Interview
jacobian
276
23k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Music & Morning Musume
bryan
47
6.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
How GitHub (no longer) Works
holman
314
140k
Transcript
プロセスを殺戮する 恐怖のOOM killer Sep. 22nd, 2022 Satoru Takeuchi twitter: satoru_takeuchi
やること • 前回の動画「Linuxのメモリ管理入門 デモ編」で匂わせた伏線の回収 • システムのメモリ枯渇時に何が起きるのかを確認
おさらい: システムのメモリ使用量のうちわけ total プロセスが使用中 free カーネルが使用中 解放可能 解放不可能 available
おさらい: 空きメモリが減ってくると… total プロセスが使用中 free カーネルが使用中 解放可能 解放不可能 available せまくてつらい
おさらい: カーネルの解放可能メモリを解放 total プロセスが使用中 free カーネルが使用中 解放不可能 available つらくなくなった 解放可能
疑問: 解放可能メモリが無くなるとどうなる? • こういう状態のことを「Out of Memory(OOM)」と呼ぶ total プロセスが使用中 free カーネルが使用中
解放不可能 available もぅマヂ無理。。。
OOM killer出現 • デフォルトではカーネルの「OOM killer」という処理が動き出す • total プロセスが使用中 free カーネルが使用中
解放不可能 available OOM killerです
メモリ枯渇の主因となっているプロセスを推測 total プロセスが使用中 free カーネルが使用中 解放不可能 available プロセスAがたくさんメモリを使っとるな … プロセスAのメモリ
推測したプロセスを強制終了させる total プロセスが使用中 free カーネルが使用中 解放不可能 available 死んで プロセスAのメモリ ウワァァァ!
freeメモリができあがって万事解決 total プロセスが使用中 free カーネルが使用中 解放不可能 available やったね
OOM発生時の挙動変更: 個々のプロセス • /proc/<pid>/oom_score_adj • 値の意味 ◦ -1000から1000の値を設定(デフォルトは0) ◦ 低いほどOOM
killerによる殺害対象になりにくい ◦ -1000だとOOM killerによる殺害対象から外される
OOM発生時の挙動変更: システム全体 • vm.panic_on_oom sysctlパラメタ • 値の意味 ◦ 0: 必ずOOM
killer発動 ◦ 1: 物理メモリが残っている場合は OOM killer。それ以外はカーネルパニック ▪ 例: memory cgroupなどによって特定のプロセス群のメモリ使用量を制限している場合 ◦ 2: 必ずカーネルパニック • OOM killerではなくパニックさせる意味は? ◦ OOM killerによってシステムにとって必須なプロセスが死んだときは運用継続してもしょうがないと きがある ◦ パニック時にカーネルダンプを取得するなどして、 OOMに至った理由を知りたいことがある
まとめ • システムのメモリが枯渇するとOut Of Memoryという状態になる • デフォルトではOOM killerというカーネルの処理が動作する • OOM
killerは「こいつを殺せばメモリ不足解消に一番よさそう」というプロセスを選 んで強制終了させる • OOM状態になったときの挙動は変更できる ◦ 📝 LinuxにおけるOOM発生時の挙動 ◦ https://zenn.dev/satoru_takeuchi/articles/bdbdeceea00a2888c580