kvmgt-kernel 实现GPU虚拟化
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整合了,至于方法有兴趣大家可自行研究。
kvmgt-kernel 实现GPU虚拟化的更多相关文章
- HP “云图”GPU虚拟化工作站解决方案
HP PCS ”云图”GPU虚拟化工作站解决方案 ——将图形计算从桌面移到数据中心 惠普云图形GPU虚拟化桌面系统是以用户为中心的私有云服务.除了保留了传统桌面虚拟化方案以集中设备为中心统一管理等优点 ...
- GPU虚拟化技术详解
GPU虚拟化技术详解 GPU英文名称为Graphic Processing Unit,GPU中文全称为计算机图形处理器,1999年由NVIDIA公司提出. 一.GPU概述 GPU这一概念也是相对于计算 ...
- 英伟达GPU虚拟化---申请英伟达测试License
此文基于全新的License 2.0系统,针对vGPU License的试用申请以及软件下载和License管理进行了详细的说明,方便今后我们申请测试License,快速验证GPU的功能. 试用步骤: ...
- GPU 硬件虚拟化Hardware Virtualization
GPU 硬件虚拟化Hardware Virtualization 1. Principles 一个物理GPU可以虚拟化为多个vGPUs.VMs可以绑定到vGPUs以直接访问一些物理GPU资源. 2. ...
- OpenStack 企业私有云的若干需求(1):Nova 虚机支持 GPU
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- OpenStack企业私有云新需求(1):Nova 虚机支持 GPU
作者:Sammy Liu 刘世民 本系列会介绍OpenStack 企业私有云的几个需求: GPU 支持 自动扩展(Auto-scaling)支持 混合云(Hybrid cloud)支持 物理机(Bar ...
- 计算机组成原理 — GPU 图形处理器
目录 文章目录 目录 显卡 GPU GPU 与深度学习 GPU 与 CPU 体系结构的区别 GPU 显存与 CPU 主存的区别 GPU 与 CPU 之间的数据交互方式 GPU 的体系结构 GPU 的工 ...
- GPU keylogger && GPU Based rootkit(Jellyfish rootkit)
catalog . OpenCL . Linux DMA(Direct Memory Access) . GPU rootkit PoC by Team Jellyfish . GPU keylogg ...
- supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境
开发环境介绍 在SuperVessel云上,我们为大家免费提供当前火热的caffe深度学习开发环境.SuperVessel的Caffe有如下优点: 1) 免去了繁琐的Caffe环境的安装配置,即申请即 ...
随机推荐
- 雷林鹏分享:Ruby 面向对象
Ruby 面向对象 Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现.Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串.数字,甚至连 true 和 false 都是对象 ...
- Android之修改用户头像并上传服务器(实现手机拍照和SD卡选择上传)
写了这么多个的APP,最近才把他这个功能写上来,就抽取其中的用户修改头像的相关操作这个功能写了这篇博客,来与大家分享,希望对你有所帮助. 案例包含了: Xutil图片上传 拍照和SD卡选择图片 图片缓 ...
- codeforce——思维dp
Codeforces 822C Hacker, pack your bags!(思维) 题目大意:给你n个旅券,上面有开始时间l,结束时间r,和花费cost,要求选择两张时间不相交的旅券时间长度相 ...
- 配置Spring Boot通过@ConditionalOnProperty来控制Configuration是否生效
Spring boot中有个注解@ConditionalOnProperty,这个注解能够控制某个configuration是否生效. 具体操作是通过其两个属性name以及havingValue来实现 ...
- sgu 146. The Runner 取模技巧 难度:1
146. The Runner time limit per test: 0.25 sec.memory limit per test: 4096 KB input: standard inputou ...
- DOM之概述
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- [批处理]自动修改本机IP地址
前言 抱着笔记本经常到处跑的人,今天回宿舍上网,明天去机房上网,后面去办公室上网,每到一个地方,都要更换一次IP网关掩码 如果都是DHCP还好,关键是为了组织为了方便管理这些地方都是使用的静态IP,所 ...
- pixi之加载纹理贴图和精灵类的使用
因为之前看过three.js的缘故,所以pixi学习起来也是很快的,主要就是熟悉pixi的API,所以,在这里记录一下pixi常用API,废话不多说,下面上干货. 一.为你的PIXI场景添加图片(精灵 ...
- Python PIL : IOError: decoder jpeg not available
The first thing I check when I got this error was to check if libjpeg was installed. Lets try this s ...
- Linux 进程、线程运行在指定CPU核上
/******************************************************************************** * Linux 进程.线程运行在指定 ...