2007年3月21日 (水曜日)

01:10:52 # Life alioth のアクセスログって? tokyodebian へのアクセスがどうなっているのか、と思い alioth のウェブぺージのアクセスログは使えるのか、ということをきいてみた。 以前 vhost 毎にログがとれるようにしようとしたのだが、うまくいかずに諦めたという経緯があるので今は見れない、というのが答えのようだ。

15:04:52 # Life kqemu を試してみる。 x86_64 上では、qemu-x86_64 を利用した場合にkqemu 機能が有効になるはず。 説明を読んでいる限りでは動きそうなのに、なぜだかうまく動かないので困っていた。 そこで腰をおちつけてソースを読みながら調べてみることに。 対象は Debian の kqemu 1.3.0~pre11-2 パッケージ。 qemu-x86_64 を strace してみると、 /dev/kqemu をオープンするところで -ENXIO で失敗しているらしい。 kqemuカーネルモジュール側が -ENXIO を返す部分はないので、なんとなく /dev/kqemu のデバイスのメジャー番号、マイナー番号がおかしいのではないか、とあたりをつける。。 で、/dev/kqemu は c 250 0 なので、kqemu 側はどうなっているかな、とおもって見ると、 'major'というMODULE_PARAMが設定されており、デフォルトが 0 になっている。init_module のコードを読むと、0 の場合は、デバイスを登録しないらしい。んげー、いみねぇ。本当か? こんなことになっていたら、この世の中の誰も使えていなくてもおかしくないのだが、なぜだ! とおもって気をとりなおして見ると、そうでない場合はキャラクタデバイスに動的なマイナー番号をふる、 misc_register という仕組みを利用してデバイスをつくっているらしい。 /proc/misc を眺めると、62 が kqemuらしい。 c 10 62 ならよいのか。 で、sudo mknod /dev/kqemu c 10 62 sudo chmod 666 /dev/kqemuとしたら無事使えました。

open("/dev/kqemu", O_RDWR)              = -1 ENXIO (No such device or address)
--- SIGALRM (Alarm clock) @ 0 (0) ---
clock_gettime(CLOCK_MONOTONIC, {12379, 666467194}) = 0
rt_sigreturn(0x1)                       = -1 ENXIO (No such device or address)
write(2, "Could not open \'/dev/kqemu\' - QE"..., 68Could not open '/dev/kqemu' - QEMU acceleration layer not activated
) = 68
	

しかし、この仕組み、udevをつかっていないと毎回 misc デバイスがどれかというのを調べないといけないので、 いけてないなぁ。 いけてないので報告しておきました。415665

qemu-x86_64 上で Windows XP (32bit)が稼働。その上で動作して いるcygwinでプログラムをベンチマークしたところ、1000000000回 ループするだけのプログラムがネイティブだと4秒くらいで実行で きるのに対して5秒くらいかかる、それっぽい結果になりました。

Junichi Uekawa

$Id: dancer-diary.el,v 1.91 2006/06/15 15:14:10 dancer Exp $