I’m back from my 7-day Eastern Caribbean cruise and of course the first thing on my mind is my Multimedia Virtualization blog! We’ve just migrated the Citrix blog site to an updated system so I had a few transitional issues to work through, but now I’m ready to share with you Part 2 of my series on optimizing Adobe Flash performance on Citrix Presentation Server. (Click here to read Part 1.)
There’s definitely more to optimizing Adobe Flash than configuring SpeedScreen Flash Acceleration (“SpeedFlash”) and making sure you have any required hotfixes to handle newer versions of Flash. One of the features of Presentation Server that can have a very substantial positive impact on Flash performance (animations and video) is Queuing & Tossing. This feature shows up in the management console as “Discard queued images which are replaced by other images” or “Discard redundant graphics operations”, depending on which version of Presentation Server you’re running.
The Queuing & Tossing feature of Thinwire briefly queues GDI draw commands and, before sending them over ICA, inspects the stack in reverse order (LIFO) to allow tossing of obsolete commands (those which have been overwritten by subsequent commands). The queuing period is short enough (30ms) that it doesn’t degrade the responsiveness of the application; in fact, performance is significantly improved because draw commands that are logically redundant are discarded.
The tossing algorithm was enhanced in Presentation Server 4.5 (Ohio) to look for more graphics constructs. The tossing algorithm now uses a 1-bit-per-pixel map of the session screen. And it can detect complete self-contained ‘frames’. As a result, Thinwire will either send the entire frame to the client as a self-contained entity or toss it completely. These improvements to the tossing algorithm further reduce the amount of data that needs to be sent over the wire. Along with reduced network bandwidth consumption, network efficiency (data bytes per frame) is increased. And the user experience is better because the entire frame gets updated at once rather than in pieces.
So, just how big a difference does all of this make? I recently spoke with one of our engineers who has been taking performance measurements with Flash videos. In his testing, he found that enabling Queuing & Tossing reduced bandwidth consumption by more than 3 times!
In addition to the new framing behavior of Queuing & Tossing in PS 4.5, just-in-time output behavior has further improved Flash performance. Flash video playback with PS 4.5 is noticeably smoother. And CPU consumption is lower, which increases server scalability (number of simultaneous Flash users per server).
There’s still quite a bit more to tell you about Adobe Flash performance optimization, so stay tuned for my next installment on this topic.
Product Strategist, Multimedia Virtualization