Citrix XenApp Thinwire Plus – Real Life statistics

Sinds Windows 2012R2 is Microsoft meer gebruik gaan maken van DirectX voor de grafische opbouw van de desktop, daar waar ze eerder GDI/GDI+ API calls gebruikten. Dit was te merken aan het ICA protocol, wat zwaar geoptimaliseerd was voor GDI en onder Windows 2012R2 een hogere bandbreedte tot gevolg had.

1. without tuningHalverwege dit jaar waren we bij een van onze klanten bezig met een implementatie van XenApp 7.6 op Windows 2012 R2. Helaas had deze klant ook een aantal lage bandbreedte lokaties. De smalste lijnen waren 256kbit en daar moesten ongeveer 7 sessie overheen lopen, wat neerkomt op ongeveer 35 kbit/s per sessie. We hadden de h264 (SuperCodec) compressie al uitgeschakeld omdat deze een veel te hoge bandbreedte veroorzaakte en een hoop optimalisatie toegepast binnen de policies, maar we kregen de lijn niet onder de 150kbit/s. Gemiddeld kwamen we uit rond de 170 kbit/s. De 35 kbit/s leek nooit haalbaar te zijn.

Na wat gebel met Citrix besloten we Project Snowball te omarmen, een project dat zich richtte op optimalisatie van Thinwire binnen het ICA protocol en wat we sinds Feature Pack 3 nu Thinwire Plus noemen. Deze zou de bandbreedte weer moeten verlagen naar een niveau wat eerder onder Windows 2008R2 haalbaar was.

Na installeren van de beta op de testservers bleek dat we de servers moesten dwingen om de compatibiliteitsmodus te kiezen. Een keuze moment, want om dit te doen moesten we de SuperCodec in zijn geheel uitschakelen voor de server voor alle gebruikers die daar op zitten. Daarmee dwing je elke sessie om Thinwire te gebruiken, ook daar waar de lijnen bandbreedte genoeg hebben en de SuperCodec wel gebruikt kan worden. Dit gebeurd door de volgende registry key door te voeren:

  • HKLM\Software\Citrix\Graphics
    • Name: encoder
    • Type: reg_dword
    • Value: 0

Daarnaast werd ook in de policy de Progressive Compression Level naar Medium gezet, zoals in de richtlijnen voor Thinwire Plus stond aangegeven.

snowball active - thinwire plus without optimizationDe eerste resultaten waren super. Direct na het installeren van Thinwire Plus daalde de gemiddelde bandbreedte al met 50% naar 83 kbit/s.

 

Na verdere tuning van alle onderdelen was het zelfs mogelijk om nog verder naar beneden te gaan. Daarvoor moesten wel enkele extreme maatregelen genomen worden voor de mensen op lage bandbreedte. De onderstaande instellingen werden gemaakt om de bandbreedte verder te reduceren. In het oog valt de target framerate die naar 15fps is gezet en het gebruik van 16bit kleuren werd doorgevoerd. Als laatste is een beperking per sessie van bandbreedte opgelegd van maximum 150 kbps.

  • gpoMaximum allowed color depth: 16 bits per level. (reductie van 10-15% aan bandbreedte, alleen voor hele server in te schakelen)
  • Allow Visual Lossless compression: Disabled
  • Audio over UDP: Disabled
  • Client audio redirection: Disabled
  • Client microfoon redirection: Disabled
  • Desktop Composition Redirection: Disabled (voorkomt dat DCR de voorkeur krijgt boven Enhanced ThinWire)
  • Desktop Wallpaper: Disabled (zorgt voor egale achtergrond kleur)
  • Extra color compression: Enabled (reductie bandbreedte, verhoogde server cpu)
  • Extra color space threshold: 8192 kbs (default)
  • Heavyweight Compression: Enabled
  • Lossy Compression Level: High
  • Lossy compression threshold: 2147483647 Kbps (default)
  • Menu animation: Prohibited (reductie bandbreedte door geen gebruik menu animaties)
  • Minimum Image Quality: Low (altijd extra compressie toepassen boven scherper beeld)
  • Moving image compression: Enabled
  • Optimization for Windows Media redirection over WAN: Disabled (voorkomt WMV over de WAN richting de client)
  • Overall Session bandwidth limit: 150 Kbps (maximum bandbreedte per sessie)
  • Progressive compression level: medium (verplicht voor de enhanced thinwire)
  • Progressive compression threshold: 2147883647 Kbps (default)
  • Target frame rate: 15 fps
  • Target minimum frame rate: 10 fps (default)

3. snowball heavy tunedNa doorvoeren van deze policy kwam in de testsituatie het gemiddelde op 16 kbit/s. Een waarde die we in het begin absoluut niet dachten te gaan halen. In de gebruikerstesten kwam naar voren dat er nog goed gewerkt kon worden op de omgeving, ondanks alle beperkingen die we in de policy hadden opgelegd.

Na alles doorgevoerd te hebben in de productie omgeving zien we dat een gemiddelde sessie nu rond de 30 kbit/s gebruikt. Iets meer dan in de testomgeving, maar zeker geen waarden waar we over klagen. De gebruikers kunnen er goed mee werken en zijn tevreden.

Overigens kwamen we er bij testen achter dat bij een passthrough applicatie (waarbij gebruikers eerst verbinden naar een gepubliceerde desktop en daarna een gepubliceerde applicatie op een andere server starten), de Thinwire Plus configuratie op beide servers actief moet zijn. Als we dat niet deden zagen we het bandbreedte verbruik naar de client weer flink toenemen.

(al mijn collega’s bedankt voor het aanleveren van de performance metingen!)

 

Note: De registrykey is vermoedelijk niet meer nodig. Na het updaten van de Citrix Group Policies is het mogelijk om deze instelling binnen een GPO te maken. Zie daarvoor ook https://www.citrix.com/blogs/2015/10/09/a-big-leap-in-ica-protocol-innovation-for-citrix/

Citrix XenApp/XenDesktop 7.6 Patches: Wat gaat waar

Sinds XenApp/XenDesktop 7.x geeft Citrix patches uit per los geinstalleerd onderdeel. Dit levert nogal een grote hoeveelheid patches op. Veel van deze patches hebben een omschrijving als ‘installeren op de server die het nodig heeft’ of ‘Voor XenApp/Xendesktop 7.6’. Niet echt een omschrijving waar je veel aan hebt als Studio, Director en Controller op losse servers staan.

Vandaar onderstaande lijst. Ik probeer deze elke maand up-to-date te houden. De lijst bevat alleen maar public hotfixes en is hier volledig te vinden. Feature Packs staan daar niet in. De laatste Feature Pack (FP3) is hier te vinden. Let er op dat je voor alle download links in dit artikel moet zijn ingelogd op MyCitrix. Doet de link het niet, log dan binnen de browser eerst in op MyCitrix en klik dan nogmaals op de link.

FR3FR2StudioDirectorControllerAgent TSAgent WSLink
DesktopDirector (7.6.300)xoldxLink
DStudio760WX64002xLink
CitrixGroupPolicyManagementxxLink
XDPoshModule760wx64002xoldxxLink
XA_XD_760_Controller_HFS_2xLink
HDXFlash1520WX64001xLink
HDXWMIPROV220WX64001xxxLink
WMIProxy_x64xoldxxzie DesktopDirector
MISA760WX64001xxLink
GPCSext240WX64001xxLink
ICATS760WX64009xLink
ICATS760WX64016xLink
ICATS760WX64034xLink
VDAServersetup_7.6.300*xxLink
ICAWS760WX64032xLink
VDAWorkstationsetup_7.6.300*xxLink

Mogelijk dat de nieuwe Virtual Desktop Agents (VDA) voor Server (XenApp) en Workstation (XenDesktop) al de patches bevatten die eerder in de lijst staan, maar dat heb ik nog niet zelf kunnen bevestigen.