Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Linuxのプロセススケジューラの負荷分散処理
Satoru Takeuchi
PRO
February 02, 2022
Technology
0
49
Linuxのプロセススケジューラの負荷分散処理
以下動画のテキストです
https://youtu.be/xSWgqksHT9w
Satoru Takeuchi
PRO
February 02, 2022
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
KubeCon EU 2022 Ceph Intro & Rook Deep Dive
sat
PRO
0
8
YAMLを書くだけで構築できる分散ストレージ
sat
PRO
0
190
実践オブザーバビリティ
sat
PRO
2
520
Linuxのプロセススケジューラの歴史 v0.01~v2.4.x
sat
PRO
0
53
Linuxのプロセススケジューラの歴史 v2.6.0~v2.6.22
sat
PRO
0
30
Linuxのプロセススケジューラの歴史 v2.6.23~v4.18
sat
PRO
0
55
aslr.pdf
sat
PRO
0
18
わたしの愛する本たち
sat
PRO
1
300
実行ファイル
sat
PRO
0
34
Other Decks in Technology
See All in Technology
アルプの 認証/認可分離戦略と手法
ma2k8
PRO
2
320
Adopting Kafka for the #1 job site in the world
ymyzk
1
550
Embedded SRE at Mercari
tcnksm
0
850
1年間のポストモーテム運用とそこから生まれたツール sre-advisor / SRE NEXT 2022
fujiwara3
6
3.4k
Learning from AWS Customer Security Incidents [2022]
ramimac
0
1.2k
ソフトウェアテストで参考にしている67のモノ #scrumniigata / 67 things for software testing
kyonmm
PRO
1
500
ニフティでSRE推進活動を始めて取り組んできたこと
niftycorp
2
510
Whats new in Android Media?
myolwin00
2
110
SRE_チーム立ち上げから1年_気づいたら_SRE_っぽくない仕事まで貢献しちゃってる説
bitkey
PRO
0
2.3k
LINEスタンプの実例紹介 小さく始める障害検知・対応・振り返りの 改善プラクティス
line_developers
PRO
3
1.7k
Unity Package Managerで自作パッケージを配布する方法
yunoda
0
200
Poolにおける足を止めないシステム基盤構築
winebarrel
3
920
Featured
See All Featured
Robots, Beer and Maslow
schacon
152
7.1k
It's Worth the Effort
3n
172
25k
Creatively Recalculating Your Daily Design Routine
revolveconf
206
10k
Gamification - CAS2011
davidbonilla
75
3.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
3
440
The Cult of Friendly URLs
andyhume
68
4.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
350
21k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
Fantastic passwords and where to find them - at NoRuKo
philnash
25
1.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
103
16k
Art, The Web, and Tiny UX
lynnandtonic
280
17k
Code Reviewing Like a Champion
maltzj
506
37k
Transcript
Linuxのプロセススケジューラの 負荷分散処理 Feb. 2nd, 2022 Satoru Takeuchi <satoru.takeuchi@gmail.com> Twitter: @satoru_takeuchi
1
CPU上タスクのスケジューリング • 実行可能タスク(プロセスorスレッド)をランキューにつなぐ • ランキュー内のタスクを順番に実行 2 CPU t0 t1 T0,
t1, t0, t1…と順番に実行
複数LCPU(*1)の場合 • ランキューはLCPUごとにある 3 LCPU0 LCPU1 t0 t1 ランキュー長=2 ランキュー長=2
t2 t3 *) LinuxがCPUと認識するもの CPU、コア、ハードウェアスレッドなど
マルチスレッドのCPU • IntelのNetBurstアーキテクチャ(2000年~)の石など • 例: 1物理CPU, 2スレッド => 2LCPU 4
物理CPU スレッド LCPU0 スレッド LCPU1
マルチコアのCPU • IntelのCoreマイクロアーキテクチャ(2006年~)の石など • 例: 1物理CPU, 2コア => 2LCPU 5
コア LCPU1 物理CPU コア LCPU0
マルチプロセッサ • 2物理CPU, 1コア、1スレッド => 2LCPU 6 LCPU0 物理CPU LCPU1
物理CPU
複数ランキューの課題 • ランキュー長が偏ることがある 7 LCPU0 LCPU1 ランキュー長=4 死にそう ランキュー長=0 ヒマだが?
負荷分散処理 • ランキュー長をだいたい同じにする 8 LCPU0 LCPU1 ランキュー長=2 ランキュー長=2 移動 ありがとう
しょうがねえなあ
負荷分散処理の課題 • マルチコア&マルチスレッドの場合どうなる? • 例: 1物理CPU, 2コア, 2スレッド => 4LCPU
1. Intelの石だとNehalemマイクロアーキテクチャ (2008年~)の石などが該当 • 2プロセスあった場合… 1. 〇: LCPU0とLCPU2に配置 2. ×: LCPU0とLCPU1に配置 ▪ 1つのコアが遊んでいる 9 コア 物理CPU コア スレッド LCPU0 スレッド LCPU1 スレッド LCPU2 スレッド LCPU3
階層を考慮した負荷分散処理 • ハードウェア構成を考慮して複数段階に分けて負荷分散する • 例: 1物理CPU, 2コア, 2スレッド => 4LCPU
• 負荷分散 ◦ コア間 ◦ コア内のスレッド間 • 2プロセスの場合、2つのコアにまたがる 10 コア 物理CPU コア スレッド LCPU0 スレッド LCPU1 スレッド LCPU2 スレッド LCPU3
• AMDのZenアーキテクチャのCPU • 「CCX」というL3キャッシュを共有するコアをまとめた部品がある • 例) Ryzen 1800X: 1物理CPU, 2CCX(*1),
4コア, 2スレッド => 16LCPU • 負荷分散 1. CCX間 2. CCX内コア間 3. コア内スレッド間 CCX もうちょっと複雑なCPU 11 CCX コア スレッド スレッド CCX コア コア コア 物理CPU
階層構造の確認方法 • /proc/schedstatに書いている • Ryzen1800Xの場合 12 # cat /proc/schedstat …
Cpu0 ... domain0 0003 ... domain1 00ff ... domain2 ffff ... ... cpu2 ... domain0 000c ... domain1 00ff ... domain2 ffff … … # コア内スレッド間のバランス CCX内コア間のバランス 物理CPU内CCX間のバランス
おまけ: スーパー複雑なCPU • Zenアーキテクチャのサーバ用CPU、AMD EPYC7601 • 「ダイ」というCCXを複数搭載した部品がある • 最大構成 1.
2物理CPU, 4ダイ, 2CCX, 4コア, 2スレッド => 128LCPU • 負荷分散 1. CPU間のバランス 2. CPU内ダイ間 3. ダイ内CCX間 4. CCX内コア間 5. コア内スレッド間 13 物理CPU 物理CPU ダイ ダイ ダイ ダイ CCX CCX コア コア コア コア スレッド スレッド
まとめ • スケジューラの進化は石の進化に伴う 1. 負荷分散処理の誕生 2. 多段構造の負荷分散処理の誕生 3. 階層構造の細分化 •
Zenアーキテクチャややこしい • 新しい世代の石はもうちょっと扱いやすいらしいがよく知らない 14