Bad Mumble控制KVM guest虚拟机的频道性能

我在运行Debian Wheezy Beta 4(x86_64)KVMpipe理程序的Debian Wheezy Beta 4(x86_64)KVM guest上运行一个Mumble服务器(Murmur)。 客户机通过Virtionetworking接口连接到pipe理程序系统上的桥接设备。 pipe理程序连接到100Mbit / s上行链路,并在客户机和其余Internet之间进行IP路由。

在此设置中,我们正在经历双击客户端中的频道和正在进行的频道join操作之间的明显延迟。 在Linux和Windows系统上,1.2.3和1.2.4之间会有很多不同的客户端。

语音质量和延迟似乎完全不受此影响。 大多数情况下,客户端的信息对话框声明语音和控制信道的延迟时间为16ms。 控制信道的偏差大多比语音信道的偏差大得多。 在某些情况下,控制通道显示100ms的ping和大约1000的偏差。 看来TCP性能在这里是一个问题。

我们在早期的设置上没有任何问题,这在原则上与新设置相当。 我们使用基于Debian Lenny的Xen虚拟机pipe理程序和一个软虚拟客户机,而不是早期版本的Mumble 1.2.3系列。

目前的murmurd --version说: 1.2.3-349-g315b5f5-2.1

更新 :我发现这个讨论 ,有人在虚拟系统上运行混淆,这个系统遇到和我一样的问题。

我到目前为止所尝试的(没有任何成功的):

  • 在我的pipe理程序系统上安装并尝试了笨拙的服务器
  • 安装并使用客户系统上的testing版1.2.4 Mumble服务器进行testing
  • 将我的SQLite数据库从最初的1MiB抽取到大约300 KiB
  • 在系统上禁用IPv6以检查是否可能是问题源。
  • 用Debian Squeeze(stable)安装了一个客户系统,然后在那里试了一下。

更新 :以前我说过我已经testing了将Mumble数据库和日志文件放在tmpfs内存中的文件系统中,并没有解决问题。 我在那里犯了一个错误,所以它实际上并不存储在tmpfs里面。 现在我已经做到了,性能问题已经没有了。 但将其存储在tmpfs中并不是真正解决我的问题的方法。

通过将Mumble服务器的数据库和日志文件放入内存中的文件系统,我发现这与I / O性能问题有关。 什么导致了不好的I / O延迟是这个问题的主题。 问题已经通过添加nobarrier安装选项得到解决,该选项在Linux 2.6.33中引入了barrier作为默认选项之后首次添加。 注意这确实会导致安全问题 。 此外,通过Virtio访问分区,同时将caching设置为nonewriteback 。 caching设置为writethrough时,性能仍然很差