You were redirected here from 201508devsummittracing.

Tracing Discussion

ARM has Streamline - does nice visualizations, uses sampling

He mentions http://www.dynamorio.org which is a tool for dynamic code instrumentation. Available under a BSD license.

CoreSight - IP blocks for ARM for debugging, DStream debugger via JTAG. AMBA Trace Bus for core tracing info.

~8 Gbit/s of trace data for a single core

Can use dedicated trace buffer or main memory

ARM and Intel tracing are very similar. Intel has Processor Trace

Program trace - branches, exceptions, data Software trace - messages under program control Hardware event trace - selected signals chosen by CPU designer Common global timestamp for all trace sources

Program trace - like Intel's Last Branch Record

Buffer sizes:

On-chip buffer (8-32 KB) Main memory (e.g., 8 MB) Offchip trace (e.g., 4 GB)

Software Trace Macrocell is like Intel Software Trace Hub

What's the simplest way to get this stuff into FreeBSD? (rwatson)

Integration of the CoreSight libraries. Code is from ARM under an Apache license and the rest is under BSD.

DTrace optimizations

Machine-readable output

Distributed DTrace

Documentation/Better frameworks

De-printfifying/Switching to use SDTs

CTF for packages

I/O statistics and other probes

MIB provider and parity with Solaris

Schedgraph and visualization tools

PMC integration, profiling

PMC BTS

gprof for other ISAs

Shipping LLVM IR to do profile guided optimization using BTS, etc..

EMC/Isilon clustered UFS appliance. Distributed locking. Latency stats across the distributed system. They use NTP for sync. Uses Itrace.

Windview

Dtrace object model - Get Dtrace to spit out some of its internal objects (arrays, etc.).

Need machine readable output

Use python to interact with DTrace objects

Schedgraph++ using DTrace objects

How do you debug IPC between programs? E.g., for chromium (IPCTrace)

New libdtrace needed for this

Can libxo do streaming? Sort of.

How would we incorporate processor stats? Something like PAPI.

libxo does not have schemas, but it might be useful for D to have a schema

CTF has limitations that DWARF doesn't.

Where might we use D'Objects?

- Python programming - General programme - C, C++, GO - Schedgraph++ - gprof replacement - IPC Trace - PMC tools

D'Objects requirements

- can be composed - first class type - structured type

Current proposal

fbt::: / / { x = pmc_start(…); // pid? pmc_end(x); pmc_result(…); }

Do we integrate stack() with our sampling infrastructure?

hwpmc table

system process
sampling
counting

- Lack of DTrace ā€œDā€ expressions; poor model - PMC atomicity

BEGIN { pmc_alloc() }; ???

- Turn On/Off PMC when entering DIL (DVM)?

How much do we integrate hwpmc with DTrace?

- Do we force an allocation in a probe so that others cannot allocate the same coiunter space? - We do not want to sample all the time so we need to handle that.


  • devsummit/201508/tracing.txt
  • Last modified: 2026/10/12 10:55
  • (external edit)