Tracing Discussion
ARM Tracing Presentation - Al Grant (ARM)
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.
Discussion Topics
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..
Discussion
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.
D'Objects
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
DTrace and PMC
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.