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
340
プロセスを殺戮する恐怖のOOM killer
以下動画のテキストです
https://youtu.be/D13PVCaHnk0
Satoru Takeuchi
PRO
September 22, 2022
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Linuxの時間を10秒止める
sat
PRO
2
58
プロセスへのメモリ割り当て4 - 実際に使うときにメモリを獲得するデマンドページング(実践編)
sat
PRO
1
24
プロセスへのメモリ割り当て(3) 実際に使うときにメモリを獲得するデマンドページング
sat
PRO
1
29
プロセスへのメモリ割り当て(1) mmap
sat
PRO
2
45
プロセスへのメモリ割り当て2-Pythonのようなナウい言語ではどうやってメモリ獲得するのか
sat
PRO
1
38
サイボウズのOSPO
sat
PRO
3
230
無いはずのパーティションがある Phantom Atari Partition
sat
PRO
1
43
仮想アドレスから物理アドレスにはどうやって変換するの?
sat
PRO
2
79
仮想アドレスと物理アドレスの対応を実機確認してみよう
sat
PRO
0
58
Other Decks in Technology
See All in Technology
成長期に歩みを止めないための創業期の開発文化形成
mayah
6
420
データベース研修 分析向けSQL入門【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
110
コンテナ・K8s研修 - 前半 コンテナ基礎・ハンズオン【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
170
地理情報とAPIのトレンド
nagix
0
160
Github Actions 로 Android 팀의 효율성 극대화
hadonghyun
0
160
Luupの開発組織におけるインシデントマネジメントの変遷 ver.RoadtoSRENEXT2024
grimoh
1
270
Azure Pipelinesを使用したCICDベースラインアーキテクチャ実践
yuriemori
0
190
公共領域から学ぶ クラウド移行についてエンジニアが意識していること
kawakawa2222
0
140
エンジニアの生存戦略 〜クラウド潮流の経験から紐解く技術トレンドのメカニズムと乗りこなし方〜
shimy
9
1.9k
技術負債による事業の失敗はなぜ起こるのか / Why do business failures due to technical debt occur?
i35_267
0
190
テスト・設計研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
170
さらに高品質・高速化を目指すAI時代のテスト設計支援と、めざす先 / AI Test Lab vol.1
shift_evolve
0
190
Featured
See All Featured
Building Your Own Lightsaber
phodgson
101
5.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
224
21k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
Large-scale JavaScript Application Architecture
addyosmani
506
110k
How GitHub (no longer) Works
holman
305
140k
The Language of Interfaces
destraynor
151
23k
Fashionably flexible responsive web design (full day workshop)
malarkey
399
65k
The Power of CSS Pseudo Elements
geoffreycrofte
64
5.2k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
17
1.5k
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
Teambox: Starting and Learning
jrom
130
8.6k
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