Symptom

Citrix users have performance issues (bad user experience).

Problem

IMPORTANT: There is a big difference between locally defined ICA sessions on one hand, and Program Neighborhood or Webinterface sessions on the other in terms of configuration:

  • Locally defined ICA sessions are configured in the Thin Client Setup or IGEL Universal Management Suite (UMS), either with the configuration pages or in the registry.
  • Program Neighborhood sessions are configured on the server side, by editing the file default.ica (create a backup first!) that is located in the folder c:\inetpub\wwwroot\Citrix\PNAgent\conf (if you did not use the default settings during Cirix Webinterface installation, the path may vary).
  • Webinterface sessions (which are started via browser or in Appliance Mode) are similar to Program Neighborhood sessions, but the file default.ica is located in c:\inetpub\wwwroot\Citrix\XenApp\conf (default path).

Solution

  1. Reducing network load:
  • Compression:
    Enabling the parameter Compression lowers used network bandwidth at the cost of increased cpu load.
    • ICA sessions: Go to ICA > ICA Sessions > Name > Options, parameter Compress
    • PN/Webinterface: Add Compress in the section [Application], values: On/Off
  • Persistent Cache:
    Setting the parameter Persistent Cache Enabled has the potential to greatly reduce network load in later sessions when using the same applications.
    • ICA sessions: Go to ICA > ICA Sessions > Name > Options, parameter Persistent Cache Enabled
    • PN/Webinterface: Add PersistentCacheEnabled in the section [Application] , values: On/Off

    Please note that the persistent cache is located in the system's RAM by default - meaning it will survive a suspend, but not a reboot or shutdown. If you want it to be truly persistent (may lower lifetime of the system's flash module) you have to create a custom partition and set the parameter PersistentCachePath accordingly.
    • ICA sessions: Go to ICA > ICA Global > Options , parameter Persistent Cache Path
    • PN/Webinterface: Add PersistentCachePath in the section [Thinwire3.0], value: File system path

    The size of the cache can be controlled with the parameter Cache Size.
    • ICA sessions: Go to ICA > ICA Global > Options, parameter Cache Size (kB)
    • PN/Webinterface: Add PersistentCacheSize in the section [Thinwire3.0], value: Cache size (kB)

    The minimum size of a bitmap to be cached can be controlled using the parameter Minimum Bitmap Size (Byte).
    • ICA sessions: Go to ICA > ICA Global > Options, parameter Minimum Bitmap Size (Byte)
    • PN/Webinterface: Add PersistentCacheMinBitmap in the section [Thinwire3.0]. value: Minimum bitmap size (Byte)
  • Audio Bandwidth:
    Adjusting the parameter Audio bandwidth limit directly affects network load for published applications with much audio output.
    • ICA sessions: Go to ICA > ICA Sessions > Name > Options, parameter Audio Bandwidth Limit
    • PN/Webinterface: Add AudioBandwidthLimit in the section [Application], values: 0/1/2 for High/Medium/Low
  • MouseTimer/Keyboard Timer:
    The parameters MouseTimer and KeyboardTimer reduce the number of network packets by gathering several mouse/keyboard events and putting them together into one network packet. For the mouse, in older versions of IGEL Linux the default value was 100 (milliseconds), but this lead to strange behavior in some applications. Now the default value is 0 (for mouse and keyboard). It is not recommended to change this value for the keyboard, but if you have problems with your network load and want to reduce the number of network packets, you could try a higher value like 100 or even more for the mouse.
    • Locally defined ICA sessions:
      Registry path ica.wfclient.mousetimer (globally for all ICA sessions) or sessions.icaN.appsrv.mousetimer (for single session N), value: Time (milliseconds) to gather events
      Registry path ica.wfclient.keyboardtimer (globally for all ICA sessions) or sessions.icaN.appsrv.keyboardtimer (for single session N), value: Time (milliseconds) to gather events
    • PN/Webinterface: Add MouseTimer or KeyboardTimer in the section [Application], value: Time (milliseconds) to gather events
  1. Improving performance/user experience:
  • Speedscreen Latency Reduction:
    The parameters Mouse Click Feedback and Local Text Echo could improve the user experience for high latency network connections. Mouse Click Feedback shows a busy cursor when the user presses a mouse button to give him an immediate visual feedback and prevent him from clicking again. Local Text Echo lets the client pre-render the characters the user types to give the impression of a smooth text input.
    • ICA sessions: Go to ICA > ICA Sessions > Name > Options, parameter Mouse Click Feedback or Local Text Echo
    • PN/Webinterface: Add ZLMouseMode or ZLKeyboardMode in the section [Application], values: 0/1/2 for Off/On/Automatic
  • Deferred screen update mode:
    The parameter Deferred screen update mode defers graphical updates to the screen so that several updates are done in one batch operation. This speeds up the updates especially on slow machines with a poor refresh rate. The effect is very noticable when the screen contents refreshes rapidly, e.g. during scrolling.
    • ICA sessions: Go to ICA > ICA Global > Options, parameter Deferred screen update mode
    • PN/Webinterface: Add DeferredUpdateMode in the section [WFClient], values: True/False
  • Improve writing performance for redirected USB devices:
    To speed up writing on redirected USB media, it is possible to deactivate the parameter sync_option.

    Caution: Deactivating this parameter is not recommended. When it is disabled it is not guaranteed that the write process has finished when the software indicates it. Some data might still reside in the write buffer. If the user disconnects the USB device too early, the written data might not be complete and the data file(s) may be corrupt. Some USB devices have an LED that blinks when data is written. When it stops blinking, the write process should be completed, but it is not guaranteed.
    • Go to IGEL registry devices.autofs.sync_option
    • Deactivate the parameter sync_option