20.3. 如何通过减少网络交换机缓冲来提高 Sun Ray Client 性能 (Oracle Solaris)

当服务器端连接配置为以 1 Gbps 运行时,某些网络交换机不能很好地配合 Sun Ray Client。由于 Sun Ray Client 是以 100 Mbps 运行的,而数据是以定期突发的形式从 X Windows 服务器发送的,因此需要用这些交换机缓冲一定量的数据。甚至在 X 服务器的平均数据速率低于 100 Mbps 时,也可能发生这种情况。

X 服务器经过编程后,将以时钟周期 (tick) 间隔发送允许的特定数据量。在最初的实现方案中,每秒有 50 个时钟周期。X 服务器能够以 Sun Ray Client 授予的某个特定速率进行发送。

例如,如果 Sun Ray Client 允许的速率为 40 Mbps,则表示 X 服务器每秒以突发方式发送 5 MB,每 1/50 秒发送一次。也就是说,在每个时钟周期,服务器可按 1 Gbps 的速率发送 100 KB 数据。此速率会在交换机中造成大约 100 KB 的队列积聚数据,然后,在下一个 1/50 秒,这些数据将以 100 Mbps 的速率发送。

为缓解这种问题,首先应将每秒的时钟周期数从 50 增加到 100。因此,在以上示例中,X 服务器将每隔 10 毫秒发送 50 KB,而不是每隔 20 毫秒发送 100 KB。此设置可以明显地改善这种情况,但该问题仍会存在。之所以选择每秒 100 个时钟周期的速率,是因为该值符合 Oracle Solaris 和 Oracle Linux 中计时器的正常精度。

要将每秒时钟周期数增加到 100 以上,还必须增加操作系统的计时器精度。对于 Oracle Solaris,请使用以下过程。

步骤
  1. 将以下行添加到 /etc/system 文件:

    set hires_tick=1
  2. 重新引导系统。

hires_tick=1 设置会将系统计时器精度增加到每秒 1000 个时钟周期。

由于 X 服务器代码使用系统设置,因此 X 服务器上数据的突发流量现在使用同一个值,即 1000 个时钟周期 = 1 秒(也就是说 1 个时钟周期 = 1 毫秒)。在本例中,使用新的时钟周期持续时间将导致 X 服务器每 1 毫秒发送 5 KB 数据。

由于更改时钟周期持续时间会减少网络交换机需要缓冲的数据量,因此 Sun Ray Client 的性能会得到提升。