Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Linux環境のCPU上で10ミリ秒間に起こること
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Satoru Takeuchi
PRO
March 20, 2024
Technology
390
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linux環境のCPU上で10ミリ秒間に起こること
以下動画のテキストです
https://youtu.be/6dZuOq5P468
Satoru Takeuchi
PRO
March 20, 2024
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
67
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
92
あなたの知らないバージョン命名規則
sat
PRO
3
890
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
66
バイナリダンプの模様を読む
sat
PRO
0
89
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
87
114-ファイルのshallow_copy.pdf
sat
PRO
2
57
113-Btrfsのスナップショット.pdf
sat
PRO
0
40
Other Decks in Technology
See All in Technology
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
250
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
690
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
140
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
150
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
120
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
3
2.1k
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
260
クロスボーダーM&AのValue Upを支えるプロダクト開発。日米チームのハブになったプロダクトエンジニアの実践 / Product Engineering Conference 2026
genda
0
120
Tab5をRubyで動くパソコンにする
kishima
2
350
Gitは怖い?共有ワークスペースから始めるSnowflakeチーム開発
coco_se
0
180
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
150
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
740
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.5k
How STYLIGHT went responsive
nonsquared
100
6.3k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
Automating Front-end Workflow
addyosmani
1369
210k
The Curse of the Amulet
leimatthew05
2
14k
How GitHub (no longer) Works
holman
316
150k
Exploring anti-patterns in Rails
aemeredith
3
500
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Designing Experiences People Love
moore
143
24k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
930
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
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