Xenの話

4gb seg fixup

Xenを使ってる人が,DomU上で"4gb seg fixup"というメッセージが大量にでるという話をしていました.調べてみると,XenのFAQに載っていて,

These messages are from a glibc that was built with negative GS register offsets. Xen can run with negative GS register references, but it must "trap and emulate" this condition, which is relatively resource intensive, and quite slow.

という状態にあることがわかりました.ところが,ここからリンクされてるページを見て,コマンドを叩いてみると

# ldconfig -v -p 2>&1 | grep libc.so
 libc.so.6 (libc6, hwcap: 0x0018000000000000, OS ABI: Linux 2.6.9) => /lib/i686/nosegneg/libc.so.6
 libc.so.6 (libc6, OS ABI: Linux 2.6.9) => /lib/libc.so.6

となるので,設定は正しいらしいのです.エラーを吐いているのはどうやらrubyスクリプトで,当人がコンパイルしたものだということなので,もう一度コンパイルしなおすか,という話に.ちなみに,nosegnegってのがよくわからずに見つけたのがこのページ

+ * We supply "nosegneg" as the fake capability, to indicate that we
+ * do not like negative offsets in instructions using segment overrides,
+ * since we implement those inefficiently.

ということで,Xen用に作られたオプションらしいです.

イメージコピー

コンパイルしたrubyを今までとは違うパスに入れてテストするか,と言っていた時に,DomUなんだからイメージをまるごとコピーしたインスタンスを作ってそこで試せばいいってことに気づきました.調べて見つけたのがこのページ.マニュアルのサンプルを見ると,要は

# virt-clone \
    --original demo \
    --name newdemo \
    --file /var/lib/xen/images/newdemo.img

こんな感じ.uuidとかmacアドレスとかは勝手に設定してくれます.もしそれらの設定も自分でやりたければ,このページが役に立ちます.