Speed/latency issues for development in a Wine environment

Alan W. Irwin irwin at beluga.phys.uvic.ca
Sat Jun 19 22:46:55 CDT 2010


On 2010-06-20 11:16+1000 Jeff Zaroyko wrote:

> On Sun, Jun 20, 2010 at 12:50 AM, Alan W. Irwin
> <irwin at beluga.phys.uvic.ca> wrote:
>> Thanks very much Jeff, for providing some independent timing numbers for
>> startup latency which are an order of magnitude (!) smaller than mine.
>> So what is different about our wine platforms to cause that huge
>> difference?  More below.
>>
>> On 2010-06-19 12:55+1000 Jeff Zaroyko wrote:
>>
>>>
>>> Windows:
>>> $ time gcc --version
>>> gcc.exe (GCC) 3.4.5 (mingw-vista special r3)
>>> Copyright (C) 2004 Free Software Foundation, Inc.
>>> This is free software; see the source for copying conditions.  There is NO
>>> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
>>> PURPOSE.
>>>
>>> real    0m0.020s
>>> user    0m0.000s
>>> sys     0m0.015s
>>>
>>> Wine:
>>> jeffz at genera:~$ WINEPREFIX=/home/jeffz/wine-cpbench time
>>> ~/git/wine/wine "c:\mingw\bin\gcc" "--version"
>>> gcc.exe (GCC) 3.4.5 (mingw-vista special r3)
>>> Copyright (C) 2004 Free Software Foundation, Inc.
>>> This is free software; see the source for copying conditions.  There is NO
>>> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
>>> PURPOSE.
>>>
>>> 0.00user 0.01system 0:00.02elapsed 66%CPU (0avgtext+0avgdata
>>> 0maxresident)k
>>> 0inputs+0outputs (0major+1567minor)pagefaults 0swaps
>>
>> So to the level of your measurement precision you are consistently getting
>> 20 ms elapsed time for both Windows and Wine for the gcc --version
>> experiment on boxes very similar to mine.  For the same experiment (I went
>> out of my way to use the same syntax you did) I am getting ~150 ms for one X
>> server and ~300 ms for the other.  So that is an order of magnitude
>> difference in our results.  When I can reduce my wine application startup
>> latency to 20 ms, I will be a happy camper, but the question is how can
>> I do that?
>>
>> One difference between us is I am using MinGW-4.5.0-1, but it is hard to
>> believe that the time taken to process the --version option for that has
>> changed so drastically from your gcc-3.4.5.  Also, I believe the startup
>> latency on my platform is a general problem on my platform
>> and nothing to do with gcc.  I
>> get essentially identical startup latency results with "mingw32-make
>> --version" and "gcc --version".  "cmake --version" tends to be about 10 per
>> cent longer than the other two.  Presumeably you have convenient access to
>> mingw32-make. Do you also get only ~20 ms startup latency for that?
>
> Wine 1.2-rc3:
> jeffz at genera:~$ WINEPREFIX=/home/jeffz/wine-cpbench time
> ~/git/wine/wine "c:\mingw\bin\mingw32-make.exe" "--version"
> GNU Make 3.81
> Copyright (C) 2006  Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.
> There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> PARTICULAR PURPOSE.
>
> This program built for i386-pc-mingw32
> 0.09user 0.02system 0:00.14elapsed 81%CPU (0avgtext+0avgdata 0maxresident)k
> 0inputs+0outputs (0major+8432minor)pagefaults 0swaps
>
> Windows:
> $ time mingw32-make.exe --version
> GNU Make 3.81
> Copyright (C) 2006  Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.
> There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> PARTICULAR PURPOSE.
>
> This program built for i386-pc-mingw32
>
> real    0m0.030s
> user    0m0.015s
> sys     0m0.000s

So for mingw32-make our wine startup latencies are essentially identical
(near 150 ms) and substantially worse than the Windows numbers (30 ms) and
much worse than the Linux numbers (~1 ms).  "make" startup latency matters
for builds configured by CMake because typically the top-level Makefile
is configured in a way to run make many times per
build.

"cmake" startup latency also matters a lot because special modes for it are
used during the build (typically two times per object file that is compiled
by gcc) to figure out dependencies, keep track of progress, etc. If you are
game for one more download (from
http://cmake.org/cmake/resources/software.html) what are your cmake
--version startup latency numbers?

Of course, the gcc startup latency matters as well (for builds made with
lots of different source files), but perhaps our numbers vary there because
of our different MinGW gcc versions. If you are interested in trying the
MinGW 4.5.0-1 compiler, it and its dependencies are available from
http://sourceforge.net/projects/mingw/files/MinGW/BaseSystem.

>> The other thing that bothers me is I get the same identical result whether
>> wineserver is active or not.  Can you confirm that for your wine timing
>> experiment or is that an unusual result?

I am still interested in that question.

>>
>> Other data here that may be relevant to the comparison with you:
>>
>> My hardware is 64-bit.
>>
>> Linux raven 2.6.26-2-amd64 #1 SMP Wed May 12 18:03:14 UTC 2010 x86_64
>> GNU/Linux
>
> Likewise, but an older kernel:
> Linux genera 2.6.22-15-generic #1 SMP Fri Jul 11 18:56:36 UTC 2008
> x86_64 GNU/Linux
> X.Org X Server 1.4.0.90
> 8GB of ram, 6GB of swap.

2GB ram, 6GB swap here.

>
>> I am running 32-bit wine (wine-1.2-rc3 compiled with the -O3 option for
>> Debian Lenny) which uses the following libraries:
>>
>> irwin at raven> ldd /home/software/wine/install/bin/wine
>>        linux-gate.so.1 =>  (0xf77a2000)
>>        libwine.so.1 => /home/software/wine/install/bin/../lib/libwine.so.1
>> (0xf765d000)
>>        libpthread.so.0 => /lib32/libpthread.so.0 (0xf7625000)
>>        libc.so.6 => /lib32/libc.so.6 (0xf74d3000)
>>        libdl.so.2 => /lib32/libdl.so.2 (0xf74ce000)
>>        /lib/ld-linux.so.2 (0xf77a3000)
>
> Ubuntu 8.04
> I've compiled from git with the default -O2.
>
> I'm running wine from the source directory as you may have noticed.
> jeffz at genera:~$ ldd git/wine/loader/wine
> 	linux-gate.so.1 =>  (0xffffe000)
> 	libwine.so.1 => /home/jeffz/git/wine/loader/../libs/wine/libwine.so.1
> (0xf7deb000)
> 	libpthread.so.0 => /lib32/libpthread.so.0 (0xf7dd2000)
> 	libc.so.6 => /lib32/libc.so.6 (0xf7c83000)
> 	libdl.so.2 => /lib32/libdl.so.2 (0xf7c7f000)
> 	/lib/ld-linux.so.2 (0xf7f2d000)
>
>
>> Previously, I got ~50 per cent larger startup latency numbers with the
>> Debian Lenny package for wine-1.1.42 provided by WineHQ which is why I
>> switched to to building my own wine-1.2-rc3, but 150 ms with the latter just
>> doesn't cut it compared to your 20 ms.
>
> Are you still compiling with -O3 here?

Yes.  I will try -O2 also just to match as closely as possible to you,
but I think that is a reach.

In sum, you do have one rather large startup latency for mingw32-make that
agrees with mine and which confirms the problem in that case and a much
shorter startup latency for an old version of MinGW compared to mine.  So
the results are currently ambiguous, but we will find out more if you are
willing to do the appropriate downloads of CMake and modern MinGW gcc.

Thanks for your continuing help in narrowing down the factor(s) that are
killing performance for CMake-based builds under Wine.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__________________________

Linux-powered Science
__________________________



More information about the wine-devel mailing list