SR-IOV
SR-IOV
来源 http://blog.csdn.net/liushen0916/article/details/52423507
摘要: 介绍SR-IOV 的概念、使用场景、VMware 和 KVM 中的配置方法。
第一部分:
生产业务中,我们在虚拟化平台中遇到了部分虚拟机在业务高峰的时候,出现高延迟的情况。排查问题的时候,确认了两种情况,1是Hypervisor 的延迟是正常的, 2是GuestOS 内部的延迟也是正常的。所以判断应该是Hypervisor和GuestOS 之间的通信出现了问题。这时候想到了SR-IOV,想看看SR-IOV 能不能提供低延迟提供给对延迟敏感的业务。
写这篇文章之前,正好看到Red Hat 发布了 Red Hat Virtualization V4版,官方文档中,专门有一篇《Hardware considerations for implementing SR-IOV with Red Hat
Virtualization》。文章很短,主要介绍Red Hat Virtualization 中使用SR-IOV的前提条件:
- CPU 必须支持IOMMU(比如英特尔的 VT-d 或者AMD的 AMD-Vi,Power8 处理器默认支持IOMMU)
- 固件Firmware 必须支持IOMMU
- CPU 根桥必须支持 ACS 或者ACS等价特性
- PCIe 设备必须支持ACS 或者ACS等价特性
- 建议根桥和PCIe 设备中间的所有PCIe 交换设备都支持ACS,如果某个PCIe交换设备不支持ACS,其后的所有PCIe设备只能共享某个IOMMU 组,所以只能分配给1台虚机。
Red Hat 虚拟化平台V4 先介绍到这里。
第二部分:
现在介绍一下IO 虚拟化。IO 虚拟化目前主要也是分为3种, 第一是全虚拟化,通过VMM来模拟IO设备实现,VMM截获GuestOS的IO请求,通过软件模拟真实的硬件。VMM必须处理所有虚机的IO请求,然后将所有的IO情况序列化为可以被底层硬件处理的单一IO流。好处是GuestOS不需要考虑硬件设备的情况。问题是效率相对较低。例如 qemu。
第二种是IO半虚拟化技术。通过前端和后端模拟实现虚拟化。GuestOS中的半虚拟化驱动为前端,VMM 提供的与GuestOS 通讯的驱动程序为后端。前端驱动将GuestOS的请求通过与VMM之间的特殊通信机制发生给VMM后端需求,后端驱动处理完IO请求之后再发送给物理驱动。全虚拟化为了完成一次操作要涉及到多个寄存器的操作,使得VMM要截获每个寄存器访问并进行相应的模拟,就会导致多次上下文切换。这种方式能很大程度的减少上下文切换的频率,提供更大的优化空间。例如 virtio 。
软件的共享IO虚拟化技术
第三种是硬件辅助的IO虚拟化。主要包括 英特尔VT-d, AMD的IOMMU(AMD-Vi) 和PCI-SIG 的IOV 。 前两种属于Directed I/O。物理设备直接分配给虚拟机使用,通过硬件芯片完成GPA到MA 的翻译。IOV 通过在硬件设备中增加一个PCIe 设备,用于呈现一个PF或多个VF,从而可以将每个VF单独分配给不同的虚机使用。
Intel VT-d
SR-IOV
下面花一些篇幅介绍 SR-IOV。
SR-IOV 是PCI-SIG的一个IOV的规范,目的是提供一种标准规范,通过为虚拟机提供独立的内存空间,中断,DMA流,来绕过VMM实现数据移动。SR-IOV 架构被设计用于将单个设备通过支持多个VF,并减少硬件的开销。
SR-IOV 引入了两种类型:
PF: 包含完整的PCIe 功能,包括SR-IOV的扩张能力,该功能用于SR-IOV的配置和管理。
FV: 包含轻量级的PCIe 功能。包含数据移动所需要的最小的必要的资源。
注:部分图片源自 《PCI-SIG SR-IOV Primer》
第三部分:
接下来介绍Intel 网卡在VMware 环境 实现 SR-IOV 需要的条件和配置方法。
硬件需求:
兼容ESXi版本;
支持IOMMU,并且在BIOS中已开启;
支持VT-d 和 SR-IOV 规范;
在BIOS中开启SR-IOV;
软件需求:
ESXi 5.1 及以上版本;
Red Hat Enterprise Linux 6.x 及以上版本;
Windows Server 2008 R2 with SP2 及以上版本;
VF 驱动必须兼容,并且支持 GuestOS 。
大概配置步骤:
1、进入到ESXi 5.1/5.5的命令行界面,然后执行如下命令:
esxcli system module parameters set -m ixgbe -p "max_vfs=8"
备注:上文中的ixgbe表示的是SR-IOV设备的Module Name,max_vfs表示Virtual Functions数量;
2、如果是双口卡或者两张卡在同一个模块上,则可以执行如下命令:
esxcli system module parameters set -m ixgbe -p "max_vfs=8,8"
3、完成之后,就可以重启主机生效,依然可以用如下命令查看状态:esxcli network sriovnic
4、最后,就可以按照为虚拟机添加passthrough的方式去settings里为虚拟机添加相关的PCI设备了。
具体配置方法:
1) 创建VF
开启SSH, 登录ESXi , 使用以下命令创建VF
esxcli system module parameters set -m ixgbe -p=max_vfs=20,20,0,0
esxcli system module parameters list --module=ixgbe | grep max_vfs
esxcfg-module -g ixgb
配置完成之后,重启ESXi,参看以及创建的VF
lspci | grep -i intel | grep -i 'ethernet\|network'
补充一下,这一步可以通过Host Profile 尽快批量配置。
2)将VF分配给虚机
编辑虚机,添加PCI设备
选择VF,确定。
完成VF的分配。
3)GuestOS 安装VF 驱动。
Windos 需要单独去下载VF驱动, CentOS 6.x 自带了igbx 的驱动。
第四部分:
前面介绍了SR-IOV 在Red Hat Virtualization 的条件。下面简单介绍一下配置方法:
1) 创建VF
首先通过lscpi 验证物理网卡,通过重新加载内核模块参数,来创建VF:
modprobe -r igb
modprobe igb max_vfs=7
或者在rc.local 中配置:
echo 2 > /sys/class/net/enp14s0f0/device/sriov_numvfs
查看创建的VF
lscpi | grep 82587
virsh nodedev-list | grep 0b
2) 将VF分配给虚机
virsh nodedev-dumpxml pci_0000_0b_00_0 >> /tmp/new-i nterface. xml
virsh attach-device MyGuest /tmp/new-i nterface. xml --live --config
后面的步骤相同,不再赘述。SR-IOV 今天就介绍到这里。如果大家有兴趣,推荐阅读以下内容:
《IBM Power Systems SR-IOV Technical Overview and Introduction》
《How to Configure Intel Ethernet Converged Network Adapter-Enabled VF on VMware ESXi 5.1》
《Implementing SR-IOV on HPE ProLiant Servers with VMware vSphere 5.1》
《Red_Hat_Enterprise_Linux-7-Virtualization_Deployment_and_Administration_Guide-en-US》
SR-IOV的更多相关文章
- OpenStack 企业私有云的若干需求(7):电信行业解决方案 NFV
自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云(Hybrid cloud)支持 主流硬件支持.云快速交付 ...
- CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念及 Chelsio T5 产品介绍 转载
CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念及 Chelsio T5 产品介绍 2016年09月01日 13:56:30 疯子19911109 阅读数:4823 标签: ...
- 立体角的单位——立体弧度(sr)
国际单位制(SI)中,关于物理量 发光强度 的介绍: 1cd(坎德拉)为一光源在给定方向的发光强度,该光源发出频率为540×1012Hz(赫兹)的单色辐射,且在此方向上的辐射强度为 1/683 W/s ...
- SR触发器和JK触发器
SR触发器(电平触发器) 基本RS触发器的逻辑方程为:Q(n+1)=一S+RQ(n); 约束方程:R+S=1; 根据上述两个式子得到它的四种输入与输出的关系: 1.当R端有效(0),S端无效时(1), ...
- XenCenter删除SR失败解决方法
到CLI下 查SR的UUID xe sr-list SR的uuid=e0571e72-f6c5-1c9e-4ad8-9817b2331f47 FORGET SR xe sr-forget uuid=e ...
- 微软职位内部推荐-Sr DEV Lead, Bing Search Relevance
微软近期Open的职位: Contact Person: Winnie Wei (wiwe@microsoft.com )Sr DEV Lead, Bing Search RelevanceLocat ...
- 触发器(基本的SR触发器、同步触发器、D触发器)
一.能够存储1位二值信号的基本单元电路统称为触发器(Filp-Flop) 触发器是构成时序逻辑电路的基本逻辑部件.它有两个稳定状态:“0”和“1”.在不同的输入情况下,它可以被置0状态或1状态,当输入 ...
- 提交SR的一些小技巧
在平时的时候,遇到一些问题总会在metalink上提交SR(Service Request,SR,过去也叫Technical Assistance Request,TAR ),我们提交sr的时候,总是 ...
- 语音识别(SR)的秘密
语音识别(SR)功能是当今国外操作系统的标准特征,而国产操作系统根本不具备这样的特质,并且国家队没有相关的主观动力.去开发实际可用的语音识别系统.与国外相比,国产操作系统落后了一大节子,怪谁? 如何让 ...
- SR锁存器
CRM(临界连续模式)BOOST PFC 电路控制系统 SR锁存器 S和R都等于0的时候为什么有两个不同的Q?正因为这样才叫锁存器.Q’是Q的取反,不可能相同.Q*和Q‘不一样.Q是Q*的前一个状态. ...
随机推荐
- QTextStream写文件中文乱码解决办法
1.首先把Qt Creator的编辑器设置为使用 UTF-8: 工具-->选项-->文本编辑器-->行为,在右侧选项界面找到文件编码选项,设置为 UTF-8.2.使用 QText ...
- 去掉Tomcat网站地址栏的小猫图标
当我们打开CSDN等网站时,在地址栏前面就会出现红色的C状图标,如果在桌面新建此链接的快捷方式,则桌面图标也自动变为该地址栏ICO图标.在基于TOMCAT的BS应用或网站开发时,默认的图标为黄色的小猫 ...
- CSS3 flexbox弹性布局实例
常用例子 1.居中对齐 <!DOCTYPE html> <head> <meta charset="utf-8"> <style type ...
- django之项目部署知识点
一:项目部署的框架 nginx和uWSGI在生产服务器上进行的部署 二:什么是nginx? nginx是一个web服务器. 什么是web服务器? web服务器则主要是让客户可以通过浏览器进行访问,处理 ...
- NOIP2011提高组 Day1 T3 Mayan游戏
题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个7行×5列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定的步 ...
- Dubbo学习-5-监控中心simpleMonitor搭建
之前已经下载好的dubbo-admin-master源码中,有dubbo-monitor-simple工程,同理,使用maven命令打包成一个可执行的jar包: 1.进入dubbo-monitor-s ...
- 15:解决IntelliJ IDEA的乱码问题
1. -Dfile-encodings=UTF-8 ,全局:
- Axios 安卓4.4不兼容的问题
问题:Vue在使用Axios做接口请求时,如果是安卓4.4系统会发生报错,原因是安卓4.4不支持ES6的Promise语法 解决方案: 1.安装: npm install babel-polyfill ...
- UPDATE 在不同数据库中的使用方式
MYSQL 中update 表一 set Gmoney = 表二.列名 from 表一,表二 where 表一.EMPID = 表二.EMPID举例:update table1 set table1. ...
- eureka注册中心wro.css wro.js 404
注册中心和配置中心放在一个module里面,如果不配置配种中心的访问前缀,会被config拦截.所以改动如下: package com.cloud.stagging.lhcloudeureka; im ...