HPET: High Precision Event Timer

HPETとは最近のx86マシンに実装された高精度タイマのことです.PICやRTCなどのタイマに比べてクロック数が高く処理オーバヘッドが小さいため,タイマとしての精度が高く,周期タイマだけでなくワンショットタイマ(指定時間後割込みを起こすアラーム)としての用途としても実用に耐えるタイマのようです.(この辺はほぼWikipediaからの抜粋です.)

RTCと比べてどのぐらい優れているかというとHPET+ソフトウェアでRTCをエミュレーションできるぐらいです.つまりRTCなどのエミュレーションも必要となる仮想化においても,精確な仮想タイマを提供する上で,HPETは重要なハードウェア機能となります.

KVMの場合もホストにHPETがあるかないかで大きく違います.例えば,通信性能を比べてみたところ,QEMU/KVMでHPETを有効にした場合は,しない場合に比べて30%ほど性能が向上しました.

ただHPETはLinuxにおいてもサポートがまだ完全ではなく,私のマシン環境(Xeon E5410, Intel X38)では32bit版Fedora 8のlinux-2.6.24系カーネルではうまく動かず,linux-2.6.25系RC版にする必要がありました.

ちなみにQMEU/KVMでHPETを有効にするのは簡単でqemu(-system-x86_64)コマンドに引数(-clock hpet)を加えるだけです.ホストマシンにHPETがなかったりホストカーネルが対応していない場合はqemuコマンドは即座に終了します.