Where olpc machine spending time when using web broswer

Vladimir Makarov vmakarov at redhat.com
Tue Mar 13 13:04:22 EDT 2007


William Cohen wrote:

> William Cohen wrote:
>
>> Looked at where the processor spends its time when browsing the web.
>>
>> Hardware configuration:
>>
>>  OLPC Beta 2 machine
>>  Linksys USB200M USB 10/100 for ethernet connection
>>  4GB memorex Mini Travel Drive for storage of image
>>
>>
>> Software configuration:
>>
>>  /tmp/olpc-redhat-stream-development-build-299-20070308_1417-devel_ext3.img
>>  kernel-2.6.21-20070309.olpc1p.dc5079fafb767e4
>>  oprofile-0.9.2-3.fc6
>
>
>
> Re ran the experiment on build 301 and installed the 
> xorg-x11-server-debuginfo-1.1.99.3-0.10.2.olpc1.i386.rpm on the olpc 
> machine, so I could take a look at where time is being spent in libfb.so.

I don't know what version of gcc and options were used to compile the 
packages.  If somebody points me where to look at this, I could be more 
sure.  It looks to me that the packages were compiled without usage of 
tunnning gcc to geode.  The div and mod insn are expensive in geode. 
 Usage of div or shifts are choosen in gcc expmed.c and this is directed 
by costs defined by -mtune or -march.

I already did gcc tunning to geode (pipeline description, code costs, 
i386 port parameter values) and submitted it to the gcc mainline.  As I 
know Jakub Julinek was going to backport this code to redhat gcc.  So I 
can guess that if the right compiler and options are used, it will make 
code faster (and several % smaller because -mtune=geode generates 
smaller code that any other tuning).

I somebody need a help to speed up some (critical) code for OLPC by 
choosing right options (like usage of mmx insn and vectorization and 
other numerous possibilities), I could help too.  Please let me know. 
 If I have an OLPC machine, I can do it.

>
> # opreport -t 1 -l /usr/bin/Xorg
> CPU: CPU with timer interrupt, speed 0 MHz (estimated)
> Profiling through timer interrupt
> samples  %        image name               symbol name
> 6514     68.1096  libfb.so                 fbFetchTransformed
> 613       6.4095  libfb.so                 fbFetchPixel_x8r8g8b8
> 446       4.6633  libfb.so                 
> fbCompositeSolidMask_nx8x0565mmx
> 252       2.6349  libfb.so                 fbStore_r5g6b5
> 169       1.7670  libfb.so                 fbRasterizeEdges
> 137       1.4325  libfb.so                 fbCompositeSrc_8888x0565mmx
> 113       1.1815  libfb.so                 fbCopyAreammx
> 99        1.0351  libfb.so                 mmxCombineOverU
>
> The attached file is a portion of the output from opannotate. There is 
> a group of MOD operations that are taking a significant portion of the 
> time. The first column is the number of samples and the second column 
> is the percentage.
>
>    398  6.1099 :                        x1 = MOD (x1, 
> pict->pDrawable->width);
>    383  5.8796 :                        x2 = MOD (x2, 
> pict->pDrawable->width);
>    336  5.1581 :                        y1 = MOD (y1, 
> pict->pDrawable->height);
>    355  5.4498 :                        y2 = MOD (y2, 
> pict->pDrawable->height);
>
> Following this there are also some other expensive operations to 
> compute r. and put it into buffer[i].
>
> -Will
>





More information about the Devel mailing list