狠狠撸

狠狠撸Share a Scribd company logo
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) からの秒数
? ji?es: 現在秒からの経過ナノ秒数
? UTC で動作する。
Interval Timer
? ハードウェアにより割り込みを発生させるデバイス。
? 割り込み発生する度に ji?es を増やしていく。
? 一般的な Linux Kernel では 1,000Hz (1ms) 毎に割り込み発
生。
? ji?es の増加分を x7me に反映していく。
HW Clock にアクセス
? hwclock というツールでアクセスできる。
? hwclock は /etc/adj/me をみて UTC か local/me かを判別。
$ sudo hwclock --show --localtime
2015年12月15日 08時04分42秒 .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を用いるべきか?
ご清聴ありがとうございました

More Related Content

What's hot (20)

OSC2012 Tokyo Fall OpenStack Essex Multinode Demo
OSC2012 Tokyo Fall OpenStack Essex Multinode DemoOSC2012 Tokyo Fall OpenStack Essex Multinode Demo
OSC2012 Tokyo Fall OpenStack Essex Multinode Demo
irix_jp
?
10骋产贰时代のネットワーク滨/翱高速化
10骋产贰时代のネットワーク滨/翱高速化10骋产贰时代のネットワーク滨/翱高速化
10骋产贰时代のネットワーク滨/翱高速化
Takuya ASADA
?
鲍贰贵滨时代のブートローダ
鲍贰贵滨时代のブートローダ鲍贰贵滨时代のブートローダ
鲍贰贵滨时代のブートローダ
Takuya ASADA
?
翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第2日:讲义狈辞1
翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第2日:讲义狈辞1翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第2日:讲义狈辞1
翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第2日:讲义狈辞1
Etsuji Nakai
?
SDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSDSDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSD
Masaru Oki
?
翱厂惫の概要と実装
翱厂惫の概要と実装翱厂惫の概要と実装
翱厂惫の概要と実装
Takuya ASADA
?
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24
Naoya Nakazawa
?
about Tcpreplay
about Tcpreplayabout Tcpreplay
about Tcpreplay
@ otsuka752
?
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
Masaru Oki
?
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
kazuyas
?
翱辫别苍惫蝉飞颈迟肠丑で痴笔厂
翱辫别苍惫蝉飞颈迟肠丑で痴笔厂翱辫别苍惫蝉飞颈迟肠丑で痴笔厂
翱辫别苍惫蝉飞颈迟肠丑で痴笔厂
Daisuke Nakajima
?
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
magoroku Yamamoto
?
顿辫诲办环境の话
顿辫诲办环境の话顿辫诲办环境の话
顿辫诲办环境の话
Masaru Oki
?
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~ [Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
Shuichi Gojuki
?
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
Masaru Oki
?
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
Sakiko Kawai
?
Spmv9forpublic
Spmv9forpublicSpmv9forpublic
Spmv9forpublic
T2C_
?
カーネル痴尘関西その参濒迟
カーネル痴尘関西その参濒迟カーネル痴尘関西その参濒迟
カーネル痴尘関西その参濒迟
cosmo0920
?
OpenBSD/luna88k news at NBUG Meeting 2013-09
OpenBSD/luna88k news at NBUG Meeting 2013-09OpenBSD/luna88k news at NBUG Meeting 2013-09
OpenBSD/luna88k news at NBUG Meeting 2013-09
Kenji Aoyama
?
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
VirtualTech Japan Inc.
?
OSC2012 Tokyo Fall OpenStack Essex Multinode Demo
OSC2012 Tokyo Fall OpenStack Essex Multinode DemoOSC2012 Tokyo Fall OpenStack Essex Multinode Demo
OSC2012 Tokyo Fall OpenStack Essex Multinode Demo
irix_jp
?
10骋产贰时代のネットワーク滨/翱高速化
10骋产贰时代のネットワーク滨/翱高速化10骋产贰时代のネットワーク滨/翱高速化
10骋产贰时代のネットワーク滨/翱高速化
Takuya ASADA
?
鲍贰贵滨时代のブートローダ
鲍贰贵滨时代のブートローダ鲍贰贵滨时代のブートローダ
鲍贰贵滨时代のブートローダ
Takuya ASADA
?
翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第2日:讲义狈辞1
翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第2日:讲义狈辞1翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第2日:讲义狈辞1
翱辫别苍厂迟补肠办クラウド基盘构筑ハンズオンセミナー 第2日:讲义狈辞1
Etsuji Nakai
?
SDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSDSDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSD
Masaru Oki
?
翱厂惫の概要と実装
翱厂惫の概要と実装翱厂惫の概要と実装
翱厂惫の概要と実装
Takuya ASADA
?
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24
Naoya Nakazawa
?
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
kazuyas
?
翱辫别苍惫蝉飞颈迟肠丑で痴笔厂
翱辫别苍惫蝉飞颈迟肠丑で痴笔厂翱辫别苍惫蝉飞颈迟肠丑で痴笔厂
翱辫别苍惫蝉飞颈迟肠丑で痴笔厂
Daisuke Nakajima
?
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
magoroku Yamamoto
?
顿辫诲办环境の话
顿辫诲办环境の话顿辫诲办环境の话
顿辫诲办环境の话
Masaru Oki
?
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~ [Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
Shuichi Gojuki
?
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
Masaru Oki
?
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
Sakiko Kawai
?
Spmv9forpublic
Spmv9forpublicSpmv9forpublic
Spmv9forpublic
T2C_
?
カーネル痴尘関西その参濒迟
カーネル痴尘関西その参濒迟カーネル痴尘関西その参濒迟
カーネル痴尘関西その参濒迟
cosmo0920
?
OpenBSD/luna88k news at NBUG Meeting 2013-09
OpenBSD/luna88k news at NBUG Meeting 2013-09OpenBSD/luna88k news at NBUG Meeting 2013-09
OpenBSD/luna88k news at NBUG Meeting 2013-09
Kenji Aoyama
?
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
VirtualTech Japan Inc.
?

Similar to Clock / Timer (20)

Timers
TimersTimers
Timers
uchan_nos
?
システムパフォーマンス勉强会#5
システムパフォーマンス勉强会#5システムパフォーマンス勉强会#5
システムパフォーマンス勉强会#5
shingo suzuki
?
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
?
尝颈苍耻虫の2038年问题を调べてみた
尝颈苍耻虫の2038年问题を调べてみた尝颈苍耻虫の2038年问题を调べてみた
尝颈苍耻虫の2038年问题を调べてみた
wata2ki
?
OSC2012-KANSAI@Kyoto JOSUG
OSC2012-KANSAI@Kyoto JOSUGOSC2012-KANSAI@Kyoto JOSUG
OSC2012-KANSAI@Kyoto JOSUG
Hideki Saito
?
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定についてCloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
Satoshi Shimazaki
?
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
Insight Technology, Inc.
?
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみようOOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
Tadashi Yamashita
?
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Etsuji Nakai
?
DSoC-RTCs
DSoC-RTCsDSoC-RTCs
DSoC-RTCs
FujiokaT
?
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
?
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
Takeshi HASEGAWA
?
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging
順也 山口
?
【学习メモ#7迟丑】12ステップで作る组込み翱厂自作入门
【学习メモ#7迟丑】12ステップで作る组込み翱厂自作入门 【学习メモ#7迟丑】12ステップで作る组込み翱厂自作入门
【学习メモ#7迟丑】12ステップで作る组込み翱厂自作入门
sandai
?
Windows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめWindows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめ
Sunao Tomita
?
170622 02
170622 02170622 02
170622 02
openrtm
?
Tremaday5lt
Tremaday5ltTremaday5lt
Tremaday5lt
ykuga
?
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
?
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
?
システムパフォーマンス勉强会#5
システムパフォーマンス勉强会#5システムパフォーマンス勉强会#5
システムパフォーマンス勉强会#5
shingo suzuki
?
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
Yohei Azekatsu
?
尝颈苍耻虫の2038年问题を调べてみた
尝颈苍耻虫の2038年问题を调べてみた尝颈苍耻虫の2038年问题を调べてみた
尝颈苍耻虫の2038年问题を调べてみた
wata2ki
?
OSC2012-KANSAI@Kyoto JOSUG
OSC2012-KANSAI@Kyoto JOSUGOSC2012-KANSAI@Kyoto JOSUG
OSC2012-KANSAI@Kyoto JOSUG
Hideki Saito
?
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定についてCloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
Satoshi Shimazaki
?
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
Insight Technology, Inc.
?
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみようOOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
Tadashi Yamashita
?
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Etsuji Nakai
?
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
?
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
Takeshi HASEGAWA
?
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging
順也 山口
?
【学习メモ#7迟丑】12ステップで作る组込み翱厂自作入门
【学习メモ#7迟丑】12ステップで作る组込み翱厂自作入门 【学习メモ#7迟丑】12ステップで作る组込み翱厂自作入门
【学习メモ#7迟丑】12ステップで作る组込み翱厂自作入门
sandai
?
Windows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめWindows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめ
Sunao Tomita
?
Tremaday5lt
Tremaday5ltTremaday5lt
Tremaday5lt
ykuga
?
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
?
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
?

More from Masato HORINOUCHI (9)

Church Numerals
Church NumeralsChurch Numerals
Church Numerals
Masato HORINOUCHI
?
CPS & CTO
CPS & CTOCPS & CTO
CPS & CTO
Masato HORINOUCHI
?
FM synthesis
FM synthesisFM synthesis
FM synthesis
Masato HORINOUCHI
?
Inside mml2wav.rb
Inside mml2wav.rbInside mml2wav.rb
Inside mml2wav.rb
Masato HORINOUCHI
?
A440
A440A440
A440
Masato HORINOUCHI
?
Scheme Interpreter in Ruby
Scheme Interpreter in RubyScheme Interpreter in Ruby
Scheme Interpreter in Ruby
Masato HORINOUCHI
?
Hash Tree
Hash TreeHash Tree
Hash Tree
Masato HORINOUCHI
?
POSIX Threads
POSIX ThreadsPOSIX Threads
POSIX Threads
Masato HORINOUCHI
?
贰濒颈虫颈谤绍介
贰濒颈虫颈谤绍介贰濒颈虫颈谤绍介
贰濒颈虫颈谤绍介
Masato HORINOUCHI
?

Recently uploaded (11)

【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?

Clock / Timer

  • 1. Clock / Timer 2015/12/15 0x64 Tales #03 OS Kernel Livesense Inc. HORINOUCHI Masato
  • 2. Linux Kernel Clock 大別すると以下の 2つに分けられる。 ? Hardware Clock ? その名の通りハードウェア上にある Clock デバイス。 ? System Clock ? Linux Kernel 内部にある Clock で揮発性。
  • 4. HW Clock ? Real&me Clock (RTC), BIOS Clock, CMOS Clock と呼ばれる。 ? 一般的にはバッテリーバックアップが行なわれる。 ? 電源が切れていてもバッテリーやコンデンサーにより駆動。 ? &mezone を意識しない。UTC か local&me かわからない。 ? Windows 環境は local&me として、Linux 環境は UTC として 動作するため、JST-9 環境だと 9時間のズレが発生する。
  • 5. System Clock ? Linux Kernel 内部のメモリーで保持している。なので揮発性。 ? 2つのデータを持っている。 ? x-me: UNIX Epoch (1970/01/01 00:00:00 UTC) からの秒数 ? ji?es: 現在秒からの経過ナノ秒数 ? UTC で動作する。
  • 6. Interval Timer ? ハードウェアにより割り込みを発生させるデバイス。 ? 割り込み発生する度に ji?es を増やしていく。 ? 一般的な Linux Kernel では 1,000Hz (1ms) 毎に割り込み発 生。 ? ji?es の増加分を x7me に反映していく。
  • 7. HW Clock にアクセス ? hwclock というツールでアクセスできる。 ? hwclock は /etc/adj/me をみて UTC か local/me かを判別。 $ sudo hwclock --show --localtime 2015年12月15日 08時04分42秒 .785058 seconds $ cat /etc/adjtime 0.000000 1450089054 0.000000 1450089054 UTC
  • 8. HW Clock と System Clock の関係 ? SysVinit (Upstart) の場合 ? Ubuntu では /etc/init.d/hwclock.sh で OS 起動/終了 時に同期。 ? CentOS 6 では /etc/rc.d/init.d/halt で OS 終了時に 同期。 ? 起動時はどうしているのかちょっと調べたけど不明…。
  • 9. 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
  • 10. Raspberry Pi ? 実は RTC を搭載していない。 ? けど自作する猛者。 ? RaspberryPiにRTCモジュールを搭載して、ハードウェア起動 時に時刻を合わせる
  • 11. Tickless Kernel ? ハードウェアにより CPU に割り込み発生させると電力消費に懸 念。 ? 時間の更新を定期的な割り込みではなく Clock Source を参照す ることに。 ? これにより CPU が省電力モードでいられる時間を長くする ことが可能に。
  • 12. 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)
  • 14. 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
  • 15. 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 を使う から引用。
  • 16. 計測してみる こんな 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
  • 17. Clock Source 考察 ? kvm-clock より TSC の方が 2倍ほど速い。 ? が、VM だと TSC の値が怪しいケースも多そう。 ? なので素直に kvm-clock を使うのが良さそう。 ? acpi_pm は数十倍(30~70倍)遅い。 ? しかもシステムコールしまくり system 時間使いまくり。
  • 18. まとめ ? Linux Kernel の Clock / Timer 周りは歴史的経緯により複雑。 ? Clock / Timer の解像度や精度は上がっている。 ? 以前は VM だと Clock ズレまくったものだが、この辺も解決し てきている。 ? とはいえ結局は Guest OS で ntp 使うのが良い模様 → KVM において ホストとゲストの時間管理はNTPを用いるべきか?