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环境的安装配置,即申请即 ...
随机推荐
- How to Restore “TrustedInstaller” as Default Owner of a File
type NT SERVICE\TrustedInstaller in "Enter the object name to select" text box http://www. ...
- Linux如何修改命令提示符
1.什么是命令提示符 命令提示符是CLI(command-line interface,命令行界面)在人机交互的过程中提示用户可以进行命令输入的特殊符号,在Linux中普通用户的prompt为“$”, ...
- hdu1847sg函数
刚开始因为没注意到f是从0开始的导致wa了几次,f遍历的时候从0到f[j]<=i 这个题只有一个子情况,求出sg值直接判断就好了 #include<map> #include< ...
- 前端构建工具 Grunt 入门
之前也介绍过前端构建工具 Ant 和 Yeoman,其中 Yeoman 工具就包含了 Grunt 所以就不多说.那么与 Ant 相比 Grunt 有这么几个优点: Javascript 语法,相比 A ...
- 黑暗世界的搜索引擎 https://fofa.so/ https://www.shodan.io https://www.zoomeye.org 查找设备漏洞
from:http://www.freebuf.com/sectool/121339.html 什么是 Shodan? 首先,Shodan 是一个搜索引擎,但它与 Google 这种搜索网址的搜索引擎 ...
- tflearn tensorflow LSTM predict sin function
from __future__ import division, print_function, absolute_import import tflearn import numpy as np i ...
- 《Drools7.0.0.Final规则引擎教程》番外实例篇——相同对象and List使用
前奏 群组(QQ:593177274)交流中有朋友提出一个问题,怎么实现两个相同对象的插入和比较?相信很多朋友也遇到类似的问题,于是抽时间为大家写一段实例代码,后续代码会同步到GitHub中.下面简单 ...
- ubuntu16.04x64环境下 tar方式 安装mysql-5.7.21 试水过程记录
前几天读研时候上铺的同学和我说到了一个问题,就是他们单位的redhat服务器给MySQL服务的数据库文件所在的磁盘空间不够了,对于这个问题我也是没有想过的,在受朋友之托下考虑自己做下复现,由于同学所在 ...
- [Qt] QLineEdit 仿QQ签名框
今天鼓捣了半天,终于实现了自定义Qt中的QlineEdit控件的大致效果. 这个问题对于新手而言,主要有以下几个难点: 1.继承QLineEdit控件 2.QSS设置QLineEdit的相关样式,可以 ...
- NOIP模拟赛(洛谷11月月赛)
T1 终于结束的起点 题解:枚举啊... 斐波那契数 第46个爆int,第92个爆long long.... 发现结果一般是m的几倍左右....不用担心T. #include<iostream ...