Ubuntu 14.04 上的 KVM 上的 Windows Server 2012。运行一段时间后速度变慢

Ubuntu 14.04 上的 KVM 上的 Windows Server 2012。运行一段时间后速度变慢

我有 Windows Server 2012 Essentials,作为在 Ubuntu 14.04 LTS 上运行的 KVM 上的 VM 运行。

重启后,它的表现非常好,但过了一段时间,它开始变慢,变得迟钝。这种情况可能是在几个小时或一天之后。我没有发现使用情况和速度变慢之间有任何明显的规律。

Windows VM 有三个虚拟磁盘,两个是 LVM,一个是 LVM 上的 250 GB VMDK 文件。我打算将 VMDK 文件转换为直接 LVM,这可能会对性能有所帮助,但我不认为这是我目前的问题。我们使用最新的 virtio 驱动程序。

当它变慢时,情况会变得非常糟糕。右键单击任务栏可能需要 5 秒或更长时间才能显示菜单。主机上的 VNC 或 Windows 服务器的 RDP 执行情况大致相同。对于我们 LAN 上的客户端来说,文件共享访问、DNS 等都很慢。

重新启动 Windows VM 即可解决问题。我不需要重新启动主机。

Windows 服务器上没有运行任何额外的应用程序,除了 CloudBerry 备份,它每四个小时检查一次文件更改。似乎不是那样。扫描更改需要几分钟,但如果我在重启后立即运行它,服务器仍然运行得很快。

该服务器为网络连接的打印机提供打印服务。

当主机速度变慢时,qemu 进程的 CPU 使用率会逐渐上升。它总是有点峰值,但我认为峰值会越来越高,持续时间更长。我没有注意到 Windows 任务管理器中有什么特别不寻常的地方。

我知道 KVM 上的 Windows 当然不受 Microsoft 支持,所以这总是有点冒险。也许这是一个愚蠢的想法,但安装和早期性能绝对完美。

有什么想法或建议吗?我应该使用什么工具或方法来追踪这个问题?

答案1

看来该问题是由于 3.13 内核中的一个内核错误造成的,该错误导致 KSM 在识别要共享的内存时有点过于急切。(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1341195

我们通过将 /etc/default/qemu-kvm 中的 KSM_ENABLED 设置为 0 来解决这个问题。或者,我们可以升级到 3.14 内核。

答案2

这实际上不值得被称为答案但是......以防其他人遇到同样的问题。

我无法解释,但是通过移动到不同硬件上的不同 KVM 主机解决了这个问题,但我不认为这是一个真正的硬件问题。

我们有两台服务器。

思科有 2 个四核处理器。Linux 显示有 16 个 CPU。我猜这是超线程的缘故。

具有 2 个双核处理器的 HP DL360。Linux 显示有 8 个 CPU。

两者都运行带有最新更新的 Ubuntu 14.04 LTS。

问题出在 Cisco 上运行的 Windows 2012 VM 上。重启后,它运行良好,但在接下来的一天左右,它慢慢变坏,直到几乎无法使用。我通常为 VM 分配 2 个 VCPU。如果我只分配 1 个 VCPU,问题会不那么严重,但仍然会很糟糕。其他方法似乎都无济于事。我在客户机或主机上的任何日志中都找不到任何内容。

最后,我凭直觉调整了虚拟机(我们的磁盘空间有点不足),并将 Windows 2012 移到了 HP。它已经运行了一周,运行正常。我认为 Cisco 没有问题,原因是我们在 HP 上的四个 Linux VM 现在在 Cisco 上运行正常。

除了移动主机之外,我所做的唯一其他更改是,为了方便移动,将 Windows C: 驱动器从 Linux LVM 更改为 qcow2 文件。我想这可能是移动而不是移动。磁盘性能对我们来说不是问题。

答案3

我在我的一台 KVM 服务器 Ubuntu 14.04 上遇到了同样的问题。我有 2 台相同的戴尔 poweredge 服务器,其中一台机器上出现了这个问题。结果发现这是由启用了“逻辑处理器”的 BIOS 设置引起的。禁用此功能解决了 Windows 2012 性能缓慢的问题。

相关内容