Feature roadmap/General UI sluggishness: Difference between revisions
No edit summary |
m (use <trac> for bug, add <br> to make first '*' a bullet) |
||
(4 intermediate revisions by one other user not shown) | |||
Line 3: | Line 3: | ||
|Feature subcategory=Performance |
|Feature subcategory=Performance |
||
|Requesters=Uruguay, Peru |
|Requesters=Uruguay, Peru |
||
|Requirements= |
|Requirements=<br> |
||
* For all of the following, the times measured should apply when the XO is connected to a wireless AP and running Write with a file of less than 1 MB. This is used as a sample "state of the machine" definition. Other definitions of state of the machine are welcome and the performance when the XO is doing more (e.g. more activities open or moving data over the Wireless) should not degrade precipitously. |
* For all of the following, the times measured should apply when the XO is connected to a wireless AP and running Write with a file of less than 1 MB. This is used as a sample "state of the machine" definition. Other definitions of state of the machine are welcome and the performance when the XO is doing more (e.g. more activities open or moving data over the Wireless) should not degrade precipitously. |
||
* The time between when the user interacts (e.g. clicks or enters a key stroke) when the result is visible on the screen should be less than 100ms. Specific cases are listed below and when the absolute number above is not achievable, a target percentage improvement is listed. |
* The time between when the user interacts (e.g. clicks or enters a key stroke) when the result is visible on the screen should be less than 100ms. Specific cases are listed below and when the absolute number above is not achievable, a target percentage improvement is listed. |
||
Line 31: | Line 31: | ||
'''CPU cycle and process optimization''' <br> |
'''CPU cycle and process optimization''' <br> |
||
* Fixing |
* Fixing <trac>4680</trac> in PyGTK+, which causes every multithreaded Python GTK+ program to uselessly poll ten times a second. |
||
'''System level tests''' <br> |
'''System level tests''' <br> |
||
Line 44: | Line 44: | ||
http://screamingduck.com/Cruft/cairo_benchmark_2GHz_E2180.txt <br> |
http://screamingduck.com/Cruft/cairo_benchmark_2GHz_E2180.txt <br> |
||
http://screamingduck.com/Cruft/cairo_benchmark_XO_NoAccel.txt <br> |
http://screamingduck.com/Cruft/cairo_benchmark_XO_NoAccel.txt <br> |
||
* Tools: [[Performance tuning]] lists tools and techniques |
|||
* Tools: <br> |
|||
http://wiki.laptop.org/go/Performance_tuning |
|||
== Test data comparison == |
|||
Thanks Jordan for data and code analysis below! (read wiki code for proper formatting) <br> |
|||
Test Accel Noaccel Delta<br> |
Test Accel Noaccel Delta<br> |
||
------------------------------------------------------------------<br> |
------------------------------------------------------------------<br> |
||
Line 129: | Line 129: | ||
# The accel path doesn't punt to unaccel early enough. |
# The accel path doesn't punt to unaccel early enough. |
||
'''Possible driver bug''' |
|||
textpath-xlib and texturedtext-xlib toss up a huge red flag - I am guessing we are probably seeing a bug in the driver. <br> |
textpath-xlib and texturedtext-xlib toss up a huge red flag - I am guessing we are probably seeing a bug in the driver. <br> |
||
As before, I encourage you to investigate which operation are heavily used - if you don't use textured text very much, then optimizing it would be heavily on the geek points, but not very useful in the long haul. |
As before, I encourage you to investigate which operation are heavily used - if you don't use textured text very much, then optimizing it would be heavily on the geek points, but not very useful in the long haul. |
||
==X optimization suggestions== |
|||
From http://lists.laptop.org/pipermail/devel/2008-December/022036.html <br> |
|||
The majority of the operations will probably be composite operations. You will want to instrument the three composite hooks in the X driver and their sub-functions: lx_check_composite, lx_prepare_composite, and lx_do_composite (in lx_exa.c). |
The majority of the operations will probably be composite operations. You will want to instrument the three composite hooks in the X driver and their sub-functions: lx_check_composite, lx_prepare_composite, and lx_do_composite (in lx_exa.c). |
||
Latest revision as of 21:57, 31 December 2008
Feature subcategory | Is part of::Category:Performance | |
Requesters | {{#arraymap:Uruguay, Peru|,|x|Requested by::x}} | |
Requirements |
| |
Specification | See previous threads on this here: http://lists.laptop.org/pipermail/sugar/2008-July/007471.html Thread on SVG graphics performance here: Suggestions from John Gilmore (e-mail here: http://lists.laptop.org/pipermail/devel/2008-December/021595.html)
System memory usage optimization
CPU cycle and process optimization
System level tests
Graphics performance
Side by side Cairo graphics performance tests between a 2Ghz PC and XO
Test data comparisonThanks Jordan for data and code analysis below! (read wiki code for proper formatting) textpath-xlib-textpath 1562.60 1345.12 217.48 Three reasons why unaccel would be faster then accel
Possible driver bug
textpath-xlib and texturedtext-xlib toss up a huge red flag - I am guessing we are probably seeing a bug in the driver. X optimization suggestionsFrom http://lists.laptop.org/pipermail/devel/2008-December/022036.html lx_check_composite is the function where EXA checks to see if we are willing to do the operation at all - most of the acceleration rejects should happen here. lx_prepare_composite is where we store the information we need for the ensuing composite operation(s) - we can also bail out here, but there is an incremental cost in leading EXA further down the primrose path before rejecting it. lx_do_composite() obviously is where the operation happens. You will want to concentrate on these functions - instrument the code to figure out why we accept or reject an operation and why we take so long in rejecting certain operations. Profiling these functions may also help you figure out where we are spending our time. | |
Owners | {{#arraymap:MarcoPesentiGritti, Erik, Gregorio|,|x|Contact person::User:x}} | |
Priority | Priority::2 | |
Helps deployability? | Helps deployability::no | |
Target for 9.1? | Target for 9.1::no |