Friday, December 19, 2014

RAD Telemetry 2.1A Released!

This release brings major changes to the runtime implementation.


  • Change: the 2.1 runtime breaks compatibility with Telemetry 1.x servers.
  • Change: (PS3) SPU Telemetry runtime removed.
  • Change: TMO_RECORD_TELEMETRY_STALLS support dummied out - it had too much overhead to be useful.
  • Change: TMOF_DONT_KILL_OTHER_SESSIONS is now ignored; Telemetry always behaves as if it was on, i.e. server never kills existing live sessions from an app when the same app reconnects.
  • Change: Mac users, the Telemetry 2.1A runtime now requires OS X 10.7
  • Enhancement: The runtime now supports 64-bit iOS.
  • Enhancement: Significantly reduced Telemetry overhead - details depend on usage, but 2x-4x CPU time reduction is not uncommon.
  • Enhancement: checked builds of Telemetry are now faster and un-checked builds now allow enabling TMO_OUTPUT_DEBUG_INFO.
  • Enhancement: user-defined IO (via callbacks) is now officially supported.
  • Enhancement: Telemetry now fully supports closing sessions mid-stream (even while other threads are using the context) and re-opening them later - see $ug_context_lifecycle in the docs for details.
  • Enhancement: new TMO_BREAK_ON_WARNING to simplify tracking down causes of Telemetry API warnings.
  • Enhancement: much lower CPU overhead and network bandwidth usage for context switch tracking on all platforms that support it.
  • Enhancement: significantly reduced cost of call stack collection on Linux, OS X and iOS.
  • Enhancement: increased size and improved hit rate of unique call stack cache, reducing network bandwidth.
  • Enhancement: reduced size of zone events in network stream; typically 15-25% smaller.
  • Enhancement: filtered zones are now cheaper.
  • Enhancement: improved network IO patterns: Telemetry now frequently sends data in medium-sized blocks, instead of rarely sending very large ones.
  • Enhancement: explicitly detect and warn about incorrect use of format strings.
  • Enhancement: reduced processing time on IO ("telemetry") thread.
  • Bugfix: gracefully handle the case when Telemetry context string table overflows (don't just report all further strings as "unknown")
  • Bugfix: fix race condition in code that determines loaded modules/shared objects (triggered by opening two Telemetry contexts at once)


  • Change: status bar is now always shown.
  • Enhancement: width of track headers is now resizeable.
  • Enhancement: highlight long frames in zone view ruler.
  • Enhancement: zone view ruler shows length of shortest/longest frame when multiple frames are grouped.
  • Enhancement: improved text rendering quality.
  • Enhancement: add "centered" windows for generated plots.
  • Bugfix: fix Visualizer refusing to open sessions with less than 2 ticks in them.
  • Bugfix: fix handling of sessions with no available frametime plot.
  • Bugfix: don't draw thread tracks in zone view if there are no events for them.
  • Bugfix: fix visually jarring disappearance of timespan tracks when there's no visible events for them in current view.
  • Bugfix: fix zone sublabels (TMMF_ZONE_SUBLABEL) not being displayed.
  • Bugfix: fix positioning of very wide or very tall tooltips.
  • Bugfix: (OS X) fix frequent Visualizer crashes that started in 2.0P3 (long-standing bug exposed by switching from build with libstdc++ to libc++)
  • Bugfix: (OS X) fix checkboxes not being toggled on double-clicks.
  • Bugfix: (OS X) fix several symbolization bugs.


  • Change: update to SQLite, which brings performance improvements.
  • Enhancement: lots of internal optimizations. Datasets typically process ~2.3x faster and take up 30% less space on disk.
  • Enhancement: live mode updates views more regularly now.
  • Bugfix: fix server crashes on leaked tmEnter without matching tmLeave.
  • Bugfix: (Linux) fix a bug where some sessions stored on a Linux server would not show in the Visualizer.
  • Bugfix: fix bug where incorrect plots far in the future would be generated from TMZF_PLOT_TIME zones that were open across tick boundaries.
  • Bugfix: fix double-enumeration of active live sessions in certain cases.


  • Enhancement: improved tmxgpu implementation for PS4 and Wii U.