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
cgroup
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
MSR
August 26, 2017
Technology
0
1.5k
cgroup
fork爆弾爆発中のロードアベレージを見る
※fork爆弾を安易に実行する行為を推奨するものではありません。実行したことによる責任は誰も取りません
MSR
August 26, 2017
Tweet
Share
More Decks by MSR
See All by MSR
horizon
msr_i386
0
1.4k
fujiaire by shell
msr_i386
0
1.1k
colaboratory
msr_i386
0
180
yes command faster
msr_i386
0
430
Amazon Dash Hack
msr_i386
0
1.4k
discover fork-bomb
msr_i386
0
2k
kanji banner
msr_i386
0
1.9k
ASCII art oneliner
msr_i386
0
2.1k
QR Code Shell
msr_i386
0
2.4k
Other Decks in Technology
See All in Technology
AI時代の「本当の」ハイブリッドクラウド — エージェントが実現した、あの頃の夢
ebibibi
0
150
プラットフォームエンジニアリングはAI時代の開発者をどう救うのか
jacopen
7
3.8k
Tebiki Engineering Team Deck
tebiki
0
27k
今のWordPress の制作手法ってなにがあんねん?(改) / What’s the Deal with WordPress Development These Days?
tbshiki
0
500
20260311 ビジネスSWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
350
A Casual Introduction to RISC-V
omasanori
0
360
OCHaCafe S11 #2 コンテナ時代の次の一手:Wasm 最前線
oracle4engineer
PRO
2
150
脳内メモリ、思ったより揮発性だった
koutorino
0
380
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/12 - 2026/2
oracle4engineer
PRO
0
170
めちゃくちゃ開発するQAエンジニアになって感じたメリットとこれからの課題感
ryuhei0000yamamoto
0
130
AWSの資格って役に立つの?
tk3fftk
2
360
AI実装による「レビューボトルネック」を解消する仕様駆動開発(SDD)/ ai-sdd-review-bottleneck
rakus_dev
0
160
Featured
See All Featured
Scaling GitHub
holman
464
140k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
400
Claude Code のすすめ
schroneko
67
220k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
310
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Rails Girls Zürich Keynote
gr2m
96
14k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
100
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
220
Google's AI Overviews - The New Search
badams
0
930
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
74
Transcript
FORK爆弾爆発中の ロードアベレージを ⾒る @第30回シェル芸勉強会 ⼤阪サテライト (2017/08/26) 1 msr-i386 /
slide_20170826_cgroup
⽬次 前回の復習、今回の⽬標 fork爆弾爆発中のロードアベレージの取り⽅を考え る デモ まとめ 2 msr-i386 /
slide_20170826_cgroup
⾃⼰紹介 ハンドルネーム: MSR Webブラウザ の作者 Twitter ID: @msr386 Tungsten 3
msr-i386 / slide_20170826_cgroup
前回の復習 fork爆弾実⾏時のロードアベレージ取得に成功した ※SysRqキーでカーネルパニックを起こし、クラッシュ ダンプを解析 ⾼ロードアベレージを記録するには1時間回せば⼗ 分 24時間回しただけ無駄だった 4 msr-i386
/ slide_20170826_cgroup
今回の⽬標 fork爆弾爆発中のロードアベレージをリアルタイムで⾒ たい 5 msr-i386 / slide_20170826_cgroup
ロードアベレージを⾒る⽅法 uptime / w top カーネルダンプの解析 6 msr-i386 /
slide_20170826_cgroup
UPTIME 実⾏時点の稼働時間、ロードアベレージを表⽰ W uptimeの結果+ログインユーザー⼀覧を表⽰ 7 msr-i386 / slide_20170826_cgroup
TOP ロードアベレージだけでなくプロセス⼀覧、CPU使⽤ 率、メモリ使⽤率を⼀定間隔で更新して表⽰ ⼀⾔で⾔えば「多機能だが重い」 カーネルダンプの解析 ダンプした時点のuptime情報も同時に記録されている 何度もダンプできないので、リアルタイム計測は不可能 8 msr-i386
/ slide_20170826_cgroup
FORK爆弾実⾏中にリアルタイムでロード アベレージを⾒る⼤きな壁 CPU / メモリ リソースはfork爆弾によるプロセス⽣成 ですぐに枯渇するから プロセスの起動もままならないのでuptimeやwは 使⽤不能 topでも割り当てられるCPUリソースがなくなるので
応答停⽌ 9 msr-i386 / slide_20170826_cgroup
⼤きな壁を越える⼿段:CGROUP 10 msr-i386 / slide_20170826_cgroup
CGROUP Linuxカーネルに搭載されている強⼒なリソース制御 機能 ※CPUリソースは、優先度設定で使われるnice値と は⽐べものにならないほど強⼒ Linuxカーネル 2.6.24から標準搭載 リソース制限の対象: CPU、メモリ、ディスクI/O、ネッ トワーク・・・
コンテナ仮想化で重要な機能 11 msr-i386 / slide_20170826_cgroup
できることの⼀例 特定のユーザーのリソースの制限 特定ユーザーの特定プロセスに対するリソースの制 限 →fork爆弾が発⽣しても制限が可能になる 12 msr-i386 / slide_20170826_cgroup
CGROUP設定⽅針 fork爆弾でCPUリソースを埋め尽くさないよう、1コア だけ使⽤しないようにする ※CPU使⽤率で制御するより単純︕ fork爆弾でメモリを埋め尽くさないよう、メモリ上限を 設定する 13 msr-i386 /
slide_20170826_cgroup
デモ環境 CPU: 4コア (VM) メモリ: 16GB OS: CentOS 7 14
msr-i386 / slide_20170826_cgroup
インストール ※⾃動起動を有効にする場合は以下を実⾏ # yum install libcgroup # yum install libcgroup-tools
# systemctl enable cgconfig # systemctl enable cgred 15 msr-i386 / slide_20170826_cgroup
設定例 /etc/cgconfig.conf /etc/cgrules.conf group forkbomb { cpuset { # 使⽤するCPUコアの指定
cpuset.cpus = "0-2"; # 使⽤するメモリノードの指定(NUMAでなければ0でよい。必須) cpuset.mems = "0"; } memory { # 上限1GB memory.limit_in_bytes = 1073741824; } } root:bash cpuset,memory /forkbomb 16 msr-i386 / slide_20170826_cgroup
設定の反映 対象プロセスの確認 # systemctl restart cgconfig # systemctl restart cgred
$ cat /sys/fs/cgroup/cpuset/forkbomb/tasks 17 msr-i386 / slide_20170826_cgroup
<デモンストレーション> 18 msr-i386 / slide_20170826_cgroup
設定上の注意 cgconfig.confによる設定はCentOS7では⾮推奨とさ れている fork爆弾実⾏時のシェルと、ログインで使⽤するシェ ルは別にしなければならない メモリ制限に引っかかりcgroupがシェルを強制終了 させるから (デモではcgroup制御対象はbash、ログインシェルは zsh) 19
msr-i386 / slide_20170826_cgroup
まとめ CPUやメモリを⾷い尽くすfork爆弾の制御はcgroup で! 20 msr-i386 / slide_20170826_cgroup
参考 「Red Hat Enterprise Linux 7 リソース管理ガイド」 「cgroupsを利⽤したリソースコントロール⼊⾨ — |
サイ https://access.redhat.com/documentation/ja- JP/Red_Hat_Enterprise_Linux/7/pdf/Resource_Mana 7-Resource_Management_Guide-ja-JP.pdf https://oss.sios.com/yorozu-blog/cgroups-20150708 21 msr-i386 / slide_20170826_cgroup