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
Clock / Timer
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
HORINOUCHI Masato
December 15, 2015
Technology
0
160
Clock / Timer
社内LT大会 0x64物語 #03 OS Kernel 資料
HORINOUCHI Masato
December 15, 2015
Tweet
Share
More Decks by HORINOUCHI Masato
See All by HORINOUCHI Masato
balenaCloud
thermes
0
75
Church Numerals
thermes
0
47
CPS & CTO
thermes
0
250
FM synthesis
thermes
0
36
A440
thermes
0
61
Inside mml2wav.rb
thermes
0
86
Scheme Interpreter in Ruby
thermes
0
70
Hash Tree
thermes
0
75
POSIX Threads
thermes
0
56
Other Decks in Technology
See All in Technology
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
360
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
失敗できる意思決定とソフトウェアとの正しい歩き方_-_変化と向き合う選択肢/ Designing for Reversible Decisions
soudai
PRO
8
1.4k
社内ワークショップで終わらせない 業務改善AIエージェント開発
lycorptech_jp
PRO
1
430
どこで打鍵するのが良い? IaCの実行基盤選定について
nrinetcom
PRO
2
100
AI活用を"目的"にしたら、データの本質が見えてきた - Snowflake Intelligence実験記 / chasing-ai-finding-data
pei0804
0
840
Serverless Agent Architecture on Azure / serverless-agent-on-azure
miyake
1
120
Agentic Codingの実践とチームで導入するための工夫
lycorptech_jp
PRO
0
240
AIエンジニア Devin と歩む、自律型運用プロセスの構築
a2ito
0
470
パネルディスカッション資料 (at Tableau Now! - 2026-02-26)
yoshitakaarakawa
0
890
【SLO】"多様な期待値" と向き合ってみた
z63d
2
270
メタデータ同期に潜んでいた問題 〜 Cache Stampede 時の Cycle Wait を⾒つけた話
lycorptech_jp
PRO
0
110
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
82
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Designing for Performance
lara
611
70k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
750
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
450
The untapped power of vector embeddings
frankvandijk
2
1.6k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
110
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
470
Transcript
Clock / Timer 2015/12/15 0x64 Tales #03 OS Kernel Livesense
Inc. HORINOUCHI Masato
Linux Kernel Clock େผ͢ΔͱҎԼͷ 2ͭʹ͚ΒΕΔɻ • Hardware Clock • ͦͷ໊ͷ௨ΓϋʔυΣΞ্ʹ͋Δ
Clock σόΠεɻ • System Clock • Linux Kernel ෦ʹ͋Δ Clock Ͱشൃੑɻ
Linux࣌ࠁཧͷΈͱઃఆ ͔ΒҾ༻
HW Clock • Real&me Clock (RTC), BIOS Clock, CMOS Clock
ͱݺΕΔɻ • ҰൠతʹόοςϦʔόοΫΞοϓ͕ߦͳΘΕΔɻ • ిݯ͕Ε͍ͯͯόοςϦʔίϯσϯαʔʹΑΓۦಈɻ • &mezone Λҙࣝ͠ͳ͍ɻUTC ͔ local&me ͔Θ͔Βͳ͍ɻ • Windows ڥ local&me ͱͯ͠ɺLinux ڥ UTC ͱͯ͠ ಈ࡞͢ΔͨΊɺJST-9 ڥͩͱ 9࣌ؒͷζϨ͕ൃੜ͢Δɻ
System Clock • Linux Kernel ෦ͷϝϞϦʔͰอ͍࣋ͯ͠ΔɻͳͷͰشൃੑɻ • 2ͭͷσʔλΛ͍࣋ͬͯΔɻ • x-me:
UNIX Epoch (1970/01/01 00:00:00 UTC) ͔Βͷඵ • jiffies: ݱࡏඵ͔Βͷܦաφϊඵ • UTC Ͱಈ࡞͢Δɻ
Interval Timer • ϋʔυΣΞʹΑΓׂΓࠐΈΛൃੜͤ͞ΔσόΠεɻ • ׂΓࠐΈൃੜ͢Δʹ jiffies Λ૿͍ͯ͘͠ɻ • Ұൠతͳ
Linux Kernel Ͱ 1,000Hz (1ms) ຖʹׂΓࠐΈൃ ੜɻ • jiffies ͷ૿ՃΛ x7me ʹө͍ͯ͘͠ɻ
HW Clock ʹΞΫηε • hwclock ͱ͍͏πʔϧͰΞΫηεͰ͖Δɻ • hwclock /etc/adj/me
ΛΈͯ UTC ͔ local/me ͔Λผɻ $ sudo hwclock --show --localtime 201512݄15 08࣌0442ඵ .785058 seconds $ cat /etc/adjtime 0.000000 1450089054 0.000000 1450089054 UTC
HW Clock ͱ System Clock ͷؔ • SysVinit (Upstart) ͷ߹
• Ubuntu Ͱ /etc/init.d/hwclock.sh Ͱ OS ىಈ/ऴྃ ࣌ʹಉظɻ • CentOS 6 Ͱ /etc/rc.d/init.d/halt Ͱ OS ऴྃ࣌ʹ ಉظɻ • ىಈ࣌Ͳ͏͍ͯ͠Δͷ͔ͪΐͬͱௐ͚ͨͲෆ໌…ɻ
Systemd Ͱ RTC ʹΞΫηε • "medatectl ͱ͍͏πʔϧͰΞΫηεͰ͖Δɻ $ timedatectl Local
time: Ր 2015-12-15 17:06:22 JST Universal time: Ր 2015-12-15 08:06:22 UTC RTC time: Ր 2015-12-15 08:06:20 Time zone: Asia/Tokyo (JST, +0900) Network time on: yes NTP synchronized: yes RTC in local TZ: no
Raspberry Pi • ࣮ RTC Λࡌ͍ͯ͠ͳ͍ɻ • ͚Ͳࣗ࡞͢Δऀɻ • RaspberryPiʹRTCϞδϡʔϧΛࡌͯ͠ɺϋʔυΣΞىಈ
࣌ʹ࣌ࠁΛ߹ΘͤΔ
Tickless Kernel • ϋʔυΣΞʹΑΓ CPU ʹׂΓࠐΈൃੜͤ͞Δͱిྗফඅʹݒ ೦ɻ • ࣌ؒͷߋ৽ΛఆظతͳׂΓࠐΈͰͳ͘ Clock
Source Λࢀর͢ Δ͜ͱʹɻ • ͜ΕʹΑΓ CPU ͕লిྗϞʔυͰ͍ΒΕΔ࣌ؒΛ͘͢Δ ͜ͱ͕Մೳʹɻ
Clock Source ओʹҎԼͷͷ͕͋Δɻ্ʹ͋Δํ͕ΞΫηείετ͕͍ɻ • kvm-clock • Time Stamp Counter (TSC)
• High Precision Event Timer (HPET) • ACPI Power Management Timer (ACPI_PM) • Programmable Interval Timer (PIT) • Real Time Clock (RTC)
RHEL6ͷ&ckless kernel ͔ΒҾ༻
Clock Source ΛௐΔ • VirtualBox 5.0.10 (४ԾԽΠϯλʔϑΣʔε KVM) • Ubuntu
15.10 64bit + Guest Add@ons $ uname -a Linux ubuntu 4.2.0-19-generic #23-Ubuntu SMP Wed Nov 11 11:39:30 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ cat /sys/devices/system/clocksource/clocksource0/available_clocksource kvm-clock tsc acpi_pm $ cat /sys/devices/system/clocksource/clocksource0/current_clocksource kvm-clock
Clock Source ͷΛܭଌ ݩίʔυ1 Λվมͯ͠ 10,000,000 ճ࣮ߦɻ #include <sys/time.h> #include
<stdio.h> int main() { struct timeval tv; for (int i=0; i<10000000; i++) { int r = gettimeofday(&tv, 0); if (r < 0) { perror("gettimeofday"); return 1; } } return 0; } 1 VirtualBox 5 Ͱར༻Մೳʹͳͬͨ Paravirtualiza1on ػೳ kvmclock Λ͏ ͔ΒҾ༻ɻ
ܭଌͯ͠ΈΔ ͜Μͳ shell script ʹͯ͠Έͨɻ #! /bin/zsh # kvm-clock sudo
sh -c "echo kvm-clock > /sys/devices/system/clocksource/clocksource0/current_clocksource" cat /sys/devices/system/clocksource/clocksource0/current_clocksource time ./t # tsc sudo sh -c "echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource" cat /sys/devices/system/clocksource/clocksource0/current_clocksource time ./t # acpi_pm sudo sh -c "echo acpi_pm > /sys/devices/system/clocksource/clocksource0/current_clocksource" cat /sys/devices/system/clocksource/clocksource0/current_clocksource time ./t
Clock Source ߟ • kvm-clock ΑΓ TSC ͷํ͕ 2ഒ΄Ͳ͍ɻ •
͕ɺVM ͩͱ TSC ͷ͕ո͍͠έʔεଟͦ͏ɻ • ͳͷͰૉʹ kvm-clock Λ͏ͷ͕ྑͦ͞͏ɻ • acpi_pm ेഒ(30ʙ70ഒ)͍ɻ • ͔͠γεςϜίʔϧ͠·͘Γ system ͍࣌ؒ·͘Γɻ
·ͱΊ • Linux Kernel ͷ Clock / Timer पΓྺ࢙తܦҢʹΑΓෳࡶɻ •
Clock / Timer ͷղ૾ਫ਼্͕͍ͬͯΔɻ • Ҏલ VM ͩͱ Clock ζϨ·ͬͨ͘ͷ͕ͩɺ͜ͷลղܾ͠ ͖͍ͯͯΔɻ • ͱ͍͑݁ہ Guest OS Ͱ ntp ͏ͷ͕ྑ͍༷ → KVM ʹ͓͍ͯ ϗετͱήετͷ࣌ؒཧNTPΛ༻͍Δ͖͔ʁ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠