[sugar] composite memory usage [was Re: frame auto-visibility configuration]
Erik Garrison
erik at laptop.org
Wed Sep 24 14:56:14 EDT 2008
On Wed, Sep 24, 2008 at 07:51:30PM +0200, Tomeu Vizoso wrote:
> On Wed, Sep 24, 2008 at 7:25 PM, Eduardo H. Silva <hoboprimate at gmail.com> wrote:
> > Wow, just tried Erik's instructions for using xcompmgr, and it's
> > amazing how swift the frame slides, and how I don't see any screen
> > redraws. The experience is totally more fluid. Does it degrade overall
> > performance? If not much, and if that performance degradation could be
> > recovered in another area in Sugar (general performanfe improvements),
> > I'd vote for this to exist in joyride and even part of future stable
> > builds.
>
> AFAIK, the only tradeback (and the reason why it hasn't been activated
> yet) is that we must pay composition with increased memory usage.
> Composition basically saves us unnecessary redraws by keeping in
> memory copies of the windows contents.
>
> Martin Dengler did back in March an excellent job quantifying this tradeback:
>
> http://lists.laptop.org/pipermail/sugar/2008-March/004718.html
Using similar methods (ps_mem.py), I get roughly the same results.
I run ps_mem.py at five places, before and after enabling composite with
0 to 4 activites running (Chat, Paint, Write, and Browse). (I get ten
files named {before,after}_*_activity, and then grep them to make
comparitive claims.)
We can see that Activities use about the same amount of memory before
and after the change:
e.g. Paint:
before_1_activity: 9.3 MiB + 4.2 MiB = 13.5 MiB Paint <65be2c3b
before_2_activity: 9.2 MiB + 3.1 MiB = 12.3 MiB Paint <65be2c3b
before_3_activity: 9.4 MiB + 2.5 MiB = 11.9 MiB Paint <65be2c3b
before_4_activity: 9.4 MiB + 2.1 MiB = 11.5 MiB Paint <65be2c3b
after_1_activity: 9.3 MiB + 4.2 MiB = 13.5 MiB Paint <eb84d7a4
after_2_activity: 9.3 MiB + 3.1 MiB = 12.4 MiB Paint <eb84d7a4
after_3_activity: 9.2 MiB + 2.5 MiB = 11.7 MiB Paint <eb84d7a4
after_4_activity: 9.2 MiB + 2.1 MiB = 11.3 MiB Paint <eb84d7a4
e.g. Write:
before_3_activity: 19.4 MiB + 2.8 MiB = 22.2 MiB Write <d2756bab
before_4_activity: 19.4 MiB + 2.4 MiB = 21.8 MiB Write <d2756bab
after_3_activity: 19.4 MiB + 2.8 MiB = 22.2 MiB Write <d863e164
after_4_activity: 19.4 MiB + 2.4 MiB = 21.8 MiB Write <d863e164
However, there is an obvious memory difference between the two
situations:
[ total memory usage ]
before_0_activity- 86.4 MiB
before_1_activity- 98.0 MiB
before_2_activity- 126.6 MiB
before_3_activity- 146.2 MiB
before_4_activity- 154.9 MiB
after_0_activity- 88.5 MiB
after_1_activity- 109.8 MiB
after_2_activity- 138.0 MiB
after_3_activity- 162.7 MiB
after_4_activity- 173.2 MiB
When composition is enabled, we used 18.3 MiB more to run the same 4
activities.
Following Martin Dengler's lead, we discover that this memory is mostly
used by the X server:
bash-3.2# grep Xorg before*
before_0_activity: 3.1 MiB + 390.5 KiB = 3.5 MiB Xorg
before_1_activity: 3.2 MiB + 430.0 KiB = 3.6 MiB Xorg
before_2_activity: 3.4 MiB + 420.0 KiB = 3.9 MiB Xorg
before_3_activity: 3.7 MiB + 509.5 KiB = 4.2 MiB Xorg
before_4_activity: 3.7 MiB + 507.5 KiB = 4.2 MiB Xorg
bash-3.2# grep Xorg after*
after_0_activity: 3.0 MiB + 342.5 KiB = 3.3 MiB Xorg
after_1_activity: 10.9 MiB + 445.0 KiB = 11.4 MiB Xorg
after_2_activity: 13.1 MiB + 425.5 KiB = 13.5 MiB Xorg
after_3_activity: 18.0 MiB + 506.0 KiB = 18.5 MiB Xorg
after_4_activity: 19.9 MiB + 504.0 KiB = 20.4 MiB Xorg
A little under 15 MiB of increase.
>
> I'd vote for activating composition ASAP once we have a 9.1 joyride
> branch and see how we can find the sweetest spot between speed and
> memory usage.
>
I agree.
There also may be bugs which we need to shake out. If this is a feature
we know we want for 9.1, the sooner we start testing the better.
Erik
More information about the Sugar
mailing list