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
Linuxのプロセススケジューラの負荷分散処理
Search
Satoru Takeuchi
PRO
February 02, 2022
Technology
580
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linuxのプロセススケジューラの負荷分散処理
以下動画のテキストです
https://youtu.be/xSWgqksHT9w
Satoru Takeuchi
PRO
February 02, 2022
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Machine Check Exception
sat
PRO
2
37
バイナリダンプの模様を読む
sat
PRO
0
68
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
54
114-ファイルのshallow_copy.pdf
sat
PRO
2
38
113-Btrfsのスナップショット.pdf
sat
PRO
0
16
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
59
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
2
63
ファイルシステムの整合性を回復するfsck
sat
PRO
1
65
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
5.3k
Other Decks in Technology
See All in Technology
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
1
190
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
1
430
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
250
Control Planeで育てるBtoB SaaSの認証基盤 - SRE NEXT 2026
pokohide
1
2.7k
kaonavi Tech Night#1
kaonavi
0
110
Network Firewallやっていき!
news_it_enj
0
170
CIで使うClaude
iwatatomoya
0
290
Genie Ontologyは銀の弾丸かを考える / Is Genie Ontology a Silver Bullet?
nttcom
0
410
【Claude Code】鹿野さんに聞く 私の推しの並行開発環境 大公開 / claude-code-parallel-2026-07-15
tonkotsuboy_com
12
8.7k
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.4k
公式ドキュメントの歩き方etc
coco_se
1
120
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
430
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
310
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
350
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
280
4 Signs Your Business is Dying
shpigford
187
22k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
GraphQLとの向き合い方2022年版
quramy
50
15k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Making Projects Easy
brettharned
120
6.7k
Crafting Experiences
bethany
1
220
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.4k
Transcript
Linuxのプロセススケジューラの 負荷分散処理 Feb. 2nd, 2022 Satoru Takeuchi <
[email protected]
> 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