This area of work is focused on investigating, identifying & implementing optimizations in the base OS platform and applications. It will cover areas such as boot time, suspend / resume time, kernel VM operation under a no-swap scenario, application startup time, process memory footprint, application steady state behaviour (memory leaks / degrading performance over time), and anything else which will have a significant impact on the use of the OLPC platform.
Boot time profiling
The ideal scenario is that ACPI power management will work flawlessly so there will never be any need to shutdown / boot-up. It is, however, still useful to consider the boot process if only to ensure no unneccessary services are being started. Some of the techniques for this area:
Server side pixmap usage
When considering an application's memory footprint, it is not sufficient to merely look at the process's own memory usage. The X server will create & hold on to server side resources on behalf on the application. Some of these resources, in particular, pixmaps can consume very significant amounts of memory. The xrestop program can be used to monitor resource usage on a per-application basis, however, it does not provide a view into what the resources are being used for.
In the case of pixmaps, it is desirable to be able to get a dump of all pixmaps held for an application & visually eye-ball them to identify any resources which may be unneccessarily held. There isn't any support for doing this in the XResource extension, however, with some nasty LD_PRELOAD hacks it possible todo a man-in-the-middle attack to capture the pixmaps. This will enable questions such as 'How long after leaving a web page are the images released from memory?' to be easily answered, and if problems are identified regression tests written. Some related links:
- Epiphany memory use analysis
- Xorg Bug 2029 XRes does not give storage used for window background pixmap
- XResQueryClientPixmaps Matthew Alum's work to extend XRes to allow querying of list of pixmap IDs