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
Satoru Takeuchi
PRO
July 11, 2020
Technology
120
0
Share
誤解されがちなsleepコマンドの挙動
以下動画のテキストです。
https://youtu.be/kF1VicngujU
Satoru Takeuchi
PRO
July 11, 2020
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
システム強制終了時にファイルシステムの整合性を保つ~ コピーオンライト編 ~
sat
PRO
0
40
システム強制終了時に ファイルシステムの整合性を保つ ~ ジャーナリング編 ~
sat
PRO
1
45
ファイルシステムの整合性を回復するfsck
sat
PRO
1
45
小学校5,6年生向けキャリア教育 大人になるまでの道
sat
PRO
8
3.9k
ファイルシステムの不整合
sat
PRO
2
140
書籍執筆での生成AIの活用
sat
PRO
2
480
ChatGPTに従って体調管理2026
sat
PRO
0
180
eBPF
sat
PRO
1
150
waruiBPF
sat
PRO
0
130
Other Decks in Technology
See All in Technology
知ってた?JavaScriptの"正しさ"を検証するテストが5万以上もあること(Test262)
riyaamemiya
1
140
[Oracle TechNight#99] 生成AI時代のAI/ML入門 ~ AIとオラクルデータベースの関係 (前半)
oracle4engineer
PRO
2
220
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
450
AWS Transform CustomでIaCコードを自由自在に変換しよう
duelist2020jp
0
240
Angular Architecture Revisited Modernizing Angular Architectural Patterns
rainerhahnekamp
0
130
AI駆動開発で生産性を追いかけたら、行き着いたのは品質とシフトレフトだった
littlehands
0
360
エージェント時代の UIとAPI、CLI戦略
coincheck_recruit
0
130
OWASP APTSを眺めてみた
su3158
0
100
独断と偏見で試してみる、 シングル or マルチエージェント どっちがいいの?
shichijoyuhi
1
240
大学職員のための生成AI最前線 :最前線を、AIガバナンスとして読み直すためのTips
gmoriki
2
3.5k
CyberAgent YJC Connect
shimaf4979
1
150
雑談は、センサーだった
bitkey
PRO
2
200
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Unsuck your backbone
ammeep
672
58k
Facilitating Awesome Meetings
lara
57
6.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
550
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
130
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
210
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
530
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
210
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