Tuesday, April 19, 2011

RAD Telemetry 1.0j shipped!

Telemetry 1.0j is out the door! The big news, of course, is that there is alpha support for PS3 (PPU only) right now. If you're a PS3 developer please check it out and hammer on it, we need some data and use cases from the field.

Here are some of the major changes:

  • PS3 support (PPU only)

  • direct va_list support in all the vararg APIs. This was heavily requested and now it's in there!

  • race conditions/crashes in the run-time when the server went away unexpectedly should be reduced

  • added tmEndTryLockEx (just like tmEndTryLock but with explicit file/line)

  • new APIs! tmEnterThread and tmLeaveThread which allow you to specify the thread for the zone. This was crucial for 'logical thread' support (e.g. fibers, cooperative threads, etc.)

  • new APIs #2! tmBeginTimeSpanAt and tmEndTimeSpanAt allow you to specify the timestamps for timespan events, so you can time an external event and insert it retroactively

  • 360/Windows: significant performance boost in the context switch thread ("telemetry:ctxs")

  • TMOF_DEFAULT turns off context switches by default on Windows -- the overhead was just too high for users that didn't need it

The Visualizer got some love too:

  • Filter session lists by name and computer! This was requested quite a bit for customers had thousands of sessions to sift through.

  • Massive memory usage reduction for messages

  • Plot and memory events generate virtual messages in the message window (with a different color, and you can even now filter out all user messages if you want)

  • A bug with lock rendering was causing massive slow downs in certain special cases, fixed!

  • Localhost option has been removed since it was confusing and not very useful

  • Text entry fields should be normal now

  • Plots no longer render over the slider in the mini-timeline view

  • Clicking and dragging on a context switch span should still drag/scroll

  • Minimized timespan track would disappear

  • Paused frames are no rendered with a different color in the timeline view

  • Highlighting a context switch or lock event span highlights the appropriate subsection of a zone in the zone view

  • Timestamps are now inserted into the log entries when you use "Copy/Save To File"

And the server had some minor changes:

  • Bugfix: callstack processing wasn't processing last entry all the time

  • Change: -localhost option removed since it wasn't useful and confused people most of the time

  • Crash dump generator added, along with -minidump option to disable full memory crash dumps

Tuesday, April 5, 2011

Arena/heap memory APIs

Telemetry currently has a simple API to let you mark memory allocations and frees (tmAlloc and tmFree respectively). You can specify a hierarchical path-like structure to categorize the type of allocations, e.g.: tmAlloc( cx, ptr, size, "/meshes/vehicles/supertank" ); A commonly requested feature is the ability to handle different heaps/allocators/arenas such as:

  • arenas that are freed in one shot (so you don't have to call tmFree on all the suballocations)

  • handle or index based allocators with a base and range, resulting in overlapping 'address spaces'

  • small allocators for strings, particles, and small temporaries

And there are many other examples I'm sure, which is why I'm posting here -- what are your needs in terms of expressive memory allocation tracking? Drop me a line (or post here) at telemetry@radgametools.com since I'd like to tackle this right after the PS3/PPU release!