Telemetry History
This change log includes the entire Telemetry development history.
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 namesRelease 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 changesRelease 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