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
誤解されがちなsleepコマンドの挙動
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Satoru Takeuchi
PRO
July 11, 2020
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
誤解されがちなsleepコマンドの挙動
以下動画のテキストです。
https://youtu.be/kF1VicngujU
Satoru Takeuchi
PRO
July 11, 2020
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
Machine Check Exception
sat
PRO
2
37
バイナリダンプの模様を読む
sat
PRO
0
68
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
54
114-ファイルのshallow_copy.pdf
sat
PRO
2
38
113-Btrfsのスナップショット.pdf
sat
PRO
0
16
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
59
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
2
63
ファイルシステムの整合性を回復するfsck
sat
PRO
1
65
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
5.3k
Other Decks in Technology
See All in Technology
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
1k
実践!既存 Project への AI-Driven Development 適用〜 一ヶ月で Project 唯一のフロントエンドエンジニアを作り出せ〜
lycorptech_jp
PRO
0
250
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
280
しくみを学んで使いこなそう GitHub Copilot app
torumakabe
2
290
Network Firewallやっていき!
news_it_enj
0
170
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
AIとハーネスで育てるトランスコンパイラ / 20260722 Yasushi Katayama
shift_evolve
PRO
0
130
知らん間に、回ってる
ming_ayami
0
740
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
130
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
430
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
670
複数プロダクト組織のAIネイティブ化における戦略 / AICon2026_kude
rakus_dev
0
160
Featured
See All Featured
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
350
HDC tutorial
michielstock
2
750
Raft: Consensus for Rubyists
vanstee
141
7.6k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
310
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
Git: the NoSQL Database
bkeepers
PRO
432
67k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Designing for Timeless Needs
cassininazir
1
370
The Pragmatic Product Professional
lauravandoore
37
7.4k
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