Linux Kernelのオプションについて調べたメモ。
タイマーは起動時に選択される。利用可能なものから、一番良いものが選択されるようだ。
通常はtscが選択される。tscはCPUのクロックベースのようで、一般的に利用される。CPUの動作周波数変化に影響されるとの記述も見られるが、最近は問題ないらしい。
利用できるクロックのソースと現在利用されているものを知るには以下のファイルを確認する。
###利用可能なクロックソース # cat /sys/devices/system/clocksource/clocksource0/available_clocksource ###現在のクロックソース # cat /sys/devices/system/clocksource/clocksource0/current_clocksource
クロックソースを変更するには、カーネルの起動オプションで指定してやる必要がある。
#grub.confに以下のオプションを追加。 #HPETを利用する場合 clocksource=hpet #kvmの場合 clocksource=kvm-clock
最近のシステムならば、HPETが利用できる。以下のドライバを有効にする。
Device Drivers ---> Character devices ---> [*] HPET - High Precision Event Timer [*] Allow mmap of HPET (NEW)
これまでのシステムでは、カーネルの割り込み周期に依存していたため、タイマーの精度がその周期に依存していたらしい。以下のパラメータで設定。
Processor type and features ---> Timer frequency (250 HZ) --->
この周期に依存せずに高精度のタイマーを利用するためには、以下のオプションを有効にする。
General setup ---> Timers subsystem ---> [*] High Resolution Timer Support
このオプションによってタイマーの精度が向上するかどうかは、システム、ハードウェアに依存する。精度が改善されたかどうかを確認するには、以下のデバイスファイルを参照する。
###タイマーの状況を保持するファイル # cat /proc/timer_list
この結果にある「resolution」を確認する。「1nsecs」なら、たぶん高精度タイマーになっている。High Resolution Timerのサポートを外して再起動してみると、resolutionが大きく変化する。変化しなければサポートされていないと考えて良いようだ。最近のシステムならば、たいていはサポートされているようだ。
Tickless System
Timers subsystem ---> [ ] Tickless System (Dynamic Ticks)
不要なタイマーの定期割り込みを発生させない。CPUがいちいち起動しないので消費電力を低下させられる。ノートPCなどで有効にすると電力消費が抑えられる。その際、時間管理は外部のクロックソースが使われるので問題ないようだ。