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環境のCPU上で10ミリ秒間に起こること
Search
Satoru Takeuchi
PRO
March 20, 2024
Technology
3
110
Linux環境のCPU上で10ミリ秒間に起こること
以下動画のテキストです
https://youtu.be/6dZuOq5P468
Satoru Takeuchi
PRO
March 20, 2024
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
270
俺とキャンプ2
sat
PRO
1
99
俺とキャンプ3
sat
PRO
0
84
データ冗長化のしくみRAID 基礎概念とRAID1編
sat
PRO
2
32
RAIDの実現方法
sat
PRO
2
69
HDDへのアクセス速度は位置によって変わる!??
sat
PRO
4
56
ボリュームマネージャLVM
sat
PRO
2
91
Best Practices of Production-Grade Rook/Ceph Cluster
sat
PRO
1
2k
OSSへの貢献をはじめたきっかけ、貢献で得たもの、やりたい人へのアドバイス(改)
sat
PRO
4
120
Other Decks in Technology
See All in Technology
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
260
Cracking the KubeCon CfP
inductor
2
270
GrafanaMeetup_AmazonManagedGrafanaのアクセス制御機能とマルチテナント環境下でのアクセス制御について
daitak
0
390
ルーターでプレゼンする
puhitaku
1
3.2k
On Your Data を超えていく!
hirotomotaguchi
2
750
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
4
870
Babylon.js JAPAN活動紹介 (2024/4)
limes2018
1
110
JSON攻略法.pdf
miyakemito
8
5.2k
Cloud Service Mesh に触れ合う
phaya72
1
150
Microsoft for Startups Founders Hub_20240429 update
daikikanemitsu
1
2.4k
The AI Revolution Will Not Be Monopolized: Behind the scenes
inesmontani
PRO
1
150
チームでロジカルシンキングに改めて向き合っている話 〜学習環境と実践⽅法〜
sansantech
PRO
3
3.2k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Into the Great Unknown - MozCon
thekraken
14
1k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
How STYLIGHT went responsive
nonsquared
92
4.8k
Designing with Data
zakiwarfel
96
4.8k
The Power of CSS Pseudo Elements
geoffreycrofte
61
5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
21
1.4k
The Mythical Team-Month
searls
216
42k
From Idea to $5000 a Month in 5 Months
shpigford
378
45k
Teambox: Starting and Learning
jrom
128
8.4k
Practical Orchestrator
shlominoach
183
9.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
123
39k
Transcript
Linux環境のCPU上で 10ミリ秒間に起こること Mar. 20th, 2024 Satoru Takeuchi X: satoru_takeuchi 1
はなすこと • Linux環境(Linuxをインストールしたマシン)で10ミリ秒程度の短い期間にCPU上で 何が起きるかを説明 • 📝多くの仮定を置いて話を簡略化している ◦ Linuxをインストールしているのは物理マシン ◦ 1CPU1コア環境
◦ tickless kernelではない ◦ あらゆる処理の所要時間は 1ms単位 ◦ その他いっぱい 2
前提知識: プロセススケジューリング • CPUリソースを使うプロセスが複数存在すると、CPU上で動作するプロセスをカー ネル内のスケジューラが定期的に切り替えている • プロセスが一度に動ける期間をタイムスライスと呼ぶ ◦ タイムスライスの残量はタイマーというハードウェアを使って確認 (後述)
• 例: プロセスp0,p1が動作中でタイムスライスは両方2ms p0 p1 p0 p1 時間 CPU 3 *1マスが1msに対応
前提知識: システムコール • プロセスがシステムコールを発行すると、カーネルに制御が移って処理を開始す る。完了すると再度プロセスが動き出す p0 カーネル p0 syscall発行 syscall完了
時間 CPU 4
前提知識: システムコール • プロセスがシステムコールを発行すると、カーネルに制御が移って処理を開始す る。完了すると再度プロセスが動き出す p0 カーネル p0 syscall発行 syscall完了
時間 CPU 5 1. syscall判別 2. 個々のsyscallの処理 3. スケジューラ: 次に動くプロセスの決定 p0のsyscall処理
前提知識: デバイス操作 • システムコールの延長でデバイスにアクセスすると、デバイスにI/O発行した後にプ ロセスは待ち状態になり、その後は他のプロセスが動作する • 例: p0がread()を発行し、待ちの間はp1が動作し、I/O完了後は再度p0が動く p0 I/O処理
CPU SSD p1 カーネル カーネル read発行 I/O依頼 p0 6 I/O完了 read完了 時間
前提知識: デバイス操作 • システムコールの延長でデバイスにアクセスすると、デバイスにI/O発行した後にプ ロセスは待ち状態になり、その後は他のプロセスが動作する • 例: p0がread()を発行し、待ちの間はp1が動作し、I/O完了後は再度p0が動く p0 I/O処理
CPU SSD p1 カーネル カーネル read発行 I/O依頼 p0 7 I/O完了 read完了 時間 1. Virtual File System(VFS)層: 全fs共通の read処理 2. 個々のfs: read処理 p0のsyscall処理 1. ブロック層: 全ブロックデバイス共通処理 2. デバイスドライバ: I/O発行処理 3. スケジューラ: 次に動くプロセスの決定 I/O発行処理
前提知識: デバイス操作 • システムコールの延長でデバイスにアクセスすると、デバイスにI/O発行した後にプ ロセスは待ち状態になり、その後は他のプロセスが動作する • 例: p0がread()を発行し、待ちの間はp1が動作し、I/O完了後は再度p0が動く p0 I/O処理
CPU SSD p1 カーネル カーネル read発行 I/O依頼 p0 8 I/O完了 read完了 時間 1. I/O完了処理 2. スケジューラ: 次に動かすプロセスの決定 SSDの割り込み処理 1. fs: 完了処理 2. VFS層: 完了処理 p0のsyscall処理
前提知識: タイマー • プロセスのタイムスライスはタイマーというデバイスで確認 ◦ 定期的にCPUに通知して、割り込みハンドラを実行 • 例: p0,p1が存在し、4msに一回タイマーがCPUに通知 p0
時間計測(実際はカーネルが設定したタイマーが切れたときにちょっと動くだけ CPU タイマー カーネル 通知 9 p0 割り込み p1 カーネル 時間 残り3ms… 時間切れ!
前提知識: タイマー • プロセスのタイムスライスはタイマーというデバイスで確認 ◦ 定期的にCPUに通知して、割り込みハンドラを実行 • 例: p0,p1が存在し、4msに一回タイマーがCPUに通知 p0
時間計測(実際はカーネルが設定したタイマーが切れたときにちょっと動くだけ CPU タイマー カーネル 通知 10 p0 残り3ms… p1 カーネル 時間切れ! 時間 1. スケジューラ: 次に動かすプロセスを決定 割り込み タイマー割り込み処理
状況 • 2つのプロセスp0,p1が存在する • 10ミリ秒の間にやること ◦ p0: 計算->read発行->計算 ◦ p1:
計算し続ける • 途中で一回タイマー割り込み発生 11
10msのうちわけはこんなかんじになる 12 p0 I/O処理 CPU SSD カーネル 依頼 通知 タイマー
時間計測 p1 完了 時間 カーネル p0 p0 カーネル 時間切れ! p1 p1 p1 read発行 通知 read完了 1. Virtual File System(VFS)層: 全fs 共通のread処理 2. 個々のfs: read処理 p0のsyscall処理 1. ブロック層: 全ブロックデバイス共通処理 2. デバイスドライバ: I/O発行処理 3. スケジューラ: 次に動くプロセスの決定 I/O発行処理 1. I/O完了処理 2. スケジューラ: 次に動かすプロセスの決定 SSDの割り込み処理 1. fs: 完了処理 2. VFS層: 完了処理 p0のsyscall処理 1. スケジューラ: 次に動かすプロ セスを決定 タイマー割り込み処理
まとめ • Linux環境では10ミリ秒程度の間にCPU上では様々なことが起きている • これでもかなり簡略化していて、実際はさらに複雑 • そのうち別のどこかで紹介するかも 13