8.2.2 测试环境配置
本次对CPU性能测试的硬件环境为一台使用Intel Xeon E5-4650处理器的服务器,在BIOS中打开了Intel VT 和 VT-d技术的支持,还默认开启了Intel CPU的超线程(Hyper-threading)技术。本次测试使用的宿主机内核是根据手动下载的Linux 3.7.0版本的内核源代码然后自己编译的,qemu-kvm使用的是1.2.0版本。用于对比测试的原生系统和客户机系统使用完全相同的操作系统,都是使用默认配置的RHEL 6.3 Linux系统。更直观的测试环境基本描述,如表8-1所示。
item | description |
hardware | a server with Intel Xeon E5-4650 processor, VT-x enabled, VT-d enabled, HT enabled |
host kernel | Linux kernel 3.7.0 (x86_64 arch, EPT/VPID enabled, THP on) |
qemu-kvm | qemu-kvm 1.2.0 |
native OS | RHEL 6.3 (kernel 2.6.32-279.el6.x86_64) |
guest OS | RHEL 6.3 (kernel 2.6.32-279.el6.x86_64) |
表8-1 CPU性能测试的软硬件环境
在KVM宿主机中,EPT、VPID等虚拟化特性是默认处于打开状态的(可参考4.3.2节“EPT和VPID简介”),透明大页(THP)的特性也默认处于打开状态,这几个特性对本次测试的结果是影响比较大的。对于第8章的所有性能测试,若没有特别注明,就是使用表8-1所示的软硬件测试环境。注意:本次CPU性能测试并没有完全使用Xeon E5-4650处理器中的CPU资源,而是对服务器上的CPU和内存资源都进行了限制,KVM宿主机限制使用了4个CPU线程和12 GB内存,原生系统使用4个CPU线程和10GB内存。为了防止图形桌面对结果的影响,原生系统、KVM宿主机、KVM客户机系统的运行级别都是3(带有网络的多用户模式,不启动图形界面)。本次测试中,对各个Linux系统的内核选项添加的额外配置如表8-2所示,它们既可以设置在GRUB配置文件中,又可以在系统启动到GRUB界面时进行编辑。
host kernel option | maxcpus=4 nr_cpus=4 mem=12G 3 |
native kernel option | maxcpus=4 mem=10G 3 |
guest kernel option | 3 (i.e. run level is 3 in guest.) |
表8-2 CPU性能测试的内核选项配置情况
本次测试中,给客户机分配了4个vCPU和9.5GB内存,与原生系统基本保值一致以便进行性能对比(客户机内存设置为9.5GB而不是10GB是为了给宿主机多留一点内存,给客户机9GB或者10GB内存,对本次CPU性能测试的结果影响不大)。由于在SPEC CPU2006的部分基准测试消耗较多的内存,例如在429.mcf执行时每个执行进程就需要2GB左右的内存,所以这里设置的内存数量是比较大的。对客户机的磁盘驱动设置为使用virtio-blk驱动,启动客户机的qemu-kvm命令行如下:
qemu-system-x86_64 -smp 4 -m 9728 -drive rhel6u3.img,if=virtio -net nic -net tap -vnc :0 --daemonize
从上面命令可以看出,本次测试并没有指定虚拟CPU的模型,默认使用了qemu64这个CPU模型,如果应用程序中需要更多CPU特性,则可以用 -cpu SandyBridge 或 -cpu host这样的参数来设置CPU模型(可参考4.2.4节 “CPU模型”)。
为啥要混淆使用原生系统,KVM宿主机系统?这两个应该说的是一回事吧
不是的,你仔细看我文章内容描述就知道了;native和guest,在OS层面一模一样的,是为了对比。host的kernel,就是我自己编译的,不是用的原生OS自带的kernel。