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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoru Takeuchi
PRO
March 20, 2024
Technology
3
360
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
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
3.3k
ファイルシステムの不整合
sat
PRO
2
120
書籍執筆での生成AIの活用
sat
PRO
2
410
ChatGPTに従って体調管理2026
sat
PRO
0
160
eBPF
sat
PRO
1
130
waruiBPF
sat
PRO
0
120
eBPFとwaruiBPF
sat
PRO
5
4.1k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
1
110
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
220
Other Decks in Technology
See All in Technology
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
9
1.6k
OpenClawで回す組織運営
jacopen
3
690
生成AIの利用とセキュリティ /gen-ai-and-security
mizutani
1
1.6k
情シスのための生成AI実践ガイド2026 / Generative AI Practical Guide for Business Technology 2026
glidenote
0
190
楽しく学ぼう!コミュニティ入門 AWSと人が つむいできたストーリー
hiroramos4
PRO
1
190
白金鉱業Meetup_Vol.22_Orbital Senseを支える衛星画像のマルチモーダルエンベディングと地理空間のあいまい検索技術
brainpadpr
2
290
僕、S3 シンプルって名前だけど全然シンプルじゃありません よろしくお願いします
yama3133
1
190
事例に見るスマートファクトリーへの道筋〜工場データをAI Readyにする実践ステップ〜
hamadakoji
1
290
(Test) ai-meetup slide creation
oikon48
1
230
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.8k
DevOpsエージェントで実現する!! AWS Well-Architected(W-A) を実現するシステム設計 / 20260307 Masaki Okuda
shift_evolve
PRO
3
540
S3はフラットである –AWS公式SDKにも存在した、 署名付きURLにおけるパストラバーサル脆弱性– / JAWS DAYS 2026
flatt_security
0
1.7k
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
230
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
150
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
210
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
140
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
53k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
350
Discover your Explorer Soul
emna__ayadi
2
1.1k
For a Future-Friendly Web
brad_frost
183
10k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Designing Experiences People Love
moore
143
24k
Designing for Performance
lara
611
70k
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