www.cnblogs.com/ruiyqinrui

开源、架构、Linux C/C++/python AI BI 运维开发自动化运维。 春风桃李花 秋雨梧桐叶。“力尽不知热 但惜夏日长”。夏不惜,秋不获。@ruiY--秦瑞

python爬虫,C编程,嵌入式开发.hadoop大数据,桉树,onenebula云计算架构.linux运维及驱动开发.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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  -j8
\
4)确认编译通过之后执行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-kvm
\
cp vgt.rules /etc/udev/rules.d
\
chmod a+x vgt_mgr
\
cp vgt_mgr /usr/bin
\
 
二、安装qemu-kvmgt

1)更新相应依赖子模块(这步需要FQ)
git submodule update --init dtc
\
git submodule update --init roms/seabios
\
2 )编译安装
 ./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  秦瑞It行程实录  阅读(4766)  评论(0编辑  收藏  举报
www.cnblogs.com/ruiyqinrui