Friday, December 19, 2014

RAD Telemetry 2.1A Released!

This release brings major changes to the runtime implementation.

Run-time

  • 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)

Visualizer

  • 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.


Server

  • Change: update to SQLite 3.8.7.4, 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.


Other

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


Tuesday, November 11, 2014

RAD Telemetry 2.0P3 Released!

This is a bugfix release.

Run-time


  • Bugfix: use actual path of executable, not argv[0], to figure out where to look for libtelemetry.so.

Visualizer


  • Bugfix: fix data from live sessions only showing up with significant delay.
  • Bugfix: fix underscores not being visible in text edit fields.
  • Bugfix: fix "profiler" panel computing totals over incorrect range.
  • Bugfix: fix a crash on Linux.


Wednesday, September 10, 2014

RAD Telemetry 2.0P Released!

This release significantly improves the server- and visualizer-side handling of plots, locks and context switches.

Run-time


  • Bugfix: (Linux) Remove 'lsof scan' debug spew.
  • Bugfix: (PS4) Fix broken hostname resolution.

Visualizer


  • Enhancement: redesigned, more intuitive display of summary information for fast-changing plots.
  • Enhancement: show "density" of summarized zones using opacity.
  • Enhancement: significantly improved rendering of lock events in zone view.
  • Enhancement: context switch and lock tracks now display way more information when zoomed out.
  • Enhancement: display summary information about timespans too short to be visible at the current zoom level. 
  • Enhancement: new "plot per-frame totals" option for zones! (Right-click on zones in zone view.)
  • Enhancement: zone search now has "before selection" and "after selection" modes. 
  • Enhancement: added "count" aggregation function and leading windows to generated plots.
  • Bugfix: fixed numerous serious usability issues in text edit controls.
  • Bugfix: fix double-clicking on a range of frames in timeline view jumping to the wrong place in the zone view. 
  • Bugfix: panning the zone view didn't work in selection region unless mouse cursor was over a zone. 
  • Bugfix: draw profiler pane on top of selection, not the other way round. 
  • Bugfix: fix 60fps / 30fps markers in timeline view being drawn in the wrong position sometimes. 
  • Bugfix: modify 60Hz / 30Hz vertical scale modes to actually affect axis scaling again. 
  • Bugfix: fix plot scale factor in timeline view resetting on scroll. 
  • Bugfix: fix incorrect rendering/display of TMPT_PERCENTAGE_COMPUTED and TMPT_TIME plot values. 
  • Bugfix: fix caching bug where high-resolution plot information wouldn't get fetched in certain cases. 
  • Bugfix: fix buggy zone find "visible" behavior (would use wrong search range in certain cases) 
  • Bugfix: fix numerous small UI glitches. 
  • Change: cleaned up session view UI.

Server


  • Change: database schema is changed! If you have scripts/tools that read TDBs directly, please refer to the docs for a description of the new schema. 
  • Bugfix: fixed a per-connection memory leak.
  • Enhancement: reduced traffic between Server and Visualizer for plots. 
  • Enhancement: processed datasets with lots of plots, locks or context switches are typically 25-50% smaller. 
  • Enhancement: processing time of datasets with context switches or plots is significantly reduced, by up to 30% in our tests.

Other


  • Change: tm2export.py now writes CSV files in a slightly different format and produces one CSV file per plot instead of one CSV with all plots.

Friday, July 18, 2014

RAD Telemetry 2.0N Released!

This release focuses on making the Visualizer more responsive.

Run-time

  • Bugfix: fixed a bug where printf format strings containing 64-bit integers followed by strings would not work in certain cases.

Visualizer

  • Bugfix: fixed UI flickering on cursor-key scrolling when hitting edges of the dataset.
  • Bugfix: fixed a bug where semaphore lock counts would not get displayed in the visualizer.
  • Bugfix: fixed a bug where plot highlight state would flicker when scrolling.
  • Bugfix: fixed a bug where LOD plots wouldn't display min/max sometimes.
  • Bugfix: fixed bug where free location was incorrectly reported for long-lived allocations.
  • Bugfix: (OS X) fixed incorrect positioning of server status and search bars.
  • Bugfix: (OS X) dragging with middle mouse button to scroll now works the same way as on other platforms.
  • Enhancement: revised the protocol between Server and Visualizer. When using a dedicated server, network traffic to the visualizer is typically reduced by 5-6x!
  • Enhancement: significantly reduced data fetch times from server.
  • Enhancement: improved prefetching logic in the Visualizer. Waiting for data to load should happen much less often now.
  • Enhancement: UI is now much more responsive when lots of zones are visible.

Server

  • Enhancement: substantially smaller databases when context switch tracking is enabled.
  • Enhancement: dataset processing time is reduced further.

Other

  • Enhancement: (Linux) Telemetry now officially supports CentOS 6 and RHEL 6.


Thursday, June 26, 2014

RAD Telemetry 2.0M Released!

Telemetry 2.0M has just been released.  This release focuses on reducing server-side processing time.

Run-time

  • Change: On PS4, allocate context switch trace buffer directly from the kernel instead of using new[] so no large libc heap is required.


Visualizer

  • Bugfix: fixed missing/flickering zones in presence of thread name changes.
  • Bugfix: fixed incorrect messages appearing in "Log" view in certain cases.
  • Enhancement: reduced fetch times for zones and plots.
  • Enhancement: importing recorded runs from a file is now much faster and displays progress information.


Server

  • Change: updated to SQLite 1.8.5.
  • Enhancement: significant reduction in dataset processing time; in our tests, processing is now typically between 2 and 4 times faster.
  • Enhancement: real-time indexing mode is now much faster - typically 30%-50% longer processing time than late indexing, instead of the 3x and more it was previously.
  • Enhancement: processed datasets are now approximately 25% smaller due to a revised index structure.

Wednesday, May 28, 2014

RAD Telemetry 2.0L3 Released!

Telemetry 2.0L3 has just been released.  This is strictly a minor maintenance release to deal with some small bugs.

Visualizer


  • Bugfix: fixed plot LOD rendering issues
  • Bugfix: file import now works on file names with spaces
  • Bugfix: path names with leading spaces now work
  • Change: warn if we fail to launch tmimport32 or tm2sym
  • Change: remove unused search and memory tabs
  • Enhancement: added TDB double click support on windows

Other


  • Enhancement: added docs on TMO_NULL_NETWORK


Tuesday, April 22, 2014

RAD Telemetry 2.0L released!

Telemetry 2.0L has just been released.  This is strictly a minor maintenance release to deal with some small bugs.

NOTE: The ABI has changed, so be sure to recompile/relink everything instead of just swapping out libraries!

Run Time

  • Bugfix: varargs with float types were not handled properly at times on OS X (64-bit), Linux/x64 and PS4
  • Bugfix: TM_VA_LIST parameters were incorrectly warned as 'stack variables' by checked build
  • Change: Android runtime is now built with -funwind-tables by default
  • Enhancement: checked build now does extra verification to watch for 'wrapper' related bugs

Server

  • Bugfix: unknown string pointers are silently handled instead of generating an exception and associated disconnection
  • Bugfix: locks/timespans could accidentally start with a negative ref count

Visualizer

  • Enhancement: 'edit source code' is now a right-click zone option
  • Bugfix: backgrounds were drawn in green instead of black of any timeline sections were present but the current visible area did not have one defined
  • Bugfix: tooltip was not showing file name and line properly in zone view
  • Bugfix: in some situations Visualizer on Windows would leave clipboard open, locking out other applications from copy/paste

Other

  • Change: added documentation discussing the perils of wrapping calls to Telemetry vs. just using Telemetry in place