KVMGT-kernel是Intel开源技术01.org推出的一项完整的GPU虚拟化解决方案,在KVM和XEN的基础上实现。本文档对该技术进行相应测试,让大家有个基本参考和了解。KVMGT-kernel目前支持虚机系统包含win7 32,64位,win8.1 ubuntu,centos 。
首先来看下GPU虚拟化实现方式。(下图来自Intel)第一种是实例调用api来实现虚拟化,这种方式即不能完全发挥GPU的性能,而且通过api调用实现的性能也非常低。第二种虽然能通过DRIVER来获取GPU的性能实现GPU虚拟化,但属于独享资源,并不能实现多实例共享GPU性能。·第三种是目前最优方式,即可通过DRIVER来获取调用HYPERVISOR相应模块实现GPU虚拟化,发挥最大性能,并且实现了多实例性能共享。 一、安装部署测试环境原宿主机系统为centos7.0 64位先获取kernel及qemu项目地址:https://github.com/01org/KVMGT-kernel https://github.com/01org/igvtg-qemu查看kernel 分支版本,建议编译如下版本(目前稳定版):安装对应依赖包yum install libarchive-dev libghc-bzlib-dev libpci-dev mercurial gettext bcc iasl libncurses5-dev kpartx bc libperl-dev libgtk2.0-dev libc6-dev-i386 libaio-dev libsdl1.2-dev libyajl-dev libx11-dev autoconf libtool xsltproc bison flex xutils-dev xserver-xorg-dev x11proto-gl-dev libx11-xcb-dev vncviewer libxcb-glx0 libxcb-glx0-dev libxcb-dri2-0-dev libxcb-xfixes0-dev python-dev bin86 git vim libssl-dev gcc gcc-c++ glib2 glib2-devel zlib zlib-devel automake升级kernel. 1)进入kernel目录建立编译配置文件 2)编辑.config文件,增加XFS模块支持(由于本人采用xfs文件系统)。3)编译内核文件 make -j84)确认编译通过之后执行make modules_install 安装内核模块。5)生成引导镜像mkinitrd /boot/initramfs-3.18.0-rc7-vgt-2015q3+ -v vmlinuz-3.18.0-rc7-vgt-2015q3+6)复制必要文件至对应目录cp arch/x86/boot/bzImage /boot/vmlinuz-kvmcp vgt.rules /etc/udev/rules.dchmod a+x vgt_mgrcp vgt_mgr /usr/bin 二、安装qemu-kvmgt1)更新相应依赖子模块(这步需要FQ)git submodule update --init dtcgit submodule update --init roms/seabios2 )编译安装 ./configure --prefix=/root --enable-kvm --disable-xen --enable-debug-info --enable-debug --enable-sdl --enable-vhost-net --disable-debug-tcg查看版本3),加入boot引导项Example(以下是本人grub.cfg配置) menuentry 'CentOS KVMGT Linux (3.18.0-rc7-vgt-2015q3+) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.13.1.el7.x86_64-advanced-73a9bad6-c54e-4c4a-8cc3-9ea39290efed' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 --hint='hd0,msdos2' 6c4194dc-75bd-44a3-a9fa-98681e7ea0d6 else search --no-floppy --fs-uuid --set=root 6c4194dc-75bd-44a3-a9fa-98681e7ea0d6 fi linux16 /vmlinuz-3.18.0-rc7-vgt-2015q3+ root=/dev/mapper/os-root ro crashkernel=auto intel_iommu=igfx_off ignore_loglevel drm_debug=15.UTF-8 i915.hvm_boot_foreground=1 initrd16 /initramfs-3.18.0-rc7-vgt-2015q3+.img}重启机器,查看内核版本 三、性能测试建立测试虚机,本人测试虚机采用win7 64位系统。虚机安装系统之后需要安装驱动。在下面链接中下载对应驱动即可。(建议进入安全模式安装驱动)https://downloadcenter.intel.com/download/25425/Intel-Graphics-Driver-for-Windows-7-8-1-15-36-这里采用passmark2d软件进行性能测试。PassMark Performance Test是一个专门用来测试电脑效能的性能测试软件。我们这里只测试显卡性能不同虚拟化场景对比。使用Intel GVT虚拟化场景性能测试。我测试虚机内存为4096, CPU 为2.开启了gvt虚拟化功能。可以看到虚拟机已经成功识别了宿主机的硬件。1)首先使用系统自带评分工具测试结果如下。可以看出基本评分为5.9分。 使用PASSMARK 2D图形评测结果如下使用PASSMARK 3D图形评测结果如下常规虚拟化场景性能测试同样一台虚机,内存为4096, CPU 为2.我关闭GVT虚拟化功能来进行测试。还是先看系统自带工具评分。可以看到,使用常规虚拟化技术显示性能相当低,只有1分。接下来看passmark 2D图形评测结果2D评测结果也比开启GVT虚拟化性能要差很多,而3D性能评测试在常规虚拟化技术中根本无法使用。 四、后续总结使用Intel GVT虚拟化技术性能明显高出常规虚拟化技术显示性能,由于是Intel弄的,目前只支持intel型号cpu(i7系列)。该技术应用场景可用于部分游戏,视频、图片编辑/播放,媒体转码等应用,具体应用场景可根据业务类型来选择。 该文档只测试了以kvm方式来实现的方式,有兴趣大家可以看看xen的实现方式。Intel内部技术透露他们已经将其与openstack整合了,至于方法有兴趣大家可自行研究。 posted on 2018-04-18 09:30 阅读( ...) 评论( ...)