Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
誤解されがちなsleepコマンドの挙動
Search
Satoru Takeuchi
PRO
July 11, 2020
Technology
0
120
誤解されがちなsleepコマンドの挙動
以下動画のテキストです。
https://youtu.be/kF1VicngujU
Satoru Takeuchi
PRO
July 11, 2020
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
eBPF
sat
PRO
1
88
waruiBPF
sat
PRO
0
80
eBPFとwaruiBPF
sat
PRO
4
2.5k
Pythonのコードの気になる行でスタックトレースを出す
sat
PRO
0
86
ソースコードを読むときの思考プロセスの例 ~markdownのレンダリング方法を知りたかった2 markdownパッケージ~
sat
PRO
0
170
様々なファイルシステム
sat
PRO
0
310
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
400
ソースを読むプロセスの例
sat
PRO
22
17k
メモリマップトファイル
sat
PRO
1
160
Other Decks in Technology
See All in Technology
AWS Trainium3 をちょっと身近に感じたい
bigmuramura
1
130
20251209_WAKECareer_生成AIを活用した設計・開発プロセス
syobochim
5
1.4k
計算機科学をRubyと歩む 〜DFA型正規表現エンジンをつくる~
ydah
3
210
文字列の並び順 / Unicode Collation
tmtms
3
440
AIと二人三脚で育てた、個人開発アプリグロース術
zozotech
PRO
1
700
エンジニアとPMのドメイン知識の溝をなくす、 AIネイティブな開発プロセス
applism118
4
1.1k
最近のLinux普段づかいWaylandデスクトップ元年
penguin2716
1
680
新 Security HubがついにGA!仕組みや料金を深堀り #AWSreInvent #regrowth / AWS Security Hub Advanced GA
masahirokawahara
1
1.6k
[CMU-DB-2025FALL] Apache Fluss - A Streaming Storage for Real-Time Lakehouse
jark
0
110
30分であなたをOmniのファンにしてみせます~分析画面のクリック操作をそのままコード化できるAI-ReadyなBIツール~
sagara
0
100
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
330
LLM-Readyなデータ基盤を高速に構築するためのアジャイルデータモデリングの実例
kashira
0
220
Featured
See All Featured
Docker and Python
trallard
47
3.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
It's Worth the Effort
3n
187
29k
RailsConf 2023
tenderlove
30
1.3k
Practical Orchestrator
shlominoach
190
11k
Designing for Performance
lara
610
69k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
720
Building Flexible Design Systems
yeseniaperezcruz
330
39k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.3k
How GitHub (no longer) Works
holman
316
140k
Automating Front-end Workflow
addyosmani
1371
200k
A Tale of Four Properties
chriscoyier
162
23k
Transcript
誤解されがちな Sleepコマンドの挙動 Jul 11th, 2020 Satoru Takeuchi Twitter: satoru_takeuchi 1
もくじ • sleepコマンドに持たれがちなイメージ • Linuxのプロセススケジューリング • Sleepコマンドの実際 • まとめ 2
もくじ • sleepコマンドに持たれがちなイメージ • Linuxのプロセススケジューリング • Sleepコマンドの実際 • まとめ 3
sleepコマンドに持たれがちなイメージ • ちょうど引数で指定された秒数後に終了する • コマンドの仕様 ◦ Ubuntu 18.04の”Man sleep”より抜粋 Pause
for NUMBER seconds. 4
もくじ • sleepコマンドに持たれがちなイメージ • Linuxのプロセススケジューリング • Sleepコマンドの実際 • まとめ 5
Linuxのプロセススケジューリング • CPU上で複数実行可能プロセスnがいれば所定の時間づつ実行させる CPU上で動作 するプロセス n=1 n=2 n=3 同上 同上
P0 P0 P1 P0 P0 P1 P2 P0 P1 6 時間 * 本当はもうちょっと複雑です
“Sleep 1”コマンドがいる場合 7 CPU上で動作 するプロセス n=1 P0 P0 idle n>=2
P0 1秒 同上 P0以外 P0 または P0 P0以外 P0 P0以外 時間 nが大きいほど延びる 同上 実行開始 実行開始 実行開始 終了 終了 終了 nanosleep()システムコール(後述)呼び出し
もくじ • sleepコマンドに持たれがちなイメージ • Linuxのプロセススケジューリング • Sleepコマンドの実際 • まとめ 8
sleepコマンドの実際 • 少なくとも引数で指定された秒数待つ • sleepコマンドは内部的にnanosleep()システムコールを呼び出している ◦ 仕様をUbuntu 18.04の”Man nanosleep”より確認 •
× コマンド実行0.5秒後に終了 • 〇 コマンド実行2秒後に終了 nanosleep() suspends the execution of the calling thread until either at least the time specified in *req has elapsed, ... 9
実験 • 確認したいこと ◦ Sleepが指定された秒数よりもはるかに遅く終了しうること • やること 1. あるCPU上で大量に無限ループプログラムを実行 ▪
for ((i=0;i<1000;i++)) ; do taskset -c 0 ./sleep 1 & done 2. 同じCPU上でsleepプログラムを実行して経過時間を確認 ▪ Time taskset -c 0 sleep 1 10
もくじ • sleepコマンドに持たれがちなイメージ • Linuxのプロセススケジューリング • Sleepコマンドの実際 • まとめ 11
まとめ • Sleepコマンドは少なくとも引数で指定した秒数後に終了する • システムの負荷が高いときなどに終了までの時間が延びがち • システム内のすべてのスリープ処理に同じことがいえる • ちょうど指定した秒数後に終了するという前提を置くべきではない 12