GPU是什么,关于vGPU在OpenStack中的应用

海云捷迅 发表于 2020-07-03 10:22:07 收藏 已收藏
赞(0) •  评论(0
400万+工程师在用
400万+工程师在用

GPU是什么,关于vGPU在OpenStack中的应用

海云捷迅 发表于 2020-07-03 10:22:07
+关注

一、什么是GPU

GPU:Graphics Processing Unit,即图像处理单元,是一种专门处理图像运算工作的微处理器。

CPU是由若干核(core)和许多的缓存(cache memory)组成,因此CPU可以并行处理若干线程。相对地,GPU是由几百个核组成,因此可以并发处理数千个线程。尽管GPU的内核数目远远超过CPU,但是它的每个核的处理能力远小于CPU的核,而且不具有现代操作系统的所需要的一些特性,GPU并不合适用于处理普通的计算。它们更多地用于计算消耗性操作,比如视频处理和物理仿真等。

二、虚拟化环境GPU使用方式

在虚拟化环境中,GPU使用目前可以分为以下几类:GPU直通模式,即GPU透传;GPU SR-IOV,目前主要是AMD在采用此种方案;GPU分片虚拟化,包括Intel GVT-g和NVIDIA GRID vGPU。

以下是对这些方案的简单介绍:

1.GPU透传:物理GPU直接透传给虚机。第一种方案,在我们的产品里已经实现,且支持大部分GPU设备。对于Windows镜像,我们建议云主机从UEFI启动。

2.GPU SR-IOV:使用SR-IOV技术,将物理GPU划分成多个VF,每个VF提供给云主机使用。AMD采用的就是这种方案,目前市场上2款产品S7150和MI25。

3.GPU分片虚拟化。Intel提供GVT-g方案:针对不同的hypervisor,应用于KVM上,叫KVMGT;应用于Xen上,称为XenGT。

NVIDIA GRID vGPU产品系列

以上2个厂家均采用GPU分片虚拟化方案,即基于Linux内核VFIO mediated框架。此方案的kernel部分代码称为mdev模块,由Intel和NVIDIA共同提交到4.10内核,但是CentOS已经backport到3.10.x内核。分片虚拟化与透传的区别是,分片虚拟化把会影响性能的访问直接透传给虚拟机,把性能无关和功能性的MMIO访问做拦截并在mdev模块内做模拟。

当然,也可以简单的理解为对物理GPU资源的分片划分,如物理GPU的显存大小为16G,如果划分出4个vGPU,那么每个vGPU的显存大小就是4G。实现GPU分片虚拟化需要满足以下条件:

1.硬件支持:Intel需要特定的CPU支持,Intel(r) Xeon(r) E3_v4, E3_v5 and E3_v6 with Intel Graphics processor。NVIDIA也需要特定的GPU卡,可参考NVIDIA官方网站。

2.内核版本、QEMU版本(v2.0及以上)

3.GPU mdev驱动支持,这部分Intel已经开源,但是NVIDIA不开源,需要通过License来获取。从AWStack 2.6版本,我们产品支持GPU透传,即将一个物理的GPU设备透传给某一个云主机,独享物理GPU资源。实现GPU虚拟化,每个云主机拥有一个vGPU设备,在满足客户图像视频处理、机器学习、深度学习等应用场景的同时,做到物理GPU资源共享。

如何在产品中使用NVIDIA vGPU

一、前期准备

1.采购到NVIDIA支持GPU虚拟化的物理GPU卡后,需要在NVIDIA官方网站上注册账号, 并购买License或申请90天的试用版。针对Hypervisor类型可下载不同版本的软件包:

2.安装物理GPU卡,GPU卡对散热要求比较高,如果温度过高会出现掉卡问题。

3.安装NVIDIA vGPU manager之前先禁用操作系统上的Nouveau驱动

1)在安装GPU卡的物理节点上,新建文件

/etc/modprobe.d/nvidia-installer-disable-nouveau.conf

blacklist nouveau

options nouveau modeset=0

2)重新生成ramdisk,并重启物理节点:

# dracut –force

# reboot

3)在安装有物理GPU卡的物理节点上安装vGPU manager软件

# chmod 777 NVIDIA-Linux-x86_64-440.43-vgpu-kvm.run

# ./NVIDIA-Linux-x86_64-440.43-vgpu-kvm.run

4)确认nvidia_vgpu_vfio内核模块已被加载

# lsmod |grep nvidia_vgpu_vfio

5)启动并加载nvidia-vgpu-mgr服务

# systemctl enable nvidia-vgpu-mgr.service

# systemctl start nvidia-vgpu-mgr.service

6)重启物理机器

# reboot

7)确认内核mdev目录是否生成

# ls /sys/class/mdev_bus/

0000:18:00.0 0000:82:00.0

4.搭建NVIDIA License Server

云平台云主机使用vGPU,需要获取License,一般需要在客户环境里搭建License server,可以是单节点,也可以部署两台做HA。License server安装时,需要将从官网上获取到的License文件,上传到License server上。云主机需要能访问License server的7070端口,来获取License。

二、用户使用流程:

1.前期准备工作完成后,登录云管平台,同步物理节点GPU信息到云管平台。

2.云管界面,选择物理节点、物理GPU来创建vGPU规格。

3.新建vGPU规格完成后,可以在云主机页面创建云主机,支持2种场景:创建云主机时同时选择vGPU规格或者vGPU设备;或者创建云主机完成后,再绑定vGPU设备。创建带vGPU的云主机或者云主机绑定vGPU后,可以在物理节点上看到vGPU设备保存在sysfs中,云主机XML文件会生成一个设备和这个关联:

云主机XML:

云主机启动之后,用户需要在云主机内安装从官方网站下载的软件包里的驱动,并配置连接License server。当然也可以自定义镜像模板,预安装好云主机vGPU驱动以及配置好License server连接。至此,用户可以在云主机里运行自己的应用了。

fqj

打开APP阅读更多精彩内容

收藏

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉

相关话题

评论(0)

加载更多评论
相关文章

分享到

QQ空间 QQ好友 微博
取消