====== 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. ---- {{tag>Historical}}