20.3 How to Improve Sun Ray Client Performance by Decreasing Buffering on the Network Switch (Oracle Solaris)

Some network switches do not work well with Sun Ray Clients when the server-side connection is configured to run at 1 Gbps. Because the Sun Ray Clients run at 100 Mbps and the data is sent from the X Windows server in periodic bursts, these switches are required to buffer a certain amount of data. This situation can happen even when the average data rate from the X server is well under 100 Mbps.

The X server is programmed in such a way that a certain allowed amount of data is sent at tick intervals. The original implementation had 50 ticks per second. The X server is allowed to send at a certain specific rate granted by the Sun Ray Client.

For example, if the Sun Ray Client's grant is 40 Mbps, it can send 5 MB per second in bursts that are sent every 1/50th of a second. This means that at each tick, the server can send 100 KB of data at a rate of 1 Gbps. This rate would cause a queue buildup in the switch of close to 100 KB, which would then drain out at 100 Mbps over the next 1/50th of a second.

The first action to mitigate this type of issue is to increase the number of ticks per second to 100 per second from 50. Thus, in the example above, the X server would send 50 KB every 10 ms rather than 100 KB every 20 ms. This setting would improve the situation considerably, but the problem would still remain. The 100 ticks per second rate was chosen because it corresponded to the normal resolution of the timer in Oracle Solaris and Oracle Linux.

To increase the number of ticks per second beyond 100, the operating system's timer must also be increased. For Oracle Solaris, use the following procedure.

Steps
  1. Add the following line to the /etc/system file:

    set hires_tick=1
  2. Reboot the system.

The hires_tick=1 setting increases the system timer resolution to 1000 ticks per second.

Because the X server code uses the system setting, the X server's bursts of data now use the same value, 1000 ticks = 1 second, that is, 1 tick = 1 ms. In the example, using the new tick duration results in the X server sending 5 KB of data every 1 ms.

Because the change to the tick duration decreases the amount of buffering required on the network switch, the performance of the Sun Ray Clients should improve.