Telemetry

Telemetry History

This change log includes the entire Telemetry development history.

  • Fix bug in Profile View zone highlighting
  • Workspace widget uses filename instead of session name (allows opening a copied .tms file along with the original)
  • Added overlay highlighting for tutorial videos
  • Fix crash bug in export menu
  • Fix crash when you use home key in an edit widget
  • Added /full_dump command line option to trigger full memory dumps
  • Added tmTrackColor API
  • Increase run-time zone max depth to 64
  • Hook up TMMF_ZONE_SUBLABEL
  • Hook up TMMF_ZONE_SHOW_IN_PARENTS
  • Fix server hang on exit due to orphaned connections
  • UI fixes
  • Mac run-time
  • Android run-time fixes
  • Added a range modifier to the zone search to allow limiting the search to just the current view
  • Compile with _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH to prevent link issues with the debug build
  • Fixed bug in spread sheet widget where cells clip too soon when scrolled horizontally to the left
  • Better track order values for default tracks (Context Switches, Time Spans, Lock Holds, and Lock Waits)
  • Big improvements for Profile View
  • Added resizable columns in the spread sheet widget (used in Profile View and Find Zone Tool)
  • Profile View is broken down by threads in a tree control that matches the track grouping in the Timeline View
  • Allow all docked windows to be resized
  • tmSetTrackOrder was truncating the order value to 32 bits
  • Name session files with the time down to the millisecond to prevent duplicate names for multiple sessions started in short succession
  • Tracks can be collapsed down to just the top row of zones
  • Fixed Timeline View save as PNG feature (would save corrupted images depending on the window size)
  • NOTICE: Tracks store their collapse state which modifies the .tms file format. Old sessions can still be opened, but sessions generated with 3.0.1.720 will not be able to be opened with older version of Telemetry.
  • Fixed link collisions with Oodle due to rrsprintf
  • Auto scroll to the current session in the workspace view on open or start capture
  • Reduced the tick rate for the visualizer when the window is not in the foreground (makes Telemetry use less CPU when capturing)
  • Fixed crash in the Profile View and the Find Zone Tool
  • Removed log spam coming from the server
  • Added NULL check to tmLoadLibrary macro (was failing static analysis by not checking)
  • Fixed various focus issues where ui mouse over highlights happened when Telemetry didn't have focus
  • Fixed live-mode crashes in Timeline View, Find Zone Tool, and Core View
  • Added TMOF_BREAK_ON_MISMATCHED_ZONE to assert when a zone stack overflow or underflow occurs
  • Never allow a newly opened tool view to be more than half the screen (Profiles with really long zone names were coming up too large)
  • Fixed a crash in Timeline View and Core View
  • Added support to save the Timeline View as PNG
  • Fixed a bug that allowed the clock to go backwards causing corruption of time values
  • Removed log spam
  • Fixed a bug that prevented simultaneous captures
  • Added "Profile Track View" option to allow profiling the current view but limited to just the selected track
  • Exclude idle zones from profile results
  • Fixed a hang bug
  • Fixed live mode crash associated with drawing plot tracks
  • Added feature export time spans to CSV
  • Fixed crash in the server
  • Fixes for client network stability
  • Added a version header to the capture stream
  • Added integrity hash check to the network stream
  • Better error reporting for tmInitialize
  • Better error reporting for tmOpen
  • Added HTML reports
  • Fixed zone rendering bug for zones with multiple flags set
  • Fixed crash in the session manager
  • Prompt save on exit if the session was modified
  • Fixed bug where export menu wasn't updating
  • Added support for Telemetry 2 style path naming for thread names
  • Added tmPlotAt interface
  • Complete overhaul of Telemetry 2
  • New run-time has extremely low overhead
  • Visualizer is completely redesigned
  • New tile based user interface
  • Custom session database format replaces SQLite
  • Capture over 1 million zones per second
  • View sessions in real-time
  • View multiple sessions at the same time
  • Profile individual zones to see breakdowns of where child time is spent
  • Context switches are displayed over every thread track
  • New simplified Lock API

Release 2.1D

This is a minor maintenance release.

Run-time

  • Bugfix: Switched to new faster RAD threading primitives.

Release 2.1C2

This is a minor maintenance release.

Run-time

  • Bugfix: (PS4) Fix context switch tracing not recording on core 7.

Release 2.1C1

This is a minor maintenance release.

Run-time

  • Bugfix: (PS4) Fix context switch tracing leaking flexible memory on context close.

Visualizer

  • Bugfix: (Windows) Fix flickering mouse cursor.

Release 2.1C September 16, 2015

This is a minor maintenance release.

Run-time

  • Enhancement: add support for building with Visual Studio 2015

Release 2.1B September 16, 2015

This is a minor maintenance release.

Run-time

  • Enhancement: on iOS, report Telemetry debug messages (when requested) via NSLog

Visualizer

  • Enhancement: make built-in server session idle timeout configurable.

Release 2.1A3 April 15, 2015

This is a minor maintenance release.

Server

  • Bugfix: fixed a crash associated with closing a capture while an SQLite query is running

    Run-time

  • Change: PS4 run-time built against version 2.5 SDK

Release 2.1A2 March 17, 2015

This is a minor maintenance release.

Run-time

  • Bugfix: fixed an iOS crash when profiling a 32-bit program on a 64-bit device

Release 2.1A1 February 13, 2015

This is a minor maintenance release.

Visualizer

  • Bugfix: fixed a crash that occurred when a timespan had an ID of zero

Release 2.1A December 19, 2014

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.
  • 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 Telemetry 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)
  • Note: Mac users, the Telemetry 2.1A runtime requires OS X 10.7

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.

Release 2.0P3 November 11, 2014

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.

Release 2.0P2 September 12, 2014

This is a bugfix release.

Run-time

  • Bugfix: Fix incorrectly set #defines in radtypes.h for Windows when using recent Platform SDKs.

Visualizer

  • Bugfix: session delete did not correctly respect selection.

Release 2.0P September 10, 2014

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.

Release 2.0N July 18, 2014

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.

Release 2.0M June 26, 2014

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.

Release 2.0L3 May 23, 2014

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

Release 2.0L2 April 24, 2014

Run-time

  • Change: added TMO_SUPPORT_TIMESPANS
  • Bugfix: timespans were using ENABLE_LOCKS for inspection
  • Bugfix: fixed false positive checked build warnings for format strings

Server

  • Bugfix: fixed 'leaky file handle' issue that kept a file locked after capture

Release 2.0L April 21, 2014

Run-time

  • Bugfix: varargs with float types were not handled properly on OS X (64-bit), Linux/x64, and PS4
  • Bugfix: TM_VA_LIST parameters were incorrectly warned as 'stack variables' by checked build
  • Change: added -funwind-tables to Android runtime
  • 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
  • Bugfix: locks/timespans could accidentally start with a negative ref count

Visualizer

  • Enhancement: 'edit source code' is now a right-click option in Visualizer
  • Bugfix: backgrounds were drawn in green instead of black if timeline section names were used but not defined in a region
  • Bugfix: tooltip was not showing file name and line properly in zone view
  • Bugfix: in some situation Visualizer on Windows would leave clipboard open, locking out other system applications

Other

  • Change: documentation changes reflecting issues with wrapping Telemetry

Release 2.0k March 31, 2014

Run-time

  • Enhancement: context switch capture on PS4
  • Enhancement: add server configuration API (tmSetServerConfiguration)
  • Bugfix: fixed bug where timespans could hang the run-time if tmOpen was called late
  • Change: linux (and other BSD-ish) network implementation now spew debug on wouldblock (checked build)
  • Change: disabled network policy on PS4 telemetry socket
  • Enhancement: added TM_VAR macro and no longer exclude tmtypes.h on NTELEMETRY

Server

  • Change: unknown strings are a bit more known (null vs. unrecognized)
  • Enhancement: decoupled sessions from their filenames, so you can now rename files/directories (yay!)
  • Bugfix: fixed crash bug with oversized messages
  • Bugfix: generated mem usage plots (via TMZF_MEM_REGION_EXPERIMENTAL) were using incorrect paths

Visualizer

  • Enhancement: mousewheel now works in message view
  • Enhancement: greatly sped up fetch times for zones, messages, plots, and mem events
  • Enhancement: session notes are now on a separate line and green, and if then completely skipped
  • Change: disable 'copy' button in message pane until all have arrived
  • Change: messages without newlines now have newlines appended automatically
  • Bugfix: fixed file/line missing from zone tooltips

Other

Release 2.0j February 20, 2014

Run-time

  • Enhancement: tmMessage now has tmMessageEx variant
  • Enhancement: (Windows) you can now specify full path for TMDATA file when specify TMCT_FILE to tmOpen
  • Bugfix: fixed benign AppVerifier warning about dangling CriticalSection

Server

  • Enhancement: -file command line option added
  • Bugfix: in certain situations long duration zones would not be recorded properly
  • Bugfix: fixed pathological edge case in zone garbage collector leading to N^2 processing times

Visualizer

  • Change: Visualizer now uses system default text editor instead of Notepad when editing notes
  • Enhancement: plot scale with mousewheel should work now
  • Bugfix: double clicking frame in plot view would sometimes take you to the wrong location
  • Bugfix: right-click 'zoom' on plot would sometimes take you to the wrong location

Other

  • Enhancement: Mac/Linux/Win now have gpu_opengl.cpp sample file in distributions
  • Enhancement: greatly enhanced Python exporter script
  • Change: 'tools' only distributions now include exporter script
  • Change: updated zone filtering documentation
  • Change: updated timespan document to note the ordering constraints of *TimespanAt

Release 2.0i February 4, 2014

Run-time

  • Change: 'processing time' plot is now suffixed with '(ms)' group
  • Change: QNX/ARM build is now built with -fpic
  • Change: removed dependency on dbghelp.dll to discover PDB signatures

Server

  • Change: default zone array size is much larger now, avoiding resizes

Visualizer

  • Bugfix: plot generation was broken
  • Change: generated plot names are shorter and now include time vs. frame unit identifier
  • Enhancement: added slider to let you determine how much data to prefetch, which can help reduce latency when scrolling around
  • Bugfix: in certain rare instances time interval calculations were sometimes off due to quantization artifacts
  • Change: state tag background colors in zone view are more noticeable now
  • Bugfix: mem track minimized button would disappear at times

Other

  • Change: updated docs on using regsrv32 to fix MS DIA SDK registration issues

Release 2.0h January 27, 2014

Run-time

c
  • Enhancement: added tmPlotAt APIs so you can retroactively place a plot in time
  • Enhancement: updated to ensure compatibility with latest console SDKs
  • Bugfix: fixed XB1 checked build link error
  • Change: Linux64 .a is now built with -fPIC

Server

Enhancement: server does periodic flushing (every 100ms) instead of always flushing on tick

Change: now explicitly discards TMZF_PROFILER_ONLY zones

Visualizer

  • Enhancement: user defined zone, timespan, and plot colors
  • Enhancement: added sort-by option in profiler results pane
  • Enhancement: plot tooltip now shows time offset from start of session (a la T1)
  • Enhancement: TMZF_IDLE nows are now much more visually apparent
  • Enhancement: added back 'show idle' checkbox
  • Enhancement: zoneview selected region now shows duration in tooltip
  • Enhancement: added 1ms interval tick marks to zone view
  • Bugfix: profiler pane now shows correct counts for accumulation zones

Other

  • Change: updated docs to clarify that TMZF_PROFILER_ONLY is a T1 specific feature

Release 2.0g December 9, 2013

Run-time

  • Change: tmInitializeContext now prints warning if user provided buffer is greater than 4MB
  • Bugfix: fixed hang issue on PS3 when issuing multiple tmOpen/tmClose while PPU listener thread present
  • Bugfix: fixed Linux intermittent hang bug that happened on a small number of systems during tmOpen

Server

  • Enhancement: sqlite usage optimizations resulting in significant speed up during cooking
  • Change: TMZF_MEM_REGION_EXPERIMENTAL now uses path name for naming allocs if present (like with profiler names)
  • Change: shortened generated filenames in an attempt to dodge MAX_PATH issues on Windows
  • Change: autogenerated memory usage plots are I64 now instead of U64
  • Change: dynamic string usage is now plotted to help narrow down bandwidth issues
  • Bugfix: fixed string cache overflow bug that would make some plots disappear if you had too many dynamic strings in a single frame
  • Bugfix: sort order was incorrect for profiler query, so important data was clipped off if there were a lot of results
  • Bugfix: fixed issue where spurious plots were generated for mem usage
  • Bugfix: was not flushing mem tracker generated plots on session completion

Visualizer

  • Change: cooking now reports number of files left instead of a faux percentage
  • Change: cleaned up data point rendering of plots if points spaced too closely
  • Bugfix: mouse wheel no longer zooms if UI is in modal state
  • Bugfix: can no longer select live sessions by clicking 'all' button
  • Bugfix: fixed rare crash bug in Visualizer that resulted from trying to access non-existent session data

Other

  • Change: TMS API changed to better support querying for cooking session duration
  • Chance: updated UE3 docs with clarifications
  • Bugfix: updated trylock docs to indicate that they don't support recursive mutexes

Release 2.0f October 25, 2013

Run-time

  • Change: autogenerated system/working set plot is now part of (mem) group
  • Change: defaults to emulating Telemetry 2 if using TMCT_FILE

Server

  • Change: updated to most recent sqlite
  • Bugfix: fixed plot gen crash bug
  • Bugfix: stopping server while it's cooking should not crash anymore
  • Bugfix: fixed string table bug where NULL strings were being set to wrong value
  • Bugfix: fixed string id generation bug when generating plots
  • Bugfix: plot gen 'by frame' now works correctly
  • Bugfix: fixed bug with symbolization

Visualizer

  • Enhancement: ctrl-V now pastes into input text blocks
  • Enhancement: TMPT_TIME_CYCLES plots now print in appropriate time scale (us,ms,etc.)
  • Change: changed "Cooking" to "Processing" to avoid idiomatic terminology
  • Bugfix: fixed bug with rendering of plot LODs
  • Bugfix: fixed plot gen crash bug
  • Bugfix: stopping server while it's cooking should not crash anymore
  • Bugfix: plot gen 'by frame' now works correctly
  • Bugfix: fixed bug with symbolization

Other

  • Change: PS4 dependency documentation updated

Release 2.0e October 8, 2013

Run-time

  • Enhancement: Android implementation now reports number of cores correctly
  • Bugfix: fixed connection bug for PS3 and 360
  • Enhancement: PS4 console name now reported correctly (requires SDK 1.020+)

Server

  • Enhancement: Performance increases for data fetches when dealing with large data sets with lots of strings. Improves message fetching performance considerably.
  • Bugfix: crash bug where the server was trying to mark sessions as 'done' incorrectly if they were still running
  • Bugfix: cancelling 'Profile Selection' was not working properly
  • Bugfix: -NaN and Inf were not handled properly by tmPlot handler in server

Visualizer

  • Enhancement: newlines in timeline section names are handled properly (up to 4 lines)
  • Enhancement: control-key copy of tooltips works
  • Enhancement: callstack rendering in tooltips improved
  • Enhancement: callstack pre/post-guards added
  • Bugfix: enabling multiple plots then disabling some would not rescale the remaining plots
  • Bugfix: middle click drag scrolling in timeline view wasn't working
  • Bugfix: fixed crash bug when drawing text with bad strings
  • Bugfix: fixed minor issue with license expiration
  • Change: renamed 'timeline' tab to 'plots'

Release 2.0d September 12, 2013

Run-time

  • Bugfix: fixed bug when closing Telemetry after a failed open
  • Bugfix: (benign) initial timestamp wasn't offset by start_Tsc
  • Bugfix: fixed iOS crash bug (unaligned access)
  • Change: iOS and Android use 16K write buffers for TMCT_FILE instead of standard 1MB

Server

  • Bugfix: plot LOD bug fix
  • Bugfix: fixed zone search query
  • Bugfix: fixed join logic to deal with 0 string column IDs
  • Bugfix: fixed crash bug when attempting to symbolize a session that is also loading
  • Bugfix: fixed stale file problem preventing some sessions from being deleted

Visualizer

  • Change: selection checkbox is disabled for live sessions
  • Enhancement: huge speed up to symbolization
  • Bugfix: mem track is now visible again
  • Enhancement: search results now also dumped into a separate tab
  • Bugfix: zones with same name in different threads were shadowing each other in profiler view
  • Bugfix: properly reports when a search returns no results
  • Bugfix: cleaned up thread offset / lock count display in lock tracks
  • Bugfix: plots were still showing up as available after deletion

Misc

  • Bugfix: fixed bug in db export python script
  • Other: fixed tmTryLockEx documentation
  • Other: updated tmStartupEx documentation

Release 2.0c August 30, 2013

Run-time

  • Enhancement: Added support for PS Vita
  • Enhancement: Installable user timers

Visualizer

  • Enhancement: message text is clearer
  • Enhancement: message text can be copied to clipboard
  • Enhancement: timespans are now taller and colored based on name
  • Enhancement: timespans now print text inside the timespan
  • Enhancement: timeline section names named 'paused' are now rendered in red

Misc

  • Enhancement: added documentation about using tmLockName to name timespans

Release 2.0b August 26, 2013

Run-time

  • Enhancement: Support for QNX 6.5 on ARM
  • Enhancement: Support for Linux/ARM
  • Enhancement: Added support for TMCT_FILE to Android
  • Bugfix: fixed endianess bug regression from 2.0a

Visualizer

  • Bugfix: zone view tooltips were inaccurate in some cases where you had multiple framesets with one frameset only around for a short period of time
  • Bugfix: zooming in too far (less than 100 clocks) was causing a white screen, we now clamp to 100 clocks
  • Change: Visualizer now uses term 'clocks' instead of 'cycles' to be more accurate

Server

  • Bugfix: Handle zero-length time intervals that result from low-resolution timer implementations
  • Bugfix: Extremely rare bug where events spaced too closely would be discarded
  • Bugfix: Min/max sample indices were wrong for initial plot LOD value

Misc

  • Enhancement: misc documentation clarification on platforms and TMCT_FILE

Release 2.0a August 13, 2013

First release of Telemetry 2! This is a huge release for us and the culmination of over a year of work addressing customer requests. The run-time is still shared with Telemetry 1.x, so migration should be a snap!

The biggest changes are:

  • much lower memory footprint, allowing the capture and examination of huge (10GB+) datasets
  • full text search of zones
  • open file format with example export script so you can examine the data yourself
  • ...all while retaining run-time library compatibility with Telemetry 1.x!
  • path interpretation is a little different than with T1
  • multiple framesets, meaning you can have different kinds of frames visible in the timeline
  • support for Android, QNX, ARM/Linux (this is also available in Telemetry 1)

Technically speaking this was enabled by:

  • switching to a SQLite backend
  • demand paging data
  • preprocessing of level-of-detail during capture
  • making 'ticks' generate 'frame' plots instead of implicitly assuming ticks were at frame boundaries

You can find more information detailed information at our blog

Release 1.1t August 13, 2013

Run-time

  • Enhancement: updated platform support
  • Enhancement: added support for Android

Release 1.1s April 8, 2013

Run-time

  • Enhancement: added 'R' (reverse) variants of callstack APIs
  • Enhancement: added support for ARM7/Linux
  • Enhancement: updated SDK/console support
  • Bugfix: Fixed network layer bug on PS4
  • Bugfix: Emulated tools version was being reset at tmClose
  • Bugfix: Warnings now with tmSetLockStateMinTime if you reuse the same buffer
  • Change: tmEmitAccumulationZone now sets location string of leave event to same as enter event

Visualizer

  • Bugfix: fixed timespan rendering

Misc

  • Changes: updated UE3 integration docs
  • Changes: fixed examples
  • Changes: minor documentation changes

Release 1.1r February 18, 2013

Run-time

  • Enhancement: added TMP_EMULATED_SERVER_VERSION for forward compatibility
  • Enhancement: updated support for unannounced platforms
  • Bugfix: fixed rare bug where Telemetry internal zones could arrive slightly out of order
  • Bugfix: 360: rare bug where context switches could arrive out of order fixed
  • Bugfix: 360: TMCT_FILE failed due to extra backslash
  • Bugfix: moved tmEnter timestamp fetch after write buffer is locked to avoid potential out of order zones

Visualizer

  • Bugfix: fixed crash bug in aligned memory allocator
  • Bugfix: latent bug in string class fixed

Server

  • Bugfix: latent bug in string class fixed

Misc

  • Bugfix: fixed plot export bug in tmsym

Release 1.1q January 14, 2013

Run-time

  • Change: updated protocol
  • Enhancement: updated unannounced platform support
  • Bugfix: forward slashes in app logical path would cause problems
  • Bugfix: run-time would hang with back to back tmOpen/tmClose/tmOpen/tmClose if context switches were enabled on Windows or 360.
  • Change: minor change for how TMOF_MODERATE_CONTEXT_SWITCHES are handled

Server

  • Change: updated protocol for forward compatibility

Release 1.1p November 28, 2012

Visualizer

  • Bugfix: fixed bug where some symbols were not being resolved properly
  • Bugfix: OS X: right-button clicking did not work reliably
  • Enhancement: displays which license file it's using
  • Enhancement: option to manually specify symbol file for resolution (under Options), which will bring up a file selection dialog

Run-time

  • Enhancement: tmOpen now returns TMERR_NETWORK_NOT_INITIALIZED if you have not specified TMOF_INIT_NETWORKING and the underlying network subsystems have not been appropriately initialized
  • Change: tmCoreSendCallStack takes additional parameter now (you must recompile/link!)
  • Enhancement: tmSendCallStackWithSkip implemented. This works just like tmSendCallStack but allows you to specify the number of stack frames to skip.
  • Bugfix: tmxgpu on 360 had incorrect parameters to tmPlot
  • Bugfix: timespans were not using full 64-bits of ID on 32-bit systems
  • Bugfix: critical sections were not properly destroyed when context was shutdown (Application Verifier warning)
  • Enhancement: added support for unannounced platform
  • Bugfix: fixed link issues with unannounced platform
  • Bugfix: session name returned from server was sometimes incorrect

Server

  • Change: emits debug spew if there is a context switch overflow detected (360 and Windows only)

Other

  • Enhancement: tmCheckVersion now documented
  • Change: UE3 docs now use tmCheckVersion
  • Change: example_basic now uses tmCheckVersion

Release 1.1o October 24, 2012

Visualizer

  • Change: Autoconnect is now a command line option and persistent

Run-time

  • Change: tmLoadTelemetry accepts TM_LOAD_CHECKED_LIBRARY and TM_LOAD_RELEASE_LIBRARY
  • Enhancement: VERY tenuous support for FreeBSD via Linux compat added
  • Enhancement: Added TMPT_UNTYPED alias for TMPT_INTEGER
  • Bugfix: vararg handling in tmxgpu was leading to crashes in some instances
  • Enhancement: support for OpenGL GPU timings on Windows (OS X and Linux forthcoming)

Release 1.1n September 24, 2012

(This changelog includes changes in 1.1nb0)

Run-time

  • Bugfix: dynamic strings were not sent during tmPause()
  • Bugfix: tmClose now does extra ticks to help server flush through buffered frames
  • Change: updated WiiU SDK support
  • Enhancement: WiiU: improved network performance
  • Enhancement: Added TMMF_ICON_EXTRA00..EXTRA04
  • Change: updated other unannounced platform support

Server

  • Bugfix: Fixed stack size issue that was limiting maximum zone depth and leading to server crashes
  • Change: previously server would only store most recent thread name at tick boundaries, now all thread names are retained within a frame

Visualizer

  • Bugfix: message sublabels were not showing up in zone tooltips
  • Bugfix: console command entry key stroke was disabled
  • Enhancement: added check box for 'show groups' in the plot tree
  • Enhancement: Added TMMF_ICON_EXTRA00..EXTRA04
  • Bugfix: Visualizer now checks for license file in executable directory (in addition to data directory) on non-Windows platforms

Other

  • Change: UE3 integration docs revised and clarified significantly
  • Enhancement: tmsym has dump plot facility now

Release 1.1nb0 September 18, 2012

This is a private beta release on PS3, 360, WiiU and Windows only.

Run-time

  • Bugfix: tmClose now does extra ticks to help server flush through buffered frames
  • Change: updated WiiU SDK support
  • Change: updated other unannounced platform support

Server

  • Bugfix: Fixed stack size issue that was limiting maximum zone depth and leading to server crashes
  • Change: previously server would only store most recent thread name at tick boundaries, now all thread names are retained within a frame

Visualizer

  • Bugfix: message sublabels were not showing up in zone tooltips
  • Bugfix: console command entry key stroke was disabled
  • Enhancement: added check box for 'show groups' in the plot tree
  • Bugfix: Visualizer now checks for license file in executable directory (in addition to data directory) on non-Windows platforms

Other

  • Change: UE3 integration docs revised and clarified
  • Enhancement: tmsym has dump plot facility now

Release 1.1m Aug 31, 2012

This is an interim bugfix release. The run-time protocol has changed, so please ensure that your SDK, server and Visualizer are all upgraded simultaneously.

Run-time

  • Enhancement: WiiU Updated to support 2.07.02 SDK
  • Bugfix: Fixed stack corruption if there were too many MAP/PDB signatures
  • Bugfix: Raised maximum number of MAP/PDB signatures to 256
  • Change: added timestamp packet to protocol (you must update server/Visualizer simultaneously)
  • Change: TMZF_PLOT_TIME_EXPERIMENTAL is now promoted to TMZF_PLOT_TIME

Server

  • Change: added timestamp packet to protocol (you must update server/Visualizer simultaneously)

Visualizer

  • Enhancement: Linux Visualizer now searches for license key in executable directory as well as telemetry directory
  • Enhancement: vscale setting is now saved

Other

  • Bugfix: symbol data after symbolization was not stored to disk correctly
  • Change: edited UE3 integration docs for better error handling

Release 1.1L Aug 2, 2012

This is an interim maintenance release.

Run-time

  • Enhancement: PS3: tmGetCallstack() now more robust and no longer requires -ldbg
  • Change: PS3: We now build against SDK 3.7.0
  • Change: WiiU: SDK 2.06.02 is now supported (and required)
  • Change: minor bugfixes and changes

Server

  • Change: minor bugfixes and changes

Visualizer

  • Enhancement: Linux Visualizer now in beta, both in 32 and 64-bit! We currently only support Ubuntu linux with Gnome/Nautilus.
  • Enhancement: OS X: Minor improvements to reach parity with Windows version
  • Enhancement: Experimental feature allowing 'Find zones' to sort by duration
  • Enhancement: Visualizer state is stored to disk upon change, not at exit, so any Notes will now be stored even if the Visualizer exits unexpectedly
  • Change: minor bugfixes and changes

Other

  • Enhancement: minor update to UE3 integration documentation

Release 1.1k July 9, 2012

This is an interim bug fix build for the Visualizer along with some additional enhancements for WiiU.

Run-time

  • Bugfix: tmGetVersion fix wasn't fixed, so now it's really fixed
  • Bugfix: WiiU: time offsets for ticks weren't calculated properly
  • Change: WiiU: SDK 2.06 is now supported (and required)

Server

  • Bugfix: was not reading old session information correctly, leading to missing old sessions in the Visualizer

Release 1.1j July 2, 2012

Run-time

  • Change: Run-time protocol changed, server and run-time must be upgraded simultaneously!
  • Bugfix: tmGetVersion was returning values inconsistent with telemetry.h version numbers
  • Enhancement: EXPERIMENTAL AND UNDOCUMENTED, PLEASE CONTACT US IF YOU WANT TO USE THIS! TMCT_USER_PROVIDED callback registration for your own storage/transmission of runtime data.
  • Enhancement: additional support for unannounced platform
  • Enhancement: updated WiiU support to latest SDK
  • Enhancement: Linux and OS X symbolization support enhanced

Visualizer

  • Bugfix: Starting with "Autostart Server" disabled resulted in crashes
  • Bugfix: Zooming in too far in the Visualizer would make everything disappear
  • Enhancement: Vertical zone scaling (Ctrl-Mousewheel) state is now saved
  • Bugfix: 'Import' of data files would sometimes crash due to timing bugs if the imported data was really small

Server

  • Change: run-time protocol changed, server must be updated in parallel with run-time!

Other

  • Change: Cleaned up some obsolete documentation
  • Bugfix: Fixed documentation error for some tmPlotXXX variants

Release 1.1i June 4, 2012

Run-time

  • Change: Protocol has been changed, server and run-time must be upgraded simultaneously!
  • Change: tmPlotXXX APIs have been changed, an additional parameter is now required -- you must relink/recompile!
  • Bugfix/Change: TM_VA_LIST parameter is now expected to be a va_list* instead of a va_list
  • Change: added TM_SLOW define that is set on platforms with very slow networking and timestamp fetching (currently defined on iOS only)
  • Bugfix/Change: changes for unannounced platform support
  • Enhancement: TMCT_FILE support for iOS
  • Enhancement: TMCT_FILE support for PS3
  • Bugfix: GPU D3D9 crash bug fixed

Visualizer

  • Bugfix: certain path names would crash plot display
  • Bugfix: fixed missing newline when printing callstack in tooltip
  • Enhancement: symbolization support enhanced for Linux and OS X

Server

  • Change: Protocol has been changed, server and run-time must be upgraded simultaneously!

Release 1.1h May 7, 2012

Run-time

  • Enhancement: support for iOS
  • Enhancement: support for future unannounced platform
  • Enhancement: WiiU enhancements and changes
  • Change: enabled quad buffering of network write buffers on all platforms (previously only on PS3 and 360)
  • Bugfix: RADEXPLINK definition mismatch with NTELEMETRY when used with other RAD products
  • Bugfix: PS3 strings were sometimes not sent over properly in certain edge cases
  • Bugfix: tmShutdown now compiles to TMERR_DISABLED instead of an empty statement when NTELEMETRY is defined
  • Bugfix: handshake timeout now honors the timeout parameter to tmOpen instead of being hardcoded to 1s

Visualizer

  • Change: removed confusing and vestigial 'Memory' tab

Server

  • Bugfix: server is more tolerant of unknown string references from the run time
  • Bugfix: when -keeptmp is specified and server crashes, the *.00 file is no longer deleted

Release 1.1g April 12, 2012

Run-time

  • Enhancement: TMOF_NO_PDB_LOOKUP support added
  • Enhancement: Improved performace on 360, PS3 and Windows
  • Change: default Telemetry thread priority increased to avoid starvation

Visualizer

  • Enhancement: "Lock to end" checkbox is now persistent between sessions
  • Enhancement: plotted zone times are now in the same plot group so you can compare scales
  • Enhancement: Build information passed to tmOpen is displayed in session selection pane
  • Change: New evaluation version system
  • Change: Removed deprecated thread balance pie chart

Server

  • Enhancement: -maxsessions parameter added to server

Release 1.1f March 13, 2012

Run-time

  • Enhancement: new plot types TMPT_TIME_US and TMPT_TIME_CLOCKS added
  • Bugfix: fixed crash bug with Windows DX9 version of tmxgpu
  • Bugfix: fixed crash bug with TMCT_FILE usage and OS X
  • Bugfix: tmSetLockStateMinTime wasn't checking some parameters in checked builds
  • Bugfix: if the arena passed to tmInitializeContext wasn't zeroed out bad behaviour could happen. Telemetry clears that memory now.

Visualizer

  • Enhancement: Very, VERY crude "search for zone" implemented...use Ctrl-F. Does not support wildcards and only searches for zones that are in memory. A better implementation is forthcoming!
  • Enhancement: A basic implementation of "right-click to plot a zone's time". This only works for frames that are in memory.
  • Enhancement: "Lock to end" support added
  • Bugfix: Slow performance when rendering very long zones fixed
  • Bugfix: Right clicking on zones wasn't working properly
  • Bugfix: Intermittent crashes when viewing a session with mixed very short and very long frames in fullscreen

Server

  • Bugfix: Rare race condition when accepting multiple profiling sessions from the same machine in less than one second

Misc

  • Bugfix: tmSetLockStateMinTime/Ex return values were improperly documented
  • Bugfix: tmSPUBindContextToListener function signature documentation was wrong

Release 1.1e December 5, 2011

Run-time

  • Enhancement: Performance improvements for 360 and PS3
  • Change: 360: Telemetry thread defaults to hwthread 5
  • Change: PS3: Telemetry thread defaults to hwthread 1
  • Enhancement: Added TMPI_START_TIME parameter to tmGetPlatformInformation
  • Enhancement: Win32: Changed how we handle context switch trace management in an effort to make it reliable across more systems.
  • Enhancement: Duration of TCP send in the run-time now has a plot generated
  • Enhancement: Added more send buffers to enhancement performance/prevent stalls writing to the network
  • Enhancement: TMCT_FILE local net mirroring support on some platforms. See docs for more details.
  • Enhancement: BETA support for new platform

Server

  • Enhancement: Greatly enhanced performance under certain conditions with lots of frames
  • Bugfix: Occasional server crashes with open zones spanning many frames
  • Change: Removed TM_APP_STRING and TM_APP_TICK console spam

Other

  • Bugfix: Some documentation was using tmDynamicString as a format string parameter, which is not allowed
  • Enhancement: Cleaned up example files
  • Enhancement: Added 'tmimport' to playback raw net files captured with TMCT_FILE sessions

Release 1.1d November 22, 2011

Run-time

  • Bugfix: calling tmInitializeContext again after connecting would cause random crashes, now it just returns an error in checked mode
  • Enhancement: (Experimental) TMZF_PLOT_TIME_EXPERIMENTAL -- mark a zone to generate a time plot
  • Enhancement: (Experimental) Can register your own debug display function for the run time using tmSetParameter(TMP_DEBUG_PRINTER)
  • Bugfix: Win32 build was generating a benign warning/error with AppVerifier due to attempting to OpenThread a NULL handle
  • Bugfix: TMXGPU: pass a NULL context to tmxgpu would result in crashes via null pointer derefs
  • Bugfix: 32-bit Posix targets occasionally crashed with some dynamic strings

Visualizer

  • Bugfix: TMMF_ICON_* messages weren't showing up in the message window, only as zone view icons
  • Bugfix: Was not handling multiple simultaneous blob plugins properly
  • Bugfix: Fixed weird UI issues where zone display would sometimes still pick up mouse input even if clicking off the zone view
  • Bugfix: OS X: Ok/Cancel buttons had inverted meanings on message box
  • Bugfix: D3D: Too many plot samples crashed Visualizer
  • Change: OS X: Defaults to 1280x800 window size

Server

  • Bugfix: Fixed handshake timeout issue between client and server
  • Bugfix: Fixed some server instability
  • Bugfix: Blobs were not served up properly
  • Enhancement: Linux 32-bit server now available

Other

  • Bugfix: Updated UE3 integration docs
  • Bugfix: Fixed missing documentation for tmsRegisterMessageHandler, tmPPURegisterSPUProgram and TmOpenFlag
  • Enhancement: Added embedded server tutorial code

Release 1.1c November 9, 2011

Run-time

  • Bugfix: Windows builds were using wrong DLL names
  • Bugfix: Dynamic string bug fixed in 32-bit Mac run-time
  • Bugfix: tmSendCallStack with previously fetched callstack via tmGetCallStack was wrong
  • Change: TMXERR_GPU_INVALID_CONTEXT is now returned by tmxGpuInit* if a NULL context is passed.
  • Change: Fixed spurious warning when trying to close NULL socket (now silently ignored)

Visualizer

  • Bugfix: Fixed context switch rendering bug for 360 captures
  • Change: Zones are no longer arbitrarily split across frame boundaries if the zone itself is spans multiple frames
  • Bugfix: Newlines were not always handled correctly in license file leading to "Corrupt Visualizer license" bug
  • Bugfix: Minimize-then-maximize black screen bug fixed
  • Bugfix: Visualizer spawned editor name had to be fully qualified path on Win32, now it uses path
  • Bugfix: TMMF_ZONE_LABEL was inadvertently replacing label even on aggregate zones
  • Bugfix: thin zones were being inappropriately colored as LOD zones, now they use proper color
  • Bugfix: Visualizer plugins were occasionally not found if they were the first file in the Visualizer directory
  • Change: fixed license corrupt text on Mac so it doesn't refer to Visualizer executable directory

Server

  • Bugfix: Unbalanced leaves with enters were causing intermittent server crashes

Other

  • Bugfix: Symbolizer wasn't working properly
  • Change: UE3 docs updated

Release 1.1b October 26, 2011

Run-time

* Bugfix: Windows builds were using wrong DLL names

Release 1.1a October 25, 2011

Run-time

  • Change: PROTOCOL VERSIONS CHANGED! Make sure you are using the newest run-time library, server, and Visualizer with this release!
  • Enhancement: GPU (PS3,DX9/10/11,360) support via timespans
  • Enhancement: SPU support for PS3
  • Enhancement: BETA support for Mac OS X (32-bit and 64-bit)
  • Enhancement: BETA support for Linux 64-bit
  • Enhancement: You can now escape path separator with double slashes, e.g. tmPlot( ..., "my/path/but this MB//sec" )
  • Change: tmSetParameter now takes a pointer to argument instead of argument directly
  • Change: PS3 library now called "libtelemetryPS3.a" instead of "telemetryps3.a" to adhere to gcc standards
  • Change: Linux static library now called libTelemetryX86.link.a or libTelemetryX64.link.a
  • Bugfix: calling tmOpen after tmClose didn't work properly
  • Bugfix: Fixed PS3 networking bug
  • Bugfix: NTELEMETRY was masking connection status constants
  • Bugfix: Linux time wrapping issue fixed

Visualizer

  • Change: PROTOCOL VERSIONS CHANGED! Make sure you are using the newest run-time library, server, and Visualizer with this release!
  • Enhancement: Direct3D now supported by default, OpenGL version available as Viz64gl.exe
  • Enhancement: Number of zones in a thread now displayed as part of tooltip over trackhead
  • Enhancement: BETA Visualizer for OS X
  • Change: Implicitly generated plots for internal Telemetry events (number of allocs, locks, etc.) removed
  • Change: Timespans generate virtual Telemetry messages
  • Change: Made profiler row easier to see
  • Change: Visualizer input buffer now 256MB to handle extreme cases of input data flooding
  • Change: Timespans now go to microsecond display if < 0.5ms
  • Bugfix: Visualizer race condition leading to crash
  • Bugfix: Some stall zones were not being rendered properly
  • Bugfix: Timespan rendering was broken in some cases
  • Bugfix: Annotation handling resulted in loss of annotations if they were numeric
  • Bugfix: Zone depth computations were wrong in some cases
  • Bugfix: Timeline state background colors are now more stable
  • Bugfix: Corner case where input data data packet was larger than input buffer would cause silent failure
  • Bugfix: Corner case where data processing thread wasn't notified on partial input buffer fill
  • Bugfix: Out of range 64-bit plot values crashed Visualizer
  • Bugfix: High CPU utilization in data processing and server connection threads in some instances

Server

  • Enhancement: BETA OS X and Linux servers (64-bit only)
  • Enhancement: Added -keeptmp option for testing
  • Enhancement: Added offline processing of previously stored tmp files
  • Bugfix: Memory leak (not freeing remote client data)
  • Bugfix: Server would occasionally resend duplicate lock events in certain flooding conditions
  • Change: No longer limited to 64K top level zones per frame
  • Change: Server buffers frame data instead of just the most recent frame
  • Change: PROTOCOL VERSIONS CHANGED! Make sure you are using the newest run-time library, server, and Visualizer with this release!
  • Change: You can now register your own message handler for warning dialogs, etc. with the tms server library

Other

  • Enhancement: Documentation on integrating Telemetry into UE3
  • Bugfix: fixed missing docs for tmEnterEx

Release 1.0n July 15, 2011

Run-time

  • Change: PROTOCOL VERSIONS CHANGED! Make sure you are using the newest run-time library, server, and Visualizer with this release!
  • Change: 360 now sends over current profile 0 username as session username
  • Bugfix: Internal stall zones that result from flushing the Telemetry buffer are now placed in the correct place in the timeline stream so they don't look like displaced child zones (they're instead siblings of the calling zone that forced the flush)
  • Change: Reduced string table max size to 16K strings -- please let me know if this causes problems
  • Bugfix: We no longer try to search symbol path for PDBs in run-time startup. This was causing strange startup delays for some customers.
  • Bugfix: NTELEMETRY versions of tmPlotI32 and tmPlotI64 were missing
  • Enhancement: Command line and parameters are now stored and sent to Visualizer
  • Bugfix: NTELEMETRY version of tmGetAccumulationStart was wrong
  • Change: Lots of internal changes to support IPC and SPU for later revisions

Visualizer

  • Enhancement: Cut and paste from the active tooltip by holding down control (you have to enable this in the Options first)
  • Change: PROTOCOL VERSIONS CHANGED! Make sure you are using the newest run-time library, server, and Visualizer with this release!
  • Enhancement: MAJOR enhancements to the level-of-detail rendering for zones! The important changes are that an LODed zone is always visible, no matter how deep it is in the hierarchy (no more magically appearing zones as you zoom in); you have more information about a group of aggregated LOD zones (number of zones, actual time spent in the zones); and they're rendered in a reserved color (ice blue).
  • Enhancement: user messages are now put in a separate tree next to telemetry messages instead of controlled by an extra checkbox
  • Enhancement: tooltips now render callstack vertically
  • Enhancement: Session list now shows number of frames in the session
  • Enhancement: Session info at bottom of screen how in 12h format instead of 24h format
  • Enhancement: You can choose microseconds or cycles as the display unit for short duration zones
  • Enhancement: tree views now have a 'half-on' state to indicate that there are mix of checked/unchecked children
  • Enhancement: Zones that contain message text have an 'M' in them now
  • Enhancement: Generate plots now have an asterisk in their name and can now also be removed
  • Enhancement: Command line and parameters for a session are now displayed as part of session information
  • Enhancement: Right click on track head has "Minimize all but this track" option
  • Enhancement: Dynamic tick marks now along top of the zone view
  • Enhancement: Persistent outlining of zones, i.e. you can do right-click "Highlight all these zones"
  • Enhancement: LOD of small zones greatly revised and better overall.
  • Enhancement: LOD of small zones prints either "LOD zones" if the zones aren't the same, or the name of the zone if they're all the same
  • Enhancement: LOD of small zones prints actual summed time of all the child zones instead of the duration of the displayed LOD zone
  • Change: Zoom is now clamped to 10,000 clock cycles span
  • Bugfix: minimized tracks that have no data (e.g. locks if you haven't recorded locks) are no longer displayed
  • Bugfix: timeline bars don't disappear no matter how thin they get
  • Bugfix: fixed spacing and rendering problems with timespans

Server

  • Change: PROTOCOL VERSIONS CHANGED! Make sure you are using the newest run-time library, server, and Visualizer with this release!
  • Enhancement: Separate server lib is now available (tmsserver*.dll). This is alpha support only!
  • Change: Server output is significantly less verbose unless specified
  • Bugfix: Server now puts up message boxes in case of fatal sessions errors
  • Bugfix: On overflow (too many zones) the server is more aggressive about killing that session
  • Bugfix: more exception handling wrapping to prevent crashes
  • Bugfix: tmp files are only flushed/written if there is incoming data, so a paused (e.g. breakpointed) connection will not keep generating a bunch of little files

Misc

  • Bugfix: wrong tmLeaveEx usage in some sample code

Release 1.0m May 25, 2011

Run-time

  • Change: redid the API signature for tmEnterEx and tmTryLockEx. MatchId is now in a different place and is passed as a pointer.
  • Change: TMZF_FILTER removed
  • Bugfix: callstack propagation bug fixed if callstack depth was only 1 deep

Visualizer

  • Bugfix: fixed crash bug if a session ended unexpectedly while the Visualizer was trying to load it
  • Enhancement: tracks minimization is now persistent between sessions
  • Enhancement: reduced memory overhead for locks in the Visualizer greatly
  • Enhancement: Simple text-only memory reporting put in as we try to gather data from customers on their requirements.
  • Enhancement: Currently loaded session is visible in the session selector

Server

  • Bugfix: Some exception propagation issues fixed

Release 1.0L May 16, 2011

Run-time

  • Change: renamed Linux static library to libtelemetry32.a to keep with Linux style conventions
  • Enhancement: added zone filtering on the run time based on time threshold (see tmEnterEx, tmLeaveEx and tmZoneFiltered)
  • Enhancement: added trylock filtering on the run time based on time threshold (see tmTryLockEx and tmEndTryLockEx)
  • Enhancement: Priority boosting can be enabled with TMO_BOOST_PRIORITY in tmSetOption.
  • Change: due to the above change, tmLeaveThread and tmEnterThread are now replaced by tmEnterEx and tmLeaveEx
  • Change: tmEnterEx and tmLeaveEx have additional parameters for zone filtering
  • Change: priority inversion fix has been reverted due to high performance cost, it is no longer enabled by default.
  • Change: "fmt" static variable used internally by Telemetry renamed to "tm__fmt" to avoid "variable is shadowed" warnings
  • Change: timestamps are now sampled 'late as possible' for tmEnter and 'early as possible' for tmLeave so that Telemetry overhead doesn't get misattributed to instrumented code.
  • Bugfix: (Windows) PDB names were not being sent properly to the server

Visualizer

  • Enhancement: You can now delete sessions from within the Visualizer
  • Enhancement: session filtering text boxes now enclosed in a properly labeled group box
  • Enhancement: if there are no memory events then the mem event track will not be visible
  • Change: timeline backgrounds have more contrast with the new color scheme
  • Change: Default generated plot window size is now 1s instead of 100ms
  • Bugfix: lock events were not always reaching the Visualizer during live captures
  • Bugfix: filename wasn't being quoted for Visualizer editor command line
  • Change: we now specify /edit by default in the editor command linea

Misc

  • Change: example_basic_threads.cpp does thread renaming on Linux now
  • Bugfix: example_basic_threads.cpp was not handling locks on Linux properly

Server

  • Enhancement: massive server performance improvement while writing frames to disk
  • Bugfix: (Linux) pointers were sign extended in some cases, resulting in crashes with string updates
  • Bugfix: (Linux) plot packets were misaligned leading to corrupt plot values

Release 1.0k May 6, 2011

Run-time

  • Enhancement: priority inversion fix across platforms
  • Bugfix: tmEnterEx macro was missing a parameter resulting in compile time errors
  • Change: TMOF_ constant values have changed, definitely recompile your apps before using the new DLL!
  • Bugfix: fixed crash bug with context switch thread exiting on Windows
  • Enhancement: 32-bit linux/x86 run-time released!

Visualizer

  • Change: changed color scheme a bit
  • Change: maximum zone depth is now 32
  • Bugfix: fixed bug in by-frame % profiler view calculations
  • Enhancement: profiler view has running sum column now
  • Enhancement: highlighting a plot highlights its associated label as well
  • Enhancement: mousewheel can zoom either horizontally or vertically depending on options setting

Misc

  • Bugfix: fixed failure to call init_system in some of the example programs, preventing execution on PS3
  • Enhancement: clarified documentation on various tmOpen crashes
  • Enhancement: added docs on using multiple context pointers to control data collection

Server

  • Bugfix: fixed server crash bug

Release 1.0j Apr 20, 2011

This is release 1.0j of Telemetry with the following changes since 1.0i.

Run-time

  • Enhancement: alpha support for PS3 (PPU-only)
  • Enhancement: direct va_list support all vararg APIs! See docs for more information.
  • Bugfix: if connection to server goes away the run-time no longer occasionally hangs/crashes
  • Enhancement: added tmEndTryLockEx
  • Enhancement: new APIs, tmEnterThread and tmLeaveThread, allow you to specify the thread ID of the zone
  • Enhancement: new APIs, tmBeginTimeSpanAt and tmEndTimeSpanAt, allow you to specify timestamps of timespans
  • Enhancement: significant performance boost in the context switch thread ("(telemetry:ctxs)")
  • Change: TMOF_DEFAULT turns off context switches by default on Windows

Visualizer

  • Enhancement: alpha support for PS3 (PPU-only)
  • Enhancement: can now filter sessions by name and computer
  • Enhancement: massive memory usage reduction for messages
  • Enhancement: plot and memory events generate color coded virtual messages in the message window
  • Enhancement: bug with lock rendering was causing massive slow downs in certain special cases
  • Change: "localhost" option removed since it wasn't useful and was confusing
  • Change: text entry does proper text entry fields now
  • Change: dragging on a context switch line should no longer feel 'slippery'
  • Bugfix: plots were drawing over the slider in the mini-timeline view
  • Bugfix: minimized timespan track disappeared, there is now a button to restore it
  • Bugfix: paused frames weren't being rendered with a different color in the timeline view
  • Enhancement: you can now filter out user messages (tmMessage) in the Visualizer
  • Enhancement: added a -fullcrash option to generate a larger crash report instead of just a minidump
  • Enhancement: highlight context switch or lock event spans highlights the appropriate segment of time in zones
  • Enhancement: the message tab "Copy/Save To File" operations now insert timestamps in each message

Server

  • Enhancement: alpha support for PS3 (PPU-only)
  • Bugfix: callstack processing wasn't properly retrieving last entry all the time
  • Change: -localhost option removed since it wasn't useful and was confusing
  • Enhancement: crash dump generator added, along with -minidump option to disable full memory minidumps

Release 1.0i Mar 10, 2011

This is release 1.0i of Telemetry with the following changes since 1.0h.

Run-time

  • Enhancement: Telemetry now generates a "telemetry/context switches" plot automatically
  • Enhancement: Telemetry now generates a "telemetry/buffer size" plot automatically so you can see how much memory Telemetry is buffering at most
  • Enhancement: Greatly optimized the performance of the context switch thread ("telemetry:ctxs") by caching process ids
  • Enhancement: changed networking back end to trickle data out more steadily resulting in a huge speed boost with much fewer performance spikes
  • Enhancement: internal 'flipbufferpointers' zone now lets you know why it was called (out of space, trickling, or explicit)

Visualizer

  • Enhancement: minimized tracks now stack vertically if they run out of room horizontally
  • Enhancement: revamped the message window so that it's much faster and easier to read with extremely large datasets
  • Enhancement: huge speed improvement to rendering of locks
  • Bugfix: memory corruption error if there were more than 32K plot points in a single plot
  • Bugfix: fixed crash bug for certain windowed generated plots
  • Change: windowed average generated plots now put in 0 if there are no samples in the window
  • Change: non-idle non-system processes in the context switch track are now rendered in light gray so you can differentiate between system idle and other processes
  • Change: "mutex states" is now called "lock states" in the generated plots

Release 1.0h Feb 17, 2011

This is release 1.0h of Telemetry with the following changes since 1.0g.

Run-time

  • Enhancement: new tmSetLockStateMinTime API lets you prefilter short duration lock events before sending them to the server!
  • Enhancement: new tmSetParameter API added, currently only a single option

Examples

  • Change: examples cleaned up and made more consistent between each other.

Visualizer

  • Change: imposed 60Hz frame rate cap, which greatly reduces load/stress on systems where drivers aren't capping frame rate.
  • Change: Crash dump now has Telemetry version embedded in the filename
  • Enhancement: previous limit of 32K plot points has been removed, now effectively have unlimited plot points.
  • Bugfix: spaces in the PDB path would cause a crash when symbolizing data. Paths are now quoted before being sent to the symbolizer.
  • Bugfix: non-printable characters in plot names would make them not appear properly
  • Bugfix: fixed minor bug where tabs remained grayed out until a frame's data showed up instead of just the timeline data

Server

  • Bugfix: under certain conditions if a file was missing it would crash the server

Release 1.0g Feb 11, 2011

This is release 1.0g of Telemetry with the following changes since 1.0f

Run-time

  • Enhancement: tmSignalLockCount support for semaphores!
  • Enhancement: tmBeginTimespan and tmEndTimeSpan support!
  • Change: tmOpen now accepts names with spaces in them and automatically substitutes underscores
  • Change: tmLoadTelemetry now tries to load first from the EXE path, and then without a path (which means the standard Windows search order is used)
  • Bugfix: fixed race condition in 360 context switch capture that was causing rare memory corruption
  • Bugfix: callstacks that were very deep (more than 32 levels) were truncated

Visualizer

  • Enhancement: you can now specify the location of acquired data! Click on the "..." button after stopping the integrated server, then select the directory where you'd like acquired data to go.
  • Enhancement: generated plot interface is cleaner
  • Enhancement: generated plots now support by-frame window sizes
  • Enhancement: generated plots now support centered instead of just trailing window
  • Enhancement: semaphore support! Visualize multiple threads taking a semaphore and when semaphores are increment!
  • Enhancement: you can now specify the storage directory for the server in the Visualizer!
  • Enhancement: timespan support! Look at arbitrary timespans that straddle threads in a separate track!
  • Change: revamped internal options/cvar system
  • Change: gold color for threads now reserved for system threads
  • Change: fixed how names are displayed in context view track on 360
  • Bugfix: fixed shutdown race condition and double delete bug

Server

  • Change: lock events now sent globally instead of per frame
  • Change: rearchitecture of server threads should provide better stability

Other

  • Change: updated documentation on multithreading support
  • Enhancement: symbolizer performance speed ups with large logs
  • Bugfix: fixed tmsym bug where its internal buffers would overflow with large data dumps from the server

Release 1.0f January 17, 2011

This is release 1.0f of Telemetry with the following changes since 1.0e

Run-time

  • Change: tmOpen now blocks while waiting for handshake
  • Change: tmTick now only sends packets after handshake received
  • Enhancement: network traffic plot is automatically generated now
  • Bugfix: run-time could get hung when server went away unexpectedly
  • Bugfix: fixed a race condition for context switch queue thread startup on 360
  • Bugfix: fixed off-by-1 memory overwrite bug in 360 context switch queue handling

Visualizer

  • Enhancement: lock track revised! Now you can see which threads are blocking on a lock instead of just which one has ownership.
  • Enhancement: zone tooltip now displays the lock it's waiting on if it's a stall zone generated due to a tmTryLock
  • Enhancement: context switch lines are drawn as thin lines if they're waiting on a resource instead of switched to another thread of execution. For example on 360 if you're waiting for a mutex but don't have another thread to run the scheduler will make you idle, but instead of seeing this as swapped to the system, you'll see it as your own thread still running but waiting.
  • Enhancement: known system threads on 360 are rendered in yellow on the context switch queue track
  • Enhancement: BETA implementation of generated plots! Now you can right click a plot in the plot window and generate a new plot consisting of the average or sum of values over a window or the entire run duration. This will be enhanced significantly in the coming weeks.
  • Change: slightly widened zoom extents when zooming into a zone
  • Bugfix: clicking on frame header or double clicking in minitimeline in zone view weren't working
  • Bugfix: fixed double hit processing of mouse click in zone view
  • Bugfix: small memory leak with thread name and lock name events fixed
  • Bugfix: gui state wasn't being reset with 'last captured' and 'last viewed' which would lead to some weird visual glitches
  • Bugfix: race condition when exiting Visualizer while still connected fixed
  • Bugfix: when hovering over a plot label and then moving off, the old plot would stay 'hot', not the hot plot is reset to none
  • Change: when 'Locks' track is minimized it's now called 'Locks' instead of 'Mutexes'
  • Change: increased alpha for faded out plots

Server

  • Enhancement: optimized background network traffic sending to reduce potential hitches in performance from large data buffer sends
  • Bugfix: lock pointers and accumulation zone counts were not properly stored to disk
  • Bugfix: server more robustly catches client side failures/disconnects such as excessive zones
  • Bugfix: server no longer keeps a connection alive when the associated cooking thread is no longer live

Other

  • Change: examples cleaned up a bit
  • Bugfix: fixed documentation error on how to wait for context switch queues to finish

Release 1.0e January 10, 2011

This is release 1.0e of Telemetry with the following changes since 1.0d.

Run-time

  • Enhancement: we now support context switch Visualization on the 360!! Watch each hardware thread as software threads switch in and out.
  • Enhancement: TMPT_PERCENTAGE_DIRECT value of TmPlotType now works with integer plot calls
  • Enhancement: We're now shipping with a 'checked' build of Telemetry. Specify 1 to tmLoadTelemetry and the checked build loads with lots of debug information sent to your debug window! Note that the checked libraries are now appended with the letter 'c' instead of the letter 'd' (e.g. telemetry64c.dll).
  • Enhancement: run-time detects out of date server/wrong protocol version and returns TMERR_BAD_HANDSHAKE
  • Bugfix: Variable argument lists to the various plot commands would result in a run-time crash.
  • Bugfix: tmGetPlatformInformation was not exported on the 360 library.
  • Enhancement: No more stalls when calling tmTick while flipping buffer pointers! Telemetry's data buffers are now flipped and sent to the network only after a timeout (one second) or when they are more than half-full. This means low traffic but high frame rate (>250fps) isn't artificially throttled waiting on the network.
  • Enhancement: We now use DisconnectEx on Windows in an attempt to flush the buffers before closing sockets.
  • Change: We no longer generate a network traffic plot since it's no longer guaranteed to happen at tick time. This will be reimplemented
  • Change: some of the TMERR_* codes have been renumbered later.

Visualizer

  • Enhancement: we now support context switch Visualization on the 360!! Watch each core as threads switch in and out.
  • Enhancement: hovering over the name of a plot in the plot tree highlights that plot
  • Enhancement: current panel is now saved as part of the undo state (i.e. ctrl-z is basically a 'back' button)
  • Enhancement: mouse thumb/back button is synonymous with using ctrl-z to undo view state
  • Enhancement: Visualizer now throws up a warning if you try to load a dataset with no frames
  • Bugfix: bad server commands will result in disconnection instead of continuing in bad state
  • Bugfix: bug with right-click bringing up too many menus on some zones
  • Bugfix: race condition fixed when incoming frame summaries were purged before being referenced
  • Bugfix: fixed rare memory leak in lock event handling
  • Bugfix: text renders properly when using Remote Desktop and the Visualizer
  • Bugfix: protocol negotiation was buggy, so mismatched server/Visualizer could result in weird behaviour

Server

  • Bugfix: protocol negotiation was buggy, so mismatched server/Visualizer could result in weird behaviour
  • Enhancement: You can now specify if you want to limit connections to the Visualizer or the profiler with the -deny [Visualizer|profiler] command line options.
  • Bugfix: date/time wasn't properly handled for session times with 360
  • Bugfix: Server did not handle executable filenames with spaces in them properly, resulting in missing sessions.
  • Bugfix: Server wasn't accurately differentiating between "number of zones received" and "number of zones stored to disk". The latter is clamped to 64K zone children per zone so sometimes the reported zone count for very high numbers would not match the actual number of zones. We now store actual number of zones instead of the number of zones received.
  • Bugfix: Some server side warnings were inadvertently triggering fatal error handling.
  • Enhancement: The server kicks inactive/idle profiler clients. The default timeout is 10 minutes, but can be overridden with the -timeout command line.
  • Enhancement: The server kicks multiple connections from the same source (machine name + IP + app name) unless specifically asked not to by the client with TMOF_DONT_KILL_OTHER_SESSIONS

Release 1.0d December 22, 2010

This is release 1.0d of Telemetry with the following changes since 1.0c. This is a minor maintenance release.

Run-time

  • Change: renamed tmBlobEx to tmDisjointBlob
  • Bugfix/Change: 360: we now parse IP addresses first using inet_addr instead of relying on DNS lookup, this should fix connection problems some customers were having
  • Change: TMPT_PERCENTAGE_DIRECT value of TmPlotType values are ignored and error set unless calling tmPlot or tmPlotF64
  • Enhancement: there are now typed versions of tmPlot, specifically tmPlotF64, tmPlotU32, tmPlotI32, tmPlotU64, and tmPlotI64

Visualizer

  • Change: Search for license keys in EXE directory if none found in the Telemetry data directory
  • Bugfix: TMPT_PERCENTAGE_COMPUTED value of TmPlotType was not properly supported
  • Bugfix: TMPT_PERCENTAGE_DIRECT value of TmPlotType with doubles was buggy
  • Bugfix: Visualizer wasn't switching to timeline view automatically
  • Bugfix: GUI state wasn't cleared properly if loading a new session

Server

No changes

Release 1.0c December 15, 2010

This is release 1.0c of Telemetry with the following changes since 1.0b:

Run-time

  • Enhancement: 360 beta implementation
  • Enhancement: network stream is now packed, reducing traffic significantly
  • Change/Enhancement: significant change to callstack handling. tmx_callstack is now obsolete and replaced by first class functions.
  • Enhancement: TMO_RECORD_CALLSTACKS value of TmOption added
  • Enhancement: tmGetCallStack and tmSendCallStack APIs added, along with "%t" support
  • Change: TMCINT_USB removed for now
  • Enhancement: "Ex" functions (tmAllocEx, tmLeaveEx, etc.) documented
  • Enhancement: added tmGetSessionName
  • Bugfix: fixed potential crash bug with context switch queue thread buffer callback
  • Bugfix: handles disconnection from server
  • Bugfix: tmGetConnectionStatus macro was wrong

Visualizer

  • Enhancement: aVisualizer accepts command line arguments for server, port, and session name
  • Change: Plots no longer interpolate by default
  • Bugfix: Pointers displayed in run-time format instead of Visualizer format
  • Enhancement: Plot data points optionally rendered
  • Enhancement: "Jump to source" implemented
  • Enhancement: highlight persists when clicking on mem event
  • Enhancement: significantly optimized rendering of plots
  • Change: profiler drop-down entries renamed to be clearer
  • Bugfix: bug fixed with by-frame-% computations and hover/tooltip
  • Change: maximum number of messages in a tooltip capped to 64
  • Enhancement: tooltip on mutex track now shows duration of lock/interval
  • Bugfix: fixed zoom bug and various other rendering issues
  • Enhancement: Symbol Resolution feature added
  • Change: Leaks ignore mem event 'overcrowding' optimization
  • Change: "..." button now called "Notes"
  • Enhancement: Mem event rendering revamped...scale readjusted and 'free' events have a height
  • Enhancement: "Free" memory events now report size of associated allocation
  • Bugfix: fixed minor visual error if not autostarting server

Server

  • Enhancement: sends disconnect (optionally) to the run-time
  • Enhancement: Symbol update support added
  • Change: Radically changed exception management for more robustness
  • Bugfix: Fixed several memory leaks in server
  • Enhancement: Server now deletes files if there's an error when processing incoming data
  • Enhancement: optimized some internal memory management (pooled allocator for frame data)
  • Enhancement: API now has tmsGetTelemetryContext

Release 1.0b November 5, 2010

This is release 1.0b of Telemetry with the following changes since 1.0a:

Run-time

  • Enhancement: Example programs revised/updated.
  • Bugfix: NTELEMETRY=1 compilation did not work in some cases

Visualizer

  • Change: Visualizer now lists all IP addresses associated with the machine's server
  • Bugfix: MSVCRT was throwing exceptions if buffers were overrun instead of truncating properly, changed to using a proper truncating sprintf
  • Bugfix: (related to prior) callstack display of tooltips would crash if the total display was > 2K characters (e.g. STL)
  • Bugfix: profiler computations crashed if there were no zones
  • Bugfix: if game took a long time to generate initial data and you connected with the Visualizer, Visualizer would not receive updates properly until you disconnected and reconnected the Visualizer to the server. Fixed.
  • Bugfix: Last captured/Last viewed buttons did not work if you were already connected to a server.
  • Change: Scans for all *.key files in Visualizer data directory instead of single "license.key", allowing for multiple product registrations.

Server

  • Bugfix: fixed memory leak with memory events that had printf-style parameters tied to them
  • Bugfix: was not finding recorded sessions if there were no normal files in the capture directory

Release 1.0a October 25, 2010

This is the first release of Telemetry with the following changes since Beta 0.9h:

Run-time

  • Change: tmSetLockState, tmLockName, tmTryLock and tmEndTryLock now accept void* instead of TmU64
  • Change: tmSetMutexState is now called tmSetLockState
  • Change: tmMutexName is now called tmLockName
  • Change: tmEndTryLock no longer implicitly sets lock state
  • Change: tmDynamicString rolls over at 64K dynamic strings
  • Enhancement: Example source files now provided
  • Bugfix: Race condition with context switch queue shutdown and run-time shutdown
  • Enhancement: %I64x and %I32 support in format specifiers
  • Change: Added TELEMETRY_DEFAULT_PORT constant for use with tmOpen

Server

  • Enhancement: No longer open a file if it's already been sent to the Visualizer
  • Change: Data files are now stored in their own directories, making the data/ directory much cleaner
  • Change: Server now binds to INADDR_ANY instead of the machine's actual IP if localhost not specified, thereby allowing connections through the loopback address always.

Documentation

  • Enhancement: Significant updates to the documentation
  • Enhancement: Lots of new examples
  • Enhancement: Sample blob file and plugin added

Visualizer

  • Change: Server now binds to INADDR_ANY instead of the machine's actual IP if localhost not specified, thereby allowing connections through the loopback address always.
  • Change: License file support added
  • Enhancement: Sped up data processing significantly.
  • Bugfix: a renamed thread would not render properly vs. its previous named self
  • Bugfix: If connecting to a live session that then ended, the Visualizer was never notified that the session was no longer live.
  • Bugfix: Was creating a new connection every time 'Last Viewed' or 'Last Captured' were clicked instead of reusing the existing connection.
  • Bugfix: Fixed visual error when doing level-of-detail calculations and TMZF_PROFILER_ONLY zones
  • Bugfix: Plugin rendering was not checking for frame residency
  • Bugfix: Circular buffer could be overwritten in extreme traffic situations
  • Bugfix: fixed bad memory access bug that could happen if trying to view all frames in zone view simultaneously
  • Bugfix: Plot tree was not rendering top level pathless plots
  • Change: "Mutexes" track is now called "Locks"
  • Enhancement: "Name" in local server is now your computer name instead of ""
  • Change: Log tab no longer displayed
  • Bugfix: Click-to-activate no longer eats mouse click if you clicked on non-client area
  • Change: Now have a margin on sides of the timeline view
  • Change: Zones now show "<0.01ms" along with clock cycles if they're small enough
  • Change: Loading animation only plays if frame was requested
  • Enhancement: Plots are now slightly offset from each other so that if you have multiple plots with identical ranges they won't always overlap perfectly
  • Change: Hovering a context switch thread now highlights the entire associated thread instead of just the zone in which the context switch occurred
  • Enhancement: Timeline bars that go off screen are now rendered slightly different so that it's more apparent that they're going offscreen

Release 0.9h October 7, 2010

This is the eighth beta release of Telemetry with the following changes:

Run-time

  • Bugfix: potential crash bug if you delete memory associated with a context while the context switch thread is running
  • Bugfix: potential crash bug if TMOF_DISABLE_CONTEXT_SWITCHES was on
  • Enhancement: additional context switch logging modes added TMOF_MINIMAL_CONTEXT_SWITCHES, TMOF_MODERATE_CONTEXT_SWITCHES, TMOF_MAXIMUM_CONTEXT_SWITCHES
  • Enhancement: tmClearStaticString API added
  • Change: internal Telemetry zones now are prefixed with (telemetry) path
  • Bugfix: tmDynamicString was truncating last character
  • Bugfix: context switch events now have a capture time associated with them to avoid ordering issues

Server

  • Change: File names use a more standardized YYYYMMDD format
  • Change: Zero-length strings are no longer replaced with "<empty>"
  • Bugfix: Context switch events now stream back properly during live record
  • Bugfix: Mutex names could potentially arrive too early
  • Bugfix: in certain cases memory events were not being sent over
  • Change: context switch buffer on server increased to 1MB
  • Enhancement: Added tmsIsStillCooking API to server library.

Visualizer

  • Enhancement: horizontal slider in the mini-timeline track in zone view so quickly zoom back and forth
  • Enhancement: maximum visible frames raised to 1024 from 128. Not recommended to zoom out that far, but it's an option...
  • Enhancement: zoom level saved locally per session
  • Change: zone and messages tab are disabled if no active session
  • Bugfix: in some cases it was possible to crash on exit while data processing thread was working
  • Bugfix: memory was leaking in between sessions
  • Bugfix: was possible to press "Connect" even while in the process of connecting
  • Enhancement: right-click plot menus replaced by plot tree panel
  • Enhancement: revamped the timeline view to be more precise. Zoom and scrolls are clamped.
  • Enhancement: timeline bars now scale horizontally as well as vertically, i.e. timeline view is linear in time horizontally
  • Enhancement: multiple plots in a single frame are now handled properly in the timeline view
  • Enhancement: Fit All button added for timeline view
  • Enhancement: ctrl-mousewheel vertical resizing in timeline view implemented
  • Bugfix: messages of type zone_label/zone_sublabel were propagating up to parents incorrectly
  • Bugfix: certain format strings didn't expand properly in the profiler view
  • Bugfix: various fixes to different display issues
  • Enhancement: vertical slider in zone view to quickly scroll up and down the zone view
  • Change: maximization state now saved between sessions

Release 0.9g September 28, 2010

This is the seventh beta release of Telemetry with the following changes:

Run-time

  • Bugfix: tmOpen with -1 for timeout was not working properly
  • Enhancement: tmGetLastContextSwitchTime added so that an application can poll on exit to ensure all relevant context switches have arrived.
  • Enhancement: Support for TMMF_ICON_EXCLAMATION
  • Enhancement: Support for TMMF_ZONE_SHOW_IN_PARENTS

Server

  • Change: Server disconnects client if more than 1M zones in a single frame
  • Change: Zero-length strings are no longer replaced with "<empty>"
  • Bugfix: Context switch events now stream back properly during live record
  • Enhancement: Added tmsIsStillCooking API to server library.

Visualizer

  • Enhancement: Support for TMMF_ICON_EXCLAMATION
  • Enhancement: Support for TMMF_ZONE_SHOW_IN_PARENTS
  • Enhancement: Simple client side annotation support
  • Enhancement: "Frame percentage" profiler view implemented and now the default
  • Enhancement: Copy to clipboard/save to file implemented for message tab
  • Enhancement: Visualizer informs you if it's in the middle of cooking data and also the number and type of connected clients.
  • Enhancement: More performance improvements during loading
  • Enhancement: Profiler rows for idle zones are semitransparent
  • Enhancement: Changed internal memory allocation for better performance
  • Enhancement: Window position is saved and restored properly
  • Enhancement: Color coding for warning/errors/etc. in message window
  • Enhancement: Check box filters for normal, warning, and severe in message window
  • Enhancement: Visualizer throws up a message box if you try to exit while still cooking or hosting external connections
  • Bugfix: Last captured/last viewed now work properly even when connected to a server
  • Bugfix: Dragging too far to the left in the zone view no longer results in glitches

Release 0.9f September 21, 2010

This is the sixth beta release of Telemetry with the following changes:

Run-time

  • Change: Message flags have been renamed (TMMF_MSG_* => TMMF_SEVERITY_*). Existing data captures will not have proper messages in them.
  • Enhancement: TMMF_ZONE_LABEL and TMMF_ZONE_SUBLABEL added
  • Bugfix: context switch event aggregator wasn't locking the run-time context properly or checking for pause conditions
  • Change: We now fully store all mutex/lock state events (previous version discarded release events to reduce data size)
  • Bugfix: tmMessage, tmSetTimelineSectionName and tmEmitAccumulationZone weren't honoring pause conditions
  • Bugfix: dynamic strings were copying one extra byte which was capable of corrupting the network stream to the server
  • Bugfix: internal lockwritebuffers overflow branch was buggy
  • Change: vestigial realloc plot no longer generated
  • Enhancement: TMO_RECORD_TELEMETRY_STALLS shows stalls waiting on the Telemetry mutex in the zone view

Visualizer

  • Change: Tooltip size now larger
  • Change: Live recording sessions are now green in the Visualizer session list
  • Change: Highlighted zone when hovering over a context switch is now based on context switch time, not its midpoint
  • Enhancement: if minimized, no longer do any rendering (to avoid OpenGL contention between multiple processes, i.e. a driver bug)
  • Bugfix: Off-by-one on zone depth cutoff
  • Bugfix: Removed memory leaks
  • Bugfix: Mem event matching was wrong in some cases
  • Bugfix: Clearing visualizer state wasn't clearing current filename resulting in intermittent crashes if you did a "Get" then immediately disconnected
  • Enhancement: Top of frame in zone view now colored same as timeline section
  • Enhancement: Major performance improvements across the board for memory events, context switches, and mutex state rendering.
  • Enhancement: Memory usage much improved
  • Enhancement: Streaming hitches reduced even more
  • Enhancement: Mutex state track now shows length of ownership if that information is available
  • Change: Frame prefetch changed to bring over prior frames as well in a 'fan out' form
  • Bugfix: Messages without a path weren't rendering
  • Enhancement: Rewritten buffer management should result in a lot more reliability

Release 0.9e September 14, 2010

This is the fifth beta release of Telemetry with the following changes:

Run-time

  • Change: Message paths work differently now, the path is parens enclosed now and there is no separate path specifier
  • Enhancement: TMOF_DISABLE_CONTEXT_SWITCHES added as tmOpen flag
  • Enhancement: TMO_SUPPORT_CONTEXT_SWITCHES is now exposed (but unsupported) in tmEnable
  • Enhancement: tmSetVariable supports varargs now
  • Change: tmCoreLeave no longer takes a reserved parameter and now takes a file/line
  • Change: tmEndTryLock takes an id to the object and now automatically calls tmSetMutexState if successful
  • Change: session start time is now subtracted off from everything to help with compression
  • Enhancement: tryLock now stores pointer for the mutex that is being waited on
  • Change: Changed various constant values/bit fields
  • Enhancement: tmGetPlatformInformation added and can return the thread ID of the processing and context switch threads
  • Change: tmCoreFree now accepts file/line
  • Change: tmEndTryLock now calls tmSetMutexState appropriately on success
  • Change: dynamic strings are now handled differently

Visualizer

  • Enhancement: Click-to-activate is now an option
  • Enhancement: Very crude message filtering in place
  • Enhancement: Spread out computations over time a bit more to reduce hitching
  • Enhancement: Context switch visualization track
  • Change: exe name now printed in session list for TMLite sessions

Release 0.9d September 7, 2010

This is the fourth beta release of Telemetry with the following changes:

Visualizer

  • Enhancement: removed a lot of the locking that was going on, performance should be significantly smoother
  • Enhancement: cleaned up connection logic
  • Enhancement: added server removal tab
  • Enhancement: Significant performance improvements across the board
  • Change: back-to-back identical timeline section names (state tags) now merge
  • Change: reduced socket buffer sizes to 512K
  • Bugfix: fixed overlapping plot rendering/hot issue
  • Bugfix: fixed issue where all aggregate (LOD) zones were considered the same
  • Change: thread IDs now show up in tooltips instead of track heads

Run-time

  • Change: accumulation zone API has changed. tmEmitAccumulationZones is now replaced by tmEmitAccumulationZone.
  • Change: Blobs now have a separate identifier string
  • Change: tmTryLock now takes a 64-bit id for the mutex being locked
  • Change: TmHandle now called HTELEMETRY
  • Change: tmOpen validates app name, may only contain alphanumeric, _, and -
  • Change: tmPlot, tmBlob, tmBlobEx, tmEnter, tmZone, tmThreadName, tmAlloc, tmMutexName have different order of parameters now
  • Change: tmTagState now called tmSetTimelineSectionName
  • Change: Secondary names are no longer supported
  • Bugfix: Spurious handshake warnings removed
  • Enhancement: Support for printf style format specifiers in most APIs that take a name, including tmMessage
  • Change: STRING POOLING MUST BE TURNED ON FOR BEST PERFORMANCE
  • Change: tmTick no longer takes a second parameter
  • Change: tmRealloc no longer supported
  • Enhancement: converted to background thread processing and data buffer sending in the run-time. This means that there should be almost no performance impact for calling tmTick if your context is large enough.
  • Change: error management totally revamped, now most errors are accessed via tmGetLastError instead of return values.
  • Change: removed tmFlush API
  • Change: tmInitializeContext no longer takes a string pool argument
  • Change: immediate queries via tmGetStati, tmGetConnectionStatus, and tmIsEnabled are now return values instead of stored in a reference parameter.
  • Change: tmConnectionStatus now named tmGetConnectionStatus

Server (Visualizer and Command Line)

  • Enhancement: Server is now multithreaded, with separate threads for cooking data, listening for connections, managing visualizer requests, and handling incoming profiler data.
  • Change: Server tracks what data has been sent to the client and avoids sending duplicate data if possible
  • Change: Server sending more data at once now
  • Change: Disk format changed
  • Change: removed server-generated plots of memory events
  • Change: reduced socket buffer sizes to 512K
  • Change: server scans for all directories at startup instead of constantly looking for changes
  • Enhancement: can mirror network stream to disk with option now

Misc & Docs

  • Enhancement: updated/clarified docs

Release 0.9c July 14 2010

This is the third beta release of Telemetry with the following changes:

Visualizer

  • Change: double click takes you to the frame instead of normal click
  • Bugfix: right-click menus had various visual and behavioural errors that are now fixed
  • Bugfix: changing zone depth slider didn't adjust track view heights
  • Enhancement: plots fade out if another plot is highlighted
  • Enhancement: mousewheel + ctrl does vertical compression
  • Enhancement: LOD for zones
  • Enhancement: stall and idles zones propagate up to parents as overlay regions
  • Enhancement: added slider for profiler rows
  • Bugfix: -All didn't adjust scroll region appropriately
  • Change: Use ExitProcess do quit out if connected to localhost and hosting server
  • Enhancement: Server list can be managed now (i.e. server entries deleted)
  • Enhancement: tooltips work for mutex events
  • Bugfix: high-res icon wasn't being displayed in Explorer
  • Enhancement: mouse moves are no longer processed if not the active window
  • Change: frames always requested irrespective of visible width
  • Enhancement: massive internal rearchitecture of Visualizer to minimize lock thrashing
  • Enhancement: accumulation zones count forward now
  • Enhancement: 'now loading' animation when a frame's data is being loaded
  • Enhancement: vestigial zone id architecture now toast
  • Enhancement: many, many rendering performance optimizations
  • Enhancement: most calculations now moved into data processing thread
  • Enhancement: "free" memevents now display size of allocation that was freed if available
  • Bugfix: memevents weren't drawing line numbers in tooltips
  • Change: memory histogram tracks removed since they were confusing. Replaced with a summary information track.
  • Enhancement: plot groups that share scale are now supported

Run-time

  • Change: lib files are now called telemetry32.link.lib and telemetry64.link.lib
  • Change: New DLL architecture to avoid delay loading
  • Change: Windows: now grabbing context switch events via ETW
  • Change: continued re-architecture of header files for compatibility with other RAD redistributables
  • Change: Adjusted some stack sizes to avoid stack overrun issues on Windows
  • Bugfix: tmEmitAccumulationZones wasn't propagating counts correctly
  • Bugfix: tmSetMutexState macros were wrong
  • Enhancement: TMZF_PROFILER_ONLY flag added
  • Change: no longer hash strings, instead we retain pointers

Server (Visualizer and Command Line)

  • Enhancement: sends over up to 1MB of timeline summaries at once instead of just 100 frames
  • Enhancement: zoneinfos are sent in bulk now
  • Enhancement: TM_SERVER_FRAME_DONE messages now sent after open allocations
  • Enhancement: vestigial zone id architecture now toast

Misc & Docs

  • Enhancement: more documentation on accumulation zones and platforms

Release 0.9b

This is the second beta release of Telemetry with the following changes:

Visualizer

  • Bugfix: zones in unnamed threads did not render
  • Bugfix: Telemetry Visualizer DLL dependencies fixed
  • Bugfix: zooming with mousewheel works better in 64-bit
  • Bugfix: mutex track didn't minimize to button
  • Bugfix: click through on mouse activate no longer happens, instead it's click-to-activate
  • Bugfix: labels are now visible in parent zones when zoomed into a child
  • Bugfix: right-click menus no longer clip off in weird places
  • Enhancement: better performance when connected to server for visualization (globals incrementally sent)
  • Enhancement: timeline track in zone and message views no longer supports zoom/scroll, fixed size instead
  • Enhancement: zone cutoff set to 0.0ms instead of 0.5ms
  • Enhancement: all tracks can be minimized now, not just thread tracks
  • Enhancement: plots fade out if another plot is highlighted
  • Change: visualizer now delay loads telemetry and callstack DLLs so we don't have to distribute those with it
  • Change: Mutex state API now takes independent file/line
  • Bugfix: Now clamp range to 128 frames when zooming into zone view
  • Bugfix: was defaulting to wrong connection port if no port specified
  • Change: CPU Load no longer displayed (is inaccurate)
  • Bugfix: localhost option in visualizer was not persistent
  • Bugfix: Visualizer would get in endless warning loop if processtime was 0 (360)

Run-time

  • Change: tmEmitAccumulationZones accepts an optional array of counts
  • Change: re-architecture of header files for compatibility with other RAD redistributables
  • Change: tmZone C++ helper checks context for NULL before calling enter/leave (necessary for delay loading)
  • Change: TMERR_ARENA_SIZE_TOO_SMALL now returned by tmOpen instead of TMERR_INVALID_PARAM

Server

  • Change: zone userdata now stored to disk

Misc & Docs

  • Enhancement: more documentation on accumulation zones
  • Enhancement: fixes to docs that were inaccurate (specifically, code samples using wrong parameters)

Release 0.9a

This is the first beta release of Telemetry, which includes:

  • Telemetry SDK for Windows
  • Telemetry Visualizer for Windows