Memory Footprint

Registered by Duncan McGreggor

Discuss possibilities for reducing memory footprint to improve performance, and identify useful optimisations and investigations which should be carried out.

Blueprint information

Status:
Started
Approver:
Steve Langasek
Priority:
High
Drafter:
John Rigby
Direction:
Needs approval
Assignee:
Dave Martin
Definition:
Review
Series goal:
Accepted for maverick
Implementation:
Started
Milestone target:
milestone icon ubuntu-10.10-beta
Started by
Dave Martin

Related branches

Sprints

Whiteboard

[dmart 2010-07-10]: Investigate mklibs is POSTPONED as vorlon reckons this isn't a promising line of enquiry for now -- not applicable to general-purpose environments)
[asac 22 Jun 10]: with davem being gone for a few weeks still, nothing will happen for alpha-2; targetting investigation items for alpha-3 and beta for implementation pieces accordingly. Please adjust and talk to me or approver if you think that targetting is completely off

Status:
Preliminary investigation is done; now focusing on manual profiling and basic bootchart integration to identify Ubuntu/linaro components which need attention. No systemic changes expected to land for 10.11.
Bootchart packages with experimental memory usage logging support can be found in Dave Martin's PPA: see
https://launchpad.net/~dave-martin-arm/+archive/ppa

Work items (maverick-alpha-3):
[cjwatson] pointers on how to use compiler wrappers to achieve feedback-directed optimisation: DONE
[dave-martin-arm] investigate exmap-console, sar and frysk: DONE
[dave-martin-arm] investigate atop and smem: DONE
[guillaume-letellier] get feedback from Julian Seward about availability of callgrind: DONE
[dave-martin-arm] investigate tools for dead code removal: POSTPONED
[dave-martin-arm] investigate how we could do coverage measurement to assess the amount of unused code/data in binaries: POSTPONED
[dave-martin-arm] investigate mklibs: POSTPONED

Work items (ubuntu-10.10-beta):
[dave-martin-arm] investigate extending bootchart to measure memory usage: INPROGRESS
[dave-martin-arm] kernel tuning for optimised memory utilization: POSTPONED
[dave-martin-arm] determine which reduction efforts should go into Maverick: DONE
[dave-martin-arm] document what reduction efforts should be investigated in Maverick+1: TODO
[dave-martin-arm] select target profile: DONE
[dave-martin-arm] define "memory footprint": DONE

Work items (ubuntu-10.10):
[dave-martin-arm] investigate compiler options (-Os): DONE

Later work items:
[richard-earnshaw] follow up with codesourcery about memory optimisation including hot/cold partitioning support: TODO
[richard-earnshaw] follow up on: http://elinux.org/images/2/2d/ELC2010-gc-sections_Denys_Vlasenko.pdf (not available yet for ARMv7 but being worked on): TODO

Even later work items:

[paul-e-mckenney] merge SRCU into tree/tiny implementations (should reduce memory footprint, especially for UP kernels): TODO

Removed work items:
[dave-martin-arm] investigate the maemo sp-memusage and sp-smaps packages for integration in linaro+ubuntu [will revisit later if useful, but we have enough basic tools in Ubuntu for now]
[paul-e-mckenney] tiny implementation of preemptible RCU (currently only large-memory-footprint tree-based implementation): [Moved to https://blueprints.launchpad.net/linux-linaro/+spec/small-memory-footprint-rcus]
[paul-e-mckenney] preemptible RCU priority boosting (reduce memory footprint due to preempted RCU readers): [Moved to https://blueprints.launchpad.net/linux-linaro/+spec/small-memory-footprint-boosted-rcus]

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.