torutkのブログ

ソフトウェア・エンジニアのブログ

VMware上でLinux時の時刻ずれ(bootパラメータのdivider)

Windows XP上のVMware上でLinuxをゲストOSとして動かしているときに、Linux 2.6系カーネルではタイマー割り込み(tick)が1000Hzになったことに起因して時刻がずれるという現象があります。VMwareが1000Hzのタイマー割り込みを再現できないことが原因のようです。

これについては、いろいろな回避策が模索されていますが、機種・環境によって有効・無効があったり、カーネルの再コンパイルが必要であったりと、なかなかよい解決方法が見出せていません。VMwareの回避情報は以下URL。

そんなときに、以下記事に目が止まりました。カーネルのブートパラメータでdivider=xx と指定するとタイマー割り込み1000HzをXXで割った値に低減する機能とのことです。RHEL 4.7/Fedora 8? 9?/RHEL 5.1では取り入れられているとのことです。
http://jons-thoughts.blogspot.com/2008/04/rhel-and-vmware-time-skew-problems.html

なお、以下URLから入手できるVMwareCentOSイメージでは、タイマー割り込みが100Hzに設定されたカーネル(include/linux/autoconf.hの中でCONFIG_HZが100)が使用されています。
http://www.symbiosoft.net/index.html

watchコマンド

上記記事を見ていたときに知ったwatchコマンド。--intervalで指定した時間ごとにコンソール出力を更新するもので、コンソール環境でコマンド実行結果を定期的に見るのに適しています。コマンド実行結果をフルスクリーンで更新するので、変化したところだけ変わるように見えます。

$ watch --interval=1 cat /proc/interrupts