追いついていない.

ハイパーパイザごときで[下ネタ]タグは軟弱とか言われそうな気もしつつ.
まあ,xen-3.1.0-src.tgz の中身を追いかけているので,下ねたってことでひとつ.


このところ,Xenの中身を追いかけているのだけれども,Googleで当たる日本語の情報が,ことごとく古くて絶望気味.

みんな,飽きちゃったのか,お金になるようになって口をつぐんじゃったのか.ふむー.

こんな感じだと,サーバ畑ではVMware, 組込み畑ではVirtual logix辺りを勧めるほうが安全という話にもなるだろうなぁ.

RDTSCの仮想化

例えば,性能評価でtscレジスタを使おうとして調べたところ


Intel®VT-xではRDTSC命令でもVMexitsが発生する様に設定することが可能です。
 ただし、Xenはそのような設定にしていません。
残念ながら,これは2006年現在の真実らしく,Xen-3.1.0 のHVMドメインでは,Intel VMXにせよAMD SVMにせよ,tscレジスタに関して操作が行われるっぽい.
VMXに関してはイマイチ理解しきれていないのだけれども,__vmwrite()でTSCのオフセット値をいじっている箇所があるので間違い無さげ.
SVMに関しては,xen/arch/x86/hvm/svm/emulate.c
で,

MAKE_INSTR(RDTSC,  2, 0x0f, 0x31);

というどう見てもトラップかけていそうなコードがある.

スケジューラはどこ?


ではさっそく、ドメインスケジューラ本体のコードを読んでみましょう(リスト1)。
残念ながら,該当するコードは,Xen-3.1.0 には無いらしい.
xen/common/schedule.c 辺りが,その発展形のような気がしなくもないけれども,まだよく理解できていない.
組込み屋さんにとって興味津々のタイマイベントの発生は,xen/arch/*/*time.c 辺りに分散して存在しているものと,xen/common/schedule.c にあるものと,2系統あるっぽい.でも,まだよく理解できていない.
いずれにせよ直接的には参考資料として使えなさげ.