diary/Kojima

VirtualBoxとホスト環境のsuspend/resume(その2)

昨日の続き。だいたいの見当は付いた。

最近のカーネル(手元で試したのは4.14.xと4.16.7)では、カーネル自身が複数の時刻情報源を認識し、それらの中から適切な情報源を選択して使用するらしい。

カーネルが使用している時刻情報源は /sys/devices/system/clocksource/clocksource0/current_clocksource に表われる。

 $ cat /sys/devices/system/clocksource/clocksource0/current_clocksource 
 tsc

一方、利用可能な時刻情報源の一覧は /sys/deices/system/clocksource/clocksource0/available_clocksource に示される。

 $ cat /sys/devices/system/clocksource/clocksource0/available_clocksource 
 tsc hpet acpi_pm 

上記は実機の例で、tsc(time stamp counter)、hpet(high-precision event timer) 、acpi_pm(Advanced Configuration and Power Interface Power management)がそれぞれ時刻情報源として利用でき、それらのうちから tsc を使うことにしている。

 ざっと調べたところ、tsc が CPU のカウンタ、hpet はハードウェアレベルな専用タイマー、
 acpi_pm は ACPI 規格のBIOSが提供するインターフェイスで、精度もほぼこの順らしい。

一方、VirtualBox にインストールしたカーネルでは利用可能な時刻情報源は kvm_clock と acpi_pm になり、最近のカーネルだと kvm_clock を優先して使うものの、どうもVirtualBox な環境では kvm_clock ではダメで acpi_pm にしておく必要がある模様。

 VirtualBox 側の設定で変更できそうな気もする。

実は、この設定は動作中に切り替えることも可能で、

 # echo "acpi_pm" > /sys/devices/system/clocksource/clocksource0/current_clocksource

してやれば acpi_pm を使うようになって、ホスト側のサスペンド/レジューム後もゲスト環境は問題なく動作するようになった。

起動時から変えるには、カーネルの起動時パラメータに

 clocksource=acpi_pm

を追加すればよさげ。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:43