|
From: | Richard Henderson |
Subject: | Re: [Qemu-devel] Debian 7.8.0 SPARC64 on qemu - anything i can do to speedup the emulation? |
Date: | Thu, 20 Aug 2015 10:19:23 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
On 08/19/2015 07:41 AM, Artyom Tarasenko wrote:
Without the patch: time g++ -DHAVE_CONFIG_H -I. -I../binutils-gdb/gold -I../binutils-gdb/gold -I../binutils-gdb/gold/../include -I../binutils-gdb/gold/../elfcpp -DLOCALEDIR="\"/usr/local/share/locale\"" -DBINDIR="\"/usr/local/bin\"" -DTOOLBINDIR="\"/usr/local//bin\"" -DTOOLLIBDIR="\"/usr/local//lib\"" -W -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -frandom-seed=tilegx.o -I../binutils-gdb/gold/../zlib -g -O2 -MT tilegx.o -MD -MP -MF .deps/tilegx.Tpo -c -o tilegx.o ../binutils-gdb/gold/tilegx.cc real 18m31.407s user 18m23.661s sys 0m6.784s The patch surely improves the situation, tcg_optimize in the perf top takes ~7% (instead of~12%), and the only function marked red by perf-top is init_temp_info(). So with the patch: real 17m46.380s user 17m37.522s sys 0m7.120s And if I completely disable optimizer (// #define USE_TCG_OPTIMIZATIONS in tcg.c), it's still quite faster: real 14m17.668s user 14m10.241s sys 0m6.060s
This isn't surprising, because at the moment tcg optimizations are almost completely ineffective for sparc. The way the register windows are implemented means that there are very few proper tcg temporaries to optimize.
I've just updated an old branch that attempts to cure this. It creates proper tcg temporaries for the windowed registers, and uses a bit of recursion to find the place at which they should be stored.
git://github.com/rth7680/qemu.git tcg-indirectWith a few quick unscientific tests, it appears to help. It would be nice to put that branch side-by-side with your tests above.
r~
[Prev in Thread] | Current Thread | [Next in Thread] |