我在 Debian Wheezy Beta 4 (x86_64) KVM 来宾上运行 Mumble 服务器 (Murmur),它在 Debian Wheezy Beta 4 (x86_64) KVM 管理程序上运行。来宾计算机通过 Virtio 网络接口连接到管理程序系统上的桥接设备。Hypervisor 连接到 100Mbit/s 上行链路,并在来宾计算机和其余 Internet 之间进行 IP 路由。
在此设置中,我们在双击客户端中的频道和发生频道加入操作之间经历了明显可识别的延迟。在 Linux 和 Windows 系统上,1.2.3 和 1.2.4 之间的许多不同客户端都会发生这种情况。
语音质量和延迟似乎完全不受此影响。大多数时候,客户端的信息对话表明语音和控制通道都有 16 毫秒的延迟。控制通道的偏差大多比语音通道之一高很多。在某些情况下,控制通道显示为 100ms ping 和大约 1000 的偏差。看来 TCP 性能是这里的一个问题。
我们在早期的设置上没有遇到任何问题,这在原则上与新设置非常相似。我们使用基于 Debian Lenny 的 Xen 虚拟机管理程序和软虚拟化来宾机器以及 Mumble 1.2.3 系列的早期版本。
目前murmurd --version
说:1.2.3-349-g315b5f5-2.1
更新:我在这个讨论中发现有人在虚拟化系统上运行 Mumble,他们遇到的问题与我完全相同。
到目前为止我尝试过的(完全没有成功):
- 在我的管理程序系统上安装并试用了 Mumble 服务器
- 在来宾系统上使用 beta 1.2.4 Mumble 服务器安装并试用
- 将我的 SQLite 数据库从最初的大约 1MiB 减少到大约 300 KiB
- 在系统上禁用 IPv6 以检查这是否可能是问题来源。
- 使用 Debian Squeeze(稳定版)安装了一个访客系统,并在那里尝试了 Mumble。
更新:之前我说过我已经测试过将 Mumble 数据库和日志文件放在tmpfs
内存文件系统中,但没有解决问题。我在那里犯了一个错误,所以它实际上并没有存储在tmpfs
. 现在我已经真正做到了,性能问题就消失了。但是将它存储在 atmpfs
中并不能真正解决我的问题。
通过将 Mumble 服务器的数据库和日志文件放入内存文件系统,我发现这与 I/O 性能问题有关。导致不良 I/O 延迟的原因是这个问题的主题。通过添加 mount 选项解决了这个问题,该选项是在 Linux 2.6.33作为默认选项
nobarrier
引入后首次添加的。barrier
请注意,这确实会引发安全问题。此外,该分区是通过 Virtio 访问的,同时将缓存设置为none
或writeback
。当缓存设置为时性能仍然很差writethrough