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
0
500
Linuxのプロセススケジューラの負荷分散処理
以下動画のテキストです
https://youtu.be/xSWgqksHT9w
Satoru Takeuchi
PRO
February 02, 2022
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Rook: Intro and Deep Dive With Ceph
sat
PRO
1
110
会社員しながら本を書いてきた知見の共有
sat
PRO
3
790
デバイスにアクセスするデバイスファイル
sat
PRO
1
38
ファイルシステムのデータを ブロックデバイスへの操作で変更
sat
PRO
1
32
デバイスドライバ
sat
PRO
0
49
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
120
共有メモリ
sat
PRO
3
71
マルチスレッドプログラム
sat
PRO
3
59
Linuxのブートプロセス initramfs編
sat
PRO
2
89
Other Decks in Technology
See All in Technology
ゼロからはじめる採用広報
yutadayo
3
990
データ基盤からデータベースまで?広がるユースケースのDatabricksについて教えるよ!
akuwano
3
140
事例で学ぶ!B2B SaaSにおけるSREの実践例/SRE for B2B SaaS: A Real-World Case Study
bitkey
1
160
MobileActOsaka_250704.pdf
akaitadaaki
0
170
Enhancing SaaS Product Reliability and Release Velocity through Optimized Testing Approach
ropqa
1
240
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
SREの次のキャリアの道しるべ 〜SREがマネジメントレイヤーに挑戦して、 気づいたこととTips〜
coconala_engineer
1
150
Operating Operator
shhnjk
1
620
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
6
4k
freeeのアクセシビリティの現在地 / freee's Current Position on Accessibility
ymrl
2
240
Contributing to Rails? Start with the Gems You Already Use
yahonda
2
110
VGGT: Visual Geometry Grounded Transformer
peisuke
1
200
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
How to Ace a Technical Interview
jacobian
278
23k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
A Tale of Four Properties
chriscoyier
160
23k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Docker and Python
trallard
44
3.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Building Applications with DynamoDB
mza
95
6.5k
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