2008-04-28

x64でのパフォーマンスチェック Windows版

最近Michel君にx64のパッチをあげたんだけど、Firefox 3上でのパフォーマンスが出ないということを言われたので、気になって調べてみた。今回も当然Dromaemo。--enable-optimize=-Oxでビルド。x64はこれ以外の最適化ビルドオプションを使うと落ちます(生成されたコードを見る限りたぶんコンパイラのバグ)。

確かに。最近使っているDellのノート上だとパフォーマンスが出てない。

で、Althon 64 X2だとどうなるんだろと思って、(まったく調査にもならないけど、試しにということで) VMWare上で調べてみる。

VMWare上で見てるから、比較なんて意味ないんだけど、やっぱりCore 2 Duoってx64モードで遅いの?。遅いかもという話は聞いていたんだけど、もう少し調べてみないとわからないけど。

2008-04-19

Firefox JavaScript パフォーマンス (x86 vs x64)

気になったのでDromaeoを使って32bitと64bitのベンチマーク。テスト環境のCPUは、AMD Turion 64 1.8GHz

64bitだと比較的いいパフォーマンスが出ているようだ。x64の方は、Ubuntuのビルドで、x86は、公式のビルドだから、ビルドのチューニングという点では数字が正しいとはいえないかもしれない。また、64bit上のLinuxで調べているので、OSとして32bitの方がコンテキストスイッチのコストが低い分、32bit上のOSで動かせばもっといい数値がでるかもしれない。

なのでこれはあくまでも目安のデータ。

Ubuntu 8.04 で VirtualBox-OSE が起動しない

Ubuntu 7.10でも同様に起動できなかった(ハングアップしてた)んだけど、原因がわかったので、メモ。

シンボルを入れてgdbで軽くみてみる

(gdb) bt
#0  0x00007fa0f157bda2 in select () from /lib/libc.so.6
#1  0x00007fa0eeaa12b6 in ?? () from /usr/lib/libxcb.so.1
#2  0x00007fa0eeaa2b02 in xcb_wait_for_event () from /usr/lib/libxcb.so.1
#3  0x00007fa0f27c4a37 in ?? () from /usr/lib/libX11.so.6
#4  0x00007fa0f27c4d75 in ?? () from /usr/lib/libX11.so.6
#5  0x00007fa0f27a5343 in XIfEvent () from /usr/lib/libX11.so.6
#6  0x00007fa0f27eca8e in ?? () from /usr/lib/libX11.so.6
#7  0x00007fa0f27ec001 in ?? () from /usr/lib/libX11.so.6
#8  0x00007fa0f27ec433 in _XimRead () from /usr/lib/libX11.so.6
#9  0x00007fa0f27db0d0 in _XimProtoCreateIC () from /usr/lib/libX11.so.6
#10 0x00007fa0f27ca09d in XCreateIC () from /usr/lib/libX11.so.6
#11 0x00007fa0eb59671d in QXIMInputContext::setHolderWidget () from /usr/lib/qt3/plugins/inputmethods/libqxim.so
#12 0x00007fa0f3a46430 in QInputContextFactory::create () from /usr/lib/libqt-mt.so.3
#13 0x00007fa0ebbd19d3 in QMultiInputContext::changeInputMethod () from /usr/lib/qt3/plugins/inputmethods/libqimsw-multi.so
#14 0x00007fa0ebbd1b68 in QMultiInputContext::slave () from /usr/lib/qt3/plugins/inputmethods/libqimsw-multi.so
#15 0x00007fa0ebbd1d73 in QMultiInputContext::setHolderWidget () from /usr/lib/qt3/plugins/inputmethods/libqimsw-multi.so
#16 0x00007fa0f3a46430 in QInputContextFactory::create () from /usr/lib/libqt-mt.so.3
#17 0x00007fa0f37a4540 in QWidget::createInputContext () from /usr/lib/libqt-mt.so.3
#18 0x00007fa0f37a4833 in QWidget::resetInputContext () from /usr/lib/libqt-mt.so.3
#19 0x00007fa0f39c6814 in QTextEdit::setText () from /usr/lib/libqt-mt.so.3
#20 0x00007fa0f39b9c46 in QTextBrowser::setText () from /usr/lib/libqt-mt.so.3
#21 0x00000000005197ba in VBoxSelectorWnd::vmListBoxCurrentChanged ()
#22 0x0000000000519b1f in VBoxSelectorWnd::languageChange ()
#23 0x00000000005226fa in VBoxSelectorWnd::VBoxSelectorWnd ()
#24 0x00000000004e1f28 in VBoxGlobal::selectorWnd ()
#25 0x00000000004d63b2 in main ()

ということで、QXIMInputContext::setHolderWidgetが戻ってこないためのようだ。ということは、LANG環境変数を変えて起動してみる。

makoto@localhost:~$ LANG=C /usr/bin/virtualbox

起動できた。Qtっぽい話のようだけど、とりあえず、VirtualBoxのTracへ登録。bug #1426

2008-04-09

N82のアップデート

Nokia N82のアップデートが来ました。Flash Liteが3にアップデートされたのと、Widgetsのサポートがメインです。

エクスプローラがお亡くなりになる

最近よくエクスプローラがお亡くなりになるので、デバッガで見てみた。

0:028> ~22kb
ChildEBP RetAddr  Args to Child
04fef428 7c94e9ab 7c86372c 00000002 04fef570 ntdll!KiFastSystemCallRet
04fef42c 7c86372c 00000002 04fef570 00000001 ntdll!ZwWaitForMultipleObjects+0xc
04fefb6c 7c83ab20 04fefb94 7c839b09 04fefb9c kernel32!UnhandledExceptionFilter+0x8e4
04fefb74 7c839b09 04fefb9c 00000000 04fefb9c kernel32!BaseThreadStart+0x4d
04fefb9c 7c9437bf 04fefc88 04feffdc 04fefca4 kernel32!_except_handler3+0x61
04fefbc0 7c94378b 04fefc88 04feffdc 04fefca4 ntdll!ExecuteHandler2+0x26
04fefc70 7c94eafa 00000000 04fefca4 04fefc88 ntdll!ExecuteHandler+0x24
04fefc70 045ec171 00000000 04fefca4 04fefc88 ntdll!KiUserExceptionDispatcher+0xe
04feff9c 045f13fc 04078f80 89526a98 00230022 ivimp3en!DriverProc+0xa5096
04feffb4 7c80b683 04078f80 0407b378 00230022 ivimp3en!DriverProc+0xaa321
04feffec 00000000 045f1380 04078f80 00000000 kernel32!BaseThreadStart+0x37

0:028> dd 04fefb94 l2
04fefb94  04fefc88 04fefca4

0:028> .exr 04fefc88
ExceptionAddress: 045ec171 (ivimp3en!DriverProc+0x000a5096)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000008
   Parameter[1]: 045ec171
Attempt to execute non-executable address 045ec171

0:028> .cxr 04fefca4
eax=00000000 ebx=00000002 ecx=00000000 edx=00000000 esi=04079380 edi=00000360
eip=045ec171 esp=04feff70 ebp=04feff9c iopl=0         nv up ei ng nz ac po cy
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010297
ivimp3en!DriverProc+0xa5096:
045ec171 0000             add     [eax],al                ds:0023:00000000=??

0:028> lmvm ivimp3en
start    end        module name
04540000 04613000   ivimp3en   (export symbols)       C:\WINDOWS\system32\ivimp3en.acm
    Loaded symbol image file: C:\WINDOWS\system32\ivimp3en.acm
    Image path: C:\WINDOWS\system32\ivimp3en.acm
    Image name: ivimp3en.acm
    Timestamp:        Sat Nov 10 10:02:22 2001 (3BEC7C9E)
    CheckSum:         0005E7D5
    ImageSize:        000D3000
    File version:     1.1.0.0
    Product version:  1.1.0.0
    File flags:       A (Mask 30003F) Pre-release Private
    File OS:          10001 DOS Win16
    File type:        3.8 Driver
    File date:        00000000.00000000
    Translations:     0409.04e4 0411.04e4
    CompanyName:      Intervideo Inc.
    ProductName:      InterVideo MP3 ACM CODEC
    InternalName:     IviMp3En.acm
    OriginalFilename: IviMp3En.acm
    ProductVersion:   1.10
    FileVersion:      1.10
    PrivateBuild:
    SpecialBuild:
    FileDescription:  InterVideo MP3 ACM CODEC
    LegalCopyright:   Copyright 2001 Intervideo Inc.
    LegalTrademarks:
    Comments:

WinDVDのCodecかぁ。はずしてみて、様子見てみるかなぁ。WinDVDアップグレードするのもばからしいし。

2008-04-01

Dromaeo - JavaScript Performance Testing

DromaeoというMozilla.com製のJavaScript Benchmark Toolがリリースされてた。なので、ちょっとテスト。

Firefox 3がなんとか逃げ切っているけど、Safariと互角くらい