Kernel dynamic memory analysis

From eLinux.org
Revision as of 18:20, 15 August 2012 by Tim Bird (Talk | contribs) (Created page with "This page has notes and results from the project Kernel dynamic memory allocation tracking and reduction [This page is fairly random at the moment...] == Instrumentation ==...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page has notes and results from the project Kernel dynamic memory allocation tracking and reduction

[This page is fairly random at the moment...]

Instrumentation

  • slab_accounting patches
    • use __builtin_return_address(0) to record the address of the caller
      • this same mechanism used by kmem events
      • if gcc decides to inline automatically, you get the wrong call site
        • can disable automatic inlinining with a compiler flag
    • starts from very first allocation
  • kmem events
    • does not start until ftrace system is initialized, after some allocations are already performed

Reporting

  • extracting data to host
    • tool for extraction (perf?)
  • post-processing the data
    • grouping allocations (assigning to different subsystems, processes, or functional areas)
      • idea to post-process kmem events and correlate with */built-in.o
    • reporting on wasted bytes
    • reporting on memory fragmentation

Visualization

    • possible use of treemap to visualize the data

Mainline status

  • is anything added to mainline via this project?

Recommendations for reductions

???