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
MSR
August 26, 2017
Technology
0
1.3k
cgroup
fork爆弾爆発中のロードアベレージを見る
※fork爆弾を安易に実行する行為を推奨するものではありません。実行したことによる責任は誰も取りません
MSR
August 26, 2017
Tweet
Share
More Decks by MSR
See All by MSR
horizon
msr_i386
0
1.1k
fujiaire by shell
msr_i386
0
810
colaboratory
msr_i386
0
140
yes command faster
msr_i386
0
320
Amazon Dash Hack
msr_i386
0
1.4k
discover fork-bomb
msr_i386
0
1.8k
kanji banner
msr_i386
0
1.8k
ASCII art oneliner
msr_i386
0
1.9k
QR Code Shell
msr_i386
0
2.2k
Other Decks in Technology
See All in Technology
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.6k
Lexical Analysis
shigashiyama
1
150
ハイパーパラメータチューニングって何をしているの
toridori_dev
0
140
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
dev 補講: プロダクトセキュリティ / Product security overview
wa6sn
1
2.3k
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
100
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
The Rise of LLMOps
asei
7
1.4k
Featured
See All Featured
The Invisible Side of Design
smashingmag
298
50k
A better future with KSS
kneath
238
17k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Side Projects
sachag
452
42k
For a Future-Friendly Web
brad_frost
175
9.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Done Done
chrislema
181
16k
Why Our Code Smells
bkeepers
PRO
334
57k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
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