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.4k
cgroup
fork爆弾爆発中のロードアベレージを見る
※fork爆弾を安易に実行する行為を推奨するものではありません。実行したことによる責任は誰も取りません
MSR
August 26, 2017
Tweet
Share
More Decks by MSR
See All by MSR
horizon
msr_i386
0
1.3k
fujiaire by shell
msr_i386
0
1k
colaboratory
msr_i386
0
160
yes command faster
msr_i386
0
390
Amazon Dash Hack
msr_i386
0
1.4k
discover fork-bomb
msr_i386
0
1.9k
kanji banner
msr_i386
0
1.9k
ASCII art oneliner
msr_i386
0
2k
QR Code Shell
msr_i386
0
2.3k
Other Decks in Technology
See All in Technology
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
180
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
「Linux」という言葉が指すもの
sat
PRO
4
130
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
240
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.2k
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
4
570
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
450
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
250
TS-S205_昨年対比2倍以上の機能追加を実現するデータ基盤プロジェクトでのAI活用について
kaz3284
1
160
【初心者向け】ローカルLLMの色々な動かし方まとめ
aratako
7
3.5k
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
380
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
170
Featured
See All Featured
Code Review Best Practice
trishagee
70
19k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
13k
Building Applications with DynamoDB
mza
96
6.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Visualization
eitanlees
148
16k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
RailsConf 2023
tenderlove
30
1.2k
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