Linux上的OpenBSD或者FreeBSD KVM guest虚拟机的性能问题
我在KVM下运行了几台OpenBSD和FreeBSD来宾/虚拟机。
我的服务器有32GB内存和4C/8T Intel Xeon CPU。
在最近的CentOS Linux 7内核更新之前,一切工作正常。
重新启动我的CentOS 7 Linux机器后,OpenBSD和FreeBSD机器变得非常慢,并且在24小时后停止响应网络请求。
在CentOS 7 KVM上运行的BSD系列oses如何解决重大的性能问题?
基于内核的虚拟机(KVM)是内置在Linux内核中的管理程序。
借助KVM安装,CentOS Linux版本7可以变成管理程序。
一个可以运行多个虚拟机/来宾VM,它们运行未经修改的GNU/Linux,* BSD系列操作系统,例如OpenBSD,NetBSD,FreeBSD,MS-Windows或者更多。
解决了OpenBSD或者FreeBSD KVM guest虚拟机的性能降低问题
在CentOS Linux内核更新(重新引导)之后,基于OpenBSD和FreeBSD的虚拟机看起来非常缓慢。
您可以运行简单的命令,例如date或者sleep,以在KVM下运行的基于BSD的系统上验证此交易问题:
time date time sleep 1 time sleep 5
sleep 1命令最多需要5-10秒才能完成。
自然,这很烦人,一两天后,我基于OpenBSD的系统完全停止了响应。
kvm_intel的解决方案
在基于Intel的CPU上加载kvm模型时,您需要禁用kvm_intel.preemption_time。
您需要在/etc/modprobe.d中创建一个名为kvm.conf的文件。
使用文本编辑器(例如vim或者vi或者nano)创建文件:
# vim /etc/modprobe.d/kvm.conf
追加以下
options kvm_intel preemption_timer=N
保存并关闭vim/vi中的文件。
接下来,您需要使用重新启动命令或者关闭命令重新启动CentOS Linux 7.x服务器:
# reboot
或者
# shutdown -r 0
验证
使用cat命令,如下所示:
$ cat /sys/module/kvm_intel/parameters/preemption_timer
使用ssh命令或者virsh命令登录基于OpenBSD/FreeBSD的VM:
$ ssh Hyman@openbsd-kvm-vm-ip
或者
# virsh console openbsd63-vm1
随着时间在VM内运行命令:
$ time sleep 1 $ time sleep 5 $ time date $ ping -c 2 theitroad.local
现在一切正常,您的VM可以保持运行并运行数天,或者直到重新启动内核/硬件更新服务器/VM。