<< リモコンアッテネーター | main | DAC基板 >>

2007/02/02 金

VirtualServerのゲストOSにFreeBSD(その2)

まだやってんのか!?というのは置いておいて、VirtualServerにFreeBSD6.2を
入れた場合について検証してみた。
VirtualServer2005R2 SP1 betaにて。
FreeBSD6.2Rを導入。ちなみに、FreeBSDゲストは、2つ起動して実験している。

素のままの設定だと、calcru多発。時計が進むなどの問題発生。
最終的に以下のように設定し、ほぼ問題なし。

/boot/loader.conf
----
hint.apic.0.disabled="1"
debug.acpi.disabled="timer"

マルチプロセッサの意味ないし。。。VmWareの設定においても、よく見かける。
あと、acpiのtimerは切っておく。

/etc/sysctl.conf
----
machdep.tsc_freq=2793396462 <- TSC周波数直指定
kern.timecounter.hardware=TSC

timecounterは、TSC以外はバギーだと思った方がよい。
calcruにて、backward, negative timeが多発する。
時計の進み具合は、machdep.tsc_freqにて設定する。
たとえば、私のdmesgでは(Pen4-2.8GHzの例)、、
Timecounter "TSC" frequency 2795872114 Hz quality 800
てな具合で、TSC周波数を計測してくれるわけだが、これは、起動のたびに揺らぐことが多く、あてにならない。
よって、machdep.tsc_freqにて、TSCの値を直指定して、時計の精度を確保する。追い込むと、1時間ごとにntpdateしても、0.01秒くらいの誤差になり、実機並になる。
しかし、ホストマシンのCPUを変更する場合、machdep.tsc_freqの設定を事前に詰めておく必要があるだろう。とくに、サーバとして運用する場合。(まぁ、普通いきなり、サーバハードの入れ替えはしないだろう。)
そういう面倒なことがいやな場合で時計の精度だけ確保するならば、以下のようにしてもいいかもしれず。
/boot/loader.conf
----
hint.apic.0.disabled="1"
debug.acpi.disabled="timer"
kern.hz=100

/etc/sysctl.conf
----
kern.timecounter.hardware=i8254
しかしながら、calcruが多発しまくるのでお勧めできないかも。

しかし、VirtualServerの情報は少ないなぁ。
私は、VmWareより好きなのだが。(元が、Connectix製品というところが。)