SlideShare a Scribd company logo
1 of 19
Download to read offline
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
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

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 Demoirix_jp
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダTakuya ASADA
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1Etsuji Nakai
 
SDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSDSDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSDMasaru Oki
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装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, 24Naoya Nakazawa
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitchkazuyas
 
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメントmagoroku Yamamoto
 
Dpdk環境の話
Dpdk環境の話Dpdk環境の話
Dpdk環境の話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 performanceMasaru Oki
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch UsecasesSakiko Kawai
 
Spmv9forpublic
Spmv9forpublicSpmv9forpublic
Spmv9forpublicT2C_
 
カーネルVm関西その参lt
カーネルVm関西その参ltカーネルVm関西その参lt
カーネルVm関西その参ltcosmo0920
 
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-09Kenji 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.
 

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
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
 
SDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSDSDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSD
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装
 
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
 
about Tcpreplay
about Tcpreplayabout Tcpreplay
about Tcpreplay
 
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
 
OpenvswitchでVPS
OpenvswitchでVPSOpenvswitchでVPS
OpenvswitchでVPS
 
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
 
Dpdk環境の話
Dpdk環境の話Dpdk環境の話
Dpdk環境の話
 
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~ [Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
[Azure Antenna] クラウドで HPC ~ HPC 環境の構築から、アプリケーションの実行まで ~
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
Spmv9forpublic
Spmv9forpublicSpmv9forpublic
Spmv9forpublic
 
カーネルVm関西その参lt
カーネルVm関西その参ltカーネルVm関西その参lt
カーネルVm関西その参lt
 
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
 
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...
 

Similar to Clock / Timer

システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5shingo suzuki
 
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishYohei Azekatsu
 
Linuxの2038年問題を調べてみた
Linuxの2038年問題を調べてみたLinuxの2038年問題を調べてみた
Linuxの2038年問題を調べてみたwata2ki
 
OSC2012-KANSAI@Kyoto JOSUG
OSC2012-KANSAI@Kyoto JOSUGOSC2012-KANSAI@Kyoto JOSUG
OSC2012-KANSAI@Kyoto JOSUGHideki 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 2021Preferred Networks
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Kei Mikage
 
エンジニアなら知っておきたい「仮想マシン」のしくみ 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順也 山口
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 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 02openrtm
 
Tremaday5lt
Tremaday5ltTremaday5lt
Tremaday5ltykuga
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)Takeshi HASEGAWA
 

Similar to Clock / Timer (20)

Timers
TimersTimers
Timers
 
システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5システムパフォーマンス勉強会#5
システムパフォーマンス勉強会#5
 
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
 
Linuxの2038年問題を調べてみた
Linuxの2038年問題を調べてみたLinuxの2038年問題を調べてみた
Linuxの2038年問題を調べてみた
 
OSC2012-KANSAI@Kyoto JOSUG
OSC2012-KANSAI@Kyoto JOSUGOSC2012-KANSAI@Kyoto JOSUG
OSC2012-KANSAI@Kyoto JOSUG
 
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定についてCloudStack徹底入門読書会 第4章 4.6 グローバル設定について
CloudStack徹底入門読書会 第4章 4.6 グローバル設定について
 
[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が使...
 
Open stackceilometer
Open stackceilometerOpen stackceilometer
Open stackceilometer
 
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみようOOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
 
DSoC-RTCs
DSoC-RTCsDSoC-RTCs
DSoC-RTCs
 
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
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
 
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
 
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging
 
【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門 【学習メモ#7th】12ステップで作る組込みOS自作入門
【学習メモ#7th】12ステップで作る組込みOS自作入門
 
Windows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめWindows Azure で 2/29 に起こった問題のまとめ
Windows Azure で 2/29 に起こった問題のまとめ
 
170622 02
170622 02170622 02
170622 02
 
Tremaday5lt
Tremaday5ltTremaday5lt
Tremaday5lt
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
 

More from Masato HORINOUCHI (9)

Church Numerals
Church NumeralsChurch Numerals
Church Numerals
 
CPS & CTO
CPS & CTOCPS & CTO
CPS & CTO
 
FM synthesis
FM synthesisFM synthesis
FM synthesis
 
Inside mml2wav.rb
Inside mml2wav.rbInside mml2wav.rb
Inside mml2wav.rb
 
A440
A440A440
A440
 
Scheme Interpreter in Ruby
Scheme Interpreter in RubyScheme Interpreter in Ruby
Scheme Interpreter in Ruby
 
Hash Tree
Hash TreeHash Tree
Hash Tree
 
POSIX Threads
POSIX ThreadsPOSIX Threads
POSIX Threads
 
Elixir紹介
Elixir紹介Elixir紹介
Elixir紹介
 

Recently uploaded

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (11)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

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) からの秒数 • jiffies: 現在秒からの経過ナノ秒数 • UTC で動作する。
  • 6. Interval Timer • ハードウェアにより割り込みを発生させるデバイス。 • 割り込み発生する度に jiffies を増やしていく。 • 一般的な Linux Kernel では 1,000Hz (1ms) 毎に割り込み発 生。 • jiffies の増加分を 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を用いるべきか?