tree: 7901e9ac0f715c6171bda408dfdf9c7e32e95858 [path history] [tgz]
  1. bookkeeping.cc
  2. bookkeeping.h
  3. bookkeeping_unittest.cc
  4. bounded_queue.h
  5. bounded_queue_unittest.cc
  6. BUILD.gn
  7. client.cc
  8. client.h
  9. client_unittest.cc
  10. heapprofd_integrationtest.cc
  11. heapprofd_producer.cc
  12. heapprofd_producer.h
  13. interner.h
  14. interner_unittest.cc
  15. main.cc
  16. malloc_hooks.cc
  17. queue_messages.h
  18. README.md
  19. record_reader.cc
  20. record_reader.h
  21. record_reader_unittest.cc
  22. sampler.cc
  23. sampler.h
  24. sampler_unittest.cc
  25. socket_listener.cc
  26. socket_listener.h
  27. socket_listener_unittest.cc
  28. unwinding.cc
  29. unwinding.h
  30. unwinding_fuzzer.cc
  31. unwinding_unittest.cc
  32. wire_protocol.cc
  33. wire_protocol.h
  34. wire_protocol_unittest.cc
src/profiling/memory/README.md

heapprofd - Android Heap Profiler

These are temporary instructions while heapprofd is under development. They are subject to frequent change and will be obsoleted once heapprofd is integrated into Perfetto.

Currently heapprofd only works with SELinux disabled and when run as root.

To start profiling the process ${PID}, run the following sequence of commands. Adjust the INTERVAL to trade-off runtime impact for higher accuracy of the results. If INTERVAL=1, every allocation is sampled for maximum accuracy. Otherwise, a sample is taken every INTERVAL bytes on average.

INTERVAL=128000

adb shell su root setenforce 0
adb shell su root start heapprofd

echo '
buffers {
  size_kb: 100024
}

data_sources {
  config {
    name: "android.heapprofd"
    target_buffer: 0
    heapprofd_config {
      sampling_interval_bytes: '${INTERVAL}'
      pid: '${PID}'
      continuous_dump_config {
        dump_phase_ms: 10000
        dump_interval_ms: 1000
      }
    }
  }
}

duration_ms: 20000
' | adb shell perfetto -t -c - -o /data/misc/perfetto-traces/trace

adb pull /data/misc/perfetto-traces/trace /tmp/trace

TODO(fmayer): Add instructions how to visualize the trace.