1、 设备环境
1.1 硬件环境:
-
• NF5280M5 4路服务器
• NVIDIA Tesla V100
1.2软件环境:
-
• Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-36-generic x86_64)
• Openstack Queens版本
2、 配置操作系统
2.1 方法及步骤:
(1)BIOS中打开硬件辅助虚拟化功能
VT(VT-x)及VT-d支持,需要将相关支持设置为enable,默认开启
路径:Processor—IIO Configuration—Intel@ VT for Directed I/O(VT-d)
(2)配置intel_iommu=on
执行命令:sudo vi /etc/default/grub
在GRUB_CMDLINE_LINUX_DEFAULT字段添加 intel_iommu=on iommu=pt rd.driver.pre=vfio-pci
在GRUB_CMDLINE_LINUX字段添加 intel_iommu=on iommu=pt rd.driver.pre=vfio-pci
(3)修改内核模块文件/etc/modules
修改内核模块文件/etc/modules,里面列出的模块会在系统启动时自动加载。
执行命令:vi /etc/modules
添加以下内容:
pci_stub
vfio
vfio_iommu_type1
vfio_pci
kvm
kvm_intel
(4)更新grub.cfg文件
执行命令:sudo update-grub 或使用sudo grub-mkconfig -o /boot/grub/grub.cfg
(5)重启操作系统开启 Intel_iommu=on
(6)检查VT-d(AMD芯片时是 IOV)是否工作
执行命令:dmesg | grep IOMMU 或 dmesg | grep -e DMAR -e IOMMU 检查VT-d(AMD芯片时是 IOV)是否工作。若没有相应输出(IOMMU enabled 必须有),需要重新检查之前的步骤。
(7)添加黑名单
添加黑名单,使卡不被占用。
执行命令:sudo vim /etc/modprobe.d/blacklist.conf
最后添加内容:
#NVIDIA config
blacklist snd_hda_intel
blacklist amd76x_edac
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
(8)设置vfio并隔离用于直通的GPU
在/etc/modprobe.d下添加文件vfio.conf
执行命令:
cd /etc/modprobe.d
touch vfio.conf (创建文档)(如果出现touch: cannot touch 'vfio.conf': Permission denied 先执行sudo chmod -R 777 /etc/modprobe.d )
文档内写入内容:options vfio-pci ids=10de:1db6 (其中10de:1db6由9得来)
(9)查看pci设备信息
使用命令:lspci -nn | grep NVIDIA
如果不是NVIDIA的显卡,可以换自己显卡的关键字查询。重查询结果上注意查看自己独立显卡(也就是要直通的显卡)的设备ID和地址,形如: [10de 1b80] 和 [10de 10f0], 01.00.0和01.00.1。(Gefore显卡一般会集成一个声卡芯片)
其中GPU设备各值含义:
3b:00.0 和 86:00.0 以 ”bus:slot.func“ 格式来唯一标识一个 PCI 设备
0302 设备模式 0300: Graphics -- 代表为图形模式 0302:Compute -- 则表明为计算模式
10de 厂商识别字段(Vendor ID),10de代表此设备来自NVIDIA公司
1db6 标明特定的设备,由厂商来分配
a1 设备的版本识别代码,其值由厂商提供
(10)查看pci设备驱动
执行命令:lspci -vv -s 3b:00.0 | grep driver
没有输出说明没有驱动.
如果有输出信息如下:
lspci -vv -s 3b:00.0 | grep driver
>Kernel driver in use: nouveau (ubuntu系统为显卡绑定的默认驱动)
lspci -vv -s 01:00.1 | grep driver
>Kernel driver in user: snd_hda_intel (显卡上附带的集成声卡的默认驱动)
(11)将PCI设备相关驱动解绑
如果(10)中出现执行后有输出,需进行设备解绑
执行命令:(每个卡都要解绑)
echo 0000: 3b:00.0 > /sys/bus/pci/devices/0000\:3b\:00.0/driver/unbind
echo 0000:01:00.1 > /sys/bus/pci/devices/0000\:01\:00.1/driver/unbind
(12)将PCI设备绑定到VFIO
引入VFIO 用户态驱动框架,向用户提供配置IOMMU接口,实现PCI设备在虚拟化场景透传。
解绑设备 (命令执行上面11),并绑定到VFIO:
加载VFIO执行命令:
sudo modprobe vfio
sudo modprobe vfio-pci
执行完重启系统,重新启动主机并检查GPU是否在不同的IOMMU组中隔离,以及
正在使用vfio驱动程序.
执行命令检查GPU是否在不同的IOMMU组中隔离:
find /sys/kernel/iommu_groups/*/devices/*
执行命令进行绑定:
echo 10de 1db6 > /sys/bus/pci/drivers/vfio-pci/new_id
查看驱动是否绑定(每个卡都要看一下),执行命令:
lspci -vv -s 3b:00.0 | grep driver
如果出现 Kernel driver in use : vfio-pci 说明绑定成功。
3、 配置openstack
3.1 方法及步骤:
(1)配置nova-scheduler (controller节点),编辑文件 /etc/nova/nova.conf
[scheduler] 没有修改,用的默认
scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
[filter_scheduler] 默认有,此处没有修改
available_filters=nova.scheduler.filters.all_filters
available_filters=nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter
[DEFAULT]修改此处
scheduler_default_filters=RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,PciPassthroughFilter
(2)重启nova-scheduler 服务
执行命令:sudo service nova-scheduler restart
(3)配置nova-api (controller节点),编辑文件 /etc/nova/nova.conf:
[PCI] 添加内容
alias = {"name":"nvidia_v100","product_id":"1db6","vendor_id":"10de","device_type":"type-PCI"}
(4)重启nova-api服务
执行命令:sudo service nova-api restart
(5)配置nova-compute(compute 节点),编辑文件/etc/nova/nova.conf:
[PCI] 添加内容
passthrough_whitelist = { "vendor_id":"10de","product_id":"1db6" }
alias = {"name":"nvidia_v100","product_id":"1db6","vendor_id":"10de","device_type":"type-PCI"}
(6)重启nova-compute服务
执行命令:sudo service nova-compute restart
4、 创建GPU服务器验证绑定
4.1 方法及步骤:
(1)创建主机聚合
(2) 创建Flavor 添加属性
(3) 创建云服务器
执行命令: openstack server create --network vlan-161 --image ecs-ubuntu1604-x64-20181220 --flavor 513dfb0c-132b-4fb9-903a-ffd131cce6d7 test-gpu-1
(4)进入创建的GPU服务器验证挂载
执行命令:lspci -nn | grep NVIDIA
相关推荐
关于组织参加“第八届‘泰迪杯’数据挖掘挑战赛”的通知-4页
PyMySQL-1.1.0rc1.tar.gz
技术资料分享CC2530中文数据手册完全版非常好的技术资料.zip
docker构建php开发环境
VB程序实例,可供参考学习使用,希望对你有所帮助
pytz库的主要功能 时区转换:pytz库允许用户将时间从一个时区转换到另一个时区,这对于处理跨国业务或需要处理多地时间的数据分析尤为重要。 历史时区数据支持:pytz库不仅提供了当前的时区数据,还包含了历史上不同时期的时区信息,这使得它在处理历史数据时具有无与伦比的优势。 夏令时处理:pytz库能够自动处理夏令时的变化,当获取某个时区的时间时,它会自动考虑是否处于夏令时期间。 与datetime模块集成:pytz库可以与Python标准库中的datetime模块一起使用,以确保在涉及不同时区的场景中时间的准确性。
VB程序实例-为程序添加快捷键.zip
画2、3维的隐含数
pytz库的主要功能 时区转换:pytz库允许用户将时间从一个时区转换到另一个时区,这对于处理跨国业务或需要处理多地时间的数据分析尤为重要。 历史时区数据支持:pytz库不仅提供了当前的时区数据,还包含了历史上不同时期的时区信息,这使得它在处理历史数据时具有无与伦比的优势。 夏令时处理:pytz库能够自动处理夏令时的变化,当获取某个时区的时间时,它会自动考虑是否处于夏令时期间。 与datetime模块集成:pytz库可以与Python标准库中的datetime模块一起使用,以确保在涉及不同时区的场景中时间的准确性。
加载虚拟光驱并打开ma软件.
VB程序实例-图像的缩小.zip
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
推荐几个国外 Java 大佬的优质博客.docx
Arduino一分钟快速在vs code 编译开发Arduino
强网杯objective-c可视化演示5中的常见排序算法,包括选择排序、气泡排序、插入排序、快速排序、堆排序等.zip
VB程序实例,可供参考学习使用,希望对你有所帮助
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
强网杯
技术资料分享AT070TN92非常好的技术资料.zip