CN106789337B - 一种kvm的网络性能优化方法 - Google Patents

一种kvm的网络性能优化方法 Download PDF

Info

Publication number
CN106789337B
CN106789337B CN201710035535.6A CN201710035535A CN106789337B CN 106789337 B CN106789337 B CN 106789337B CN 201710035535 A CN201710035535 A CN 201710035535A CN 106789337 B CN106789337 B CN 106789337B
Authority
CN
China
Prior art keywords
virtual
network card
kvm
cpu
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710035535.6A
Other languages
English (en)
Other versions
CN106789337A (zh
Inventor
殷斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201710035535.6A priority Critical patent/CN106789337B/zh
Publication of CN106789337A publication Critical patent/CN106789337A/zh
Application granted granted Critical
Publication of CN106789337B publication Critical patent/CN106789337B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • H04L41/083Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability for increasing network speed

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

本发明提供一种KVM的网络性能优化方法,KVM虚拟机系统将物理网卡虚拟成多个虚拟网卡,虚拟机管理器将每个虚拟网卡配置给虚拟机,包括如下步骤:S1.KVM虚拟机系统通过第一CPU检测虚拟机数目;S2.当检测到的虚拟机数目M1小于设定阈值M时,回到步骤S1;S3.当检测到的虚拟机数目M1大于等于设定阈值M时,第一CPU判定所需虚拟网卡数目为N1;S4.第一CPU将物理网卡配置为N1个虚拟网卡;S5.虚拟机管理器采用intel VT‑d技术通过软件为每个虚拟机添加指定的虚拟网卡。本发明可以有效提升KVM下多虚拟机并行运行时系统的网络性能。

Description

一种KVM的网络性能优化方法
技术领域
本发明属于KVM虚拟化领域,具体涉及一种KVM的网络性能优化方法。
背景技术
KVM是目前较为常用的一种虚拟化实现方案,而KVM在同时运行的虚拟机数目达到较高数目时,其网络瓶颈往往成为制约其性能的关键,为了提升网络性能,单纯的更换千兆网卡为万兆网卡往往不能得到希望的结果。
在使用万兆网卡作为KVM的网络通信手段下,如何更好的提升系统的网络性能,减少系统的资源占用是急需解决的问题。
发明内容
为了克服上述问题,本发明提供如下技术方案:
一种KVM的网络性能优化方法,KVM虚拟机系统将物理网卡虚拟成多个虚拟网卡,虚拟机管理器将每个虚拟网卡配置给虚拟机,包括如下步骤:
S1. KVM虚拟机系统通过第一CPU检测虚拟机数目;
S2.当检测到的虚拟机数目M1小于设定阈值M时,回到步骤S1;
S3.当检测到的虚拟机数目M1大于等于设定阈值M时,第一CPU判定所需虚拟网卡数目为N1;
S4.第一CPU将物理网卡配置为N1个虚拟网卡;
S5.虚拟机管理器采用intel VT-d技术通过软件为每个虚拟机添加指定的虚拟网卡。
进一步地,步骤S5之后还包括如下步骤:
S6. KVM虚拟机系统通过第一CPU检测虚拟机数目M1是否发生变化;
S7.当检测到的虚拟机数目M1不变时,回到步骤S6;
S8.当检测到的虚拟机数目M1发生变化时,若虚拟机数目M1小于设定阈值M,第一CPU结束物理网卡的虚拟配置,回到步骤S1;
S9.若虚拟机数目M1大于等于设定阈值M,回到步骤S3。
进一步地,所述步骤S4中第一CPU采用SR-IOV技术将物理网卡配置为N1个虚拟网卡,具体步骤如下:
S41,在BIOS中打开VT-d技术和SR-IOV;
S42,编辑grub启动菜单:打开输入输出内存管理单元,指定IO调度器,解除每个虚拟网卡的内存限制和输入输出控制的限制;
S43,设置Linux内核参数:设置KVM虚拟机系统的进程最小运行时间,设置KVM虚拟机系统的进程被唤醒后最小运行时间的基数,设置KVM虚拟机系统一个运行队列所有进程运行一次的周期;
S44,加载物理网卡驱动程序模块配置文件,设置虚拟功能数等于虚拟网卡数目N1,同时禁用虚拟网卡驱动程序。
进一步地,所述步骤S8中结束物理网卡的虚拟配置的具体步骤如下:
S81,在BIOS中关闭VT-d技术和SR-IOV;
S82,加载物理网卡驱动程序模块配置文件,设置虚拟功能数等于0。
进一步地,
所述步骤S42中指定deadline为默认的IO调度器,通过Cgroup解除每个虚拟网卡的内存限制和输入输出控制的限制;
所述步骤S43中KVM虚拟机系统的进程最小运行时间设置为4000000ns, KVM虚拟机系统的进程被唤醒后最小运行的时间的基数设置为4000000ns, KVM虚拟机系统一个运行队列所有进程运行一次的周期设置为32000000ns;
所述步骤S44中,加载物理网卡驱动程序模块配置文件为ixgbe.conf,同时禁用虚拟网卡驱动程序为ixgbevf。
进一步地,所述KVM虚拟机系统运行在多核服务器上,第一CPU处于忙碌状态时,其他空闲CPU检测虚拟机数目。
进一步地,步骤S3中所需虚拟网卡数目N1为虚拟机数目M1的倍数。
进一步地,所述物理网卡10G网卡,数目至少为一个。
进一步地,手动将物理网卡中断绑定到第二CPU,具体步骤如下:
a1,停止物理网卡中断与CPU的自动绑定状态;
a2,查看物理网卡对应的网络中断号;
a3,通过网络中断号把对应物理网卡绑定到第二CPU。
进一步地,当第二CPU处于忙碌状态时,手动将物理网卡中断绑定到其他空闲的一个或多个CPU。
经过网卡中断手动绑定和物理网卡虚拟化之前,有数据到达物理网卡,物理网卡产生中断,中断随机分配到某个CPU,CPU响应中断,加载物理网卡驱动程序,CPU将数据传输到虚拟机管理器,虚拟机管理器将数据分配给某个虚拟机处理,数据处理完毕,产生中断关闭信号给CPU。
经过网卡中断手动绑定和物理网卡虚拟化之后,有数据到达物理网卡,物理网卡产生中断,中断到达绑定的第二CPU或者其他一个或多个空闲CPU,CPU响应中断,加载物理网卡驱动程序,驱动程序加载完毕,产生关中断信号给CPU,物理网卡通过DMA将数据从虚拟网卡直接传到对应的虚拟机,而不需要再经过虚拟机管理器。
本发明的有益技术效果:本发明通过检测虚拟机数目确定物理网卡的状态,虚拟机数目较多时,将物理网卡虚拟分配成多个虚拟网卡,为每个虚拟机配置虚拟网卡,实现从虚拟机环境直接访问网卡,减少了网卡数量,简化了布线,减少了交换机端口,提高网卡的利用率,减少或消除对传统服务器的CPU使用以及从物理网卡到虚拟机管理器再到虚拟机之间的数据流传输时间延迟,可以有效提升KVM下多虚拟机并行运行时系统的网络性能;同时手动分配网卡中断也可以有效减少因为中断分配造成的系统CPU占用过高问题,可以显著提升整体系统的网络响应速度。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
图1为本发明的流程图;
图2为应用本发明前的网络示意图;
图3和图4为本发明的网络示意图;
其中:1、10G网卡;2、第一虚拟网卡;3、第二虚拟网卡;4、第三虚拟网卡;5、第四虚拟网卡;6、第一虚拟机;7、第二虚拟机;8、第三虚拟机;9、第四虚拟机;10、第五虚拟网卡;11、第六虚拟网卡;12、第五虚拟机;13、第六虚拟机;14、第一CPU。
具体实施方式:
为使得本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本具体实施例中的附图,对本发明中的技术方案进行清楚、完整地描述。
如图1、图2和图3所示,本发明提供一种KVM的网络性能优化方法,KVM虚拟机系统将物理网卡虚拟成多个虚拟网卡,虚拟机管理器将每个虚拟网卡配置给虚拟机,以虚拟机数目的设定阈值取4为例,包括如下步骤:
KVM虚拟机系统通过第一CPU检测虚拟机数目;
当检测到的虚拟机数目M1小于设定阈值4时,第一CPU继续检测虚拟机数目;
当检测到的虚拟机数目M1等于设定阈值4时,第一CPU判定所需虚拟网卡数目为4;
第一CPU将物理网卡配置为4个虚拟网卡;第一CPU采用SR-IOV技术将物理网卡配置为4个虚拟网卡,具体步骤如下:
在BIOS中打开VT-d技术和SR-IOV;
编辑grub启动菜单:打开输入输出内存管理单元,指定deadline为默认的IO调度器,通过Cgroup解除每个虚拟网卡的内存限制和输入输出控制的限制;
设置Linux内核参数:设置KVM虚拟机系统的进程最小运行时间为4000000ns,设置KVM虚拟机系统的进程被唤醒后至少应该运行的时间的基数为4000000ns,设置KVM虚拟机系统一个运行队列所有进程运行一次的周期为32000000ns;
加载物理网卡驱动程序模块配置文件ixgbe.conf,添加虚拟功能数等于虚拟网卡数目4,禁用虚拟网卡驱动程序ixgbevf。
虚拟机管理器采用intel VT-d技术通过软件为每个虚拟机添加指定的虚拟网卡;
KVM虚拟机系统通过第一CPU检测虚拟机数目M1是否发生变化;
当检测到的虚拟机数目M1不变还是4时,继续回到前一步检测虚拟机数目M1是否发生变化;
当检测到的虚拟机数目M1发生变化时,若虚拟机数目M1小于设定阈值4,第一CPU结束物理网卡的虚拟配置,具体步骤如下:
在BIOS中关闭VT-d技术和SR-IOV;
加载物理网卡驱动程序模块配置文件为ixgbe.conf,设置虚拟功能数等于0;
继续检测虚拟机数目;
如图4所示,若虚拟机数目M1为6大于设定阈值4时,第一CPU重新判定所需虚拟网卡数目为6;
第一CPU将物理网卡配置为6个虚拟网卡;加载物理网卡驱动程序模块配置文件ixgbe.conf,添加虚拟功能数等于虚拟网卡数目6,禁用虚拟网卡驱动程序ixgbevf。
虚拟机管理器采用intel VT-d技术通过软件为每个虚拟机添加指定的虚拟网卡;
第一CPU继续检测虚拟机数目M1是否发生变化。
经过网卡中断手动绑定和物理网卡虚拟化之前,有数据到达10G网卡1,10G网卡1产生中断,中断随机分配到某个CPU,CPU响应中断,加载物理网卡驱动程序,CPU将数据传输到虚拟机管理器,虚拟机管理器将数据分配给某个虚拟机处理,数据处理完毕,产生中断关闭信号给CPU。
经过网卡中断手动绑定和物理网卡虚拟化之后,有数据到达10G网卡1,10G网卡1产生中断,中断到达绑定的第二CPU,第二CPU响应中断,加载物理网卡驱动程序,驱动程序加载完毕,产生关中断信号给第二CPU,10G网卡1通过DMA将数据从虚拟网卡直接传到对应的虚拟机,而不需要再经过虚拟机管理器;第二CPU处于忙碌状态时,手动将物理网卡中断绑定到其他空闲的一个或多个CPU。
Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux2.6.20之后集成在Linux的各个主要发行版本中。
SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O性能。SR-IOV 规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到 I/O 设备。
英特尔VT具体包括分别针对处理器、芯片组、网络的VT-X、VT-D和VT-C技术。intelVT-d是英特尔支持直接 I/O 访问的 VT虚拟化技术。
BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。
GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
Linux内核2.6开始引入了全新的IO调度子系统。Linux内核提供了CFQ(默认),deadline和noop三种IO调度器。deadline调度算法主要针对I/O请求的延时而设计,每个I/O请求都被附加一个最后执行期限。该算法维护两类队列,一是按照扇区排序的读写请求队列;二是按照过期时间排序的读写请求队列。如果当前没有I/O请求过期,则会按照扇区顺序执行I/O请求;如果发现过期的I/O请求,则会处理按照过期时间排序的队列,直到所有过期请求都被发射为止。在处理请求时,该算法会优先考虑读请求。 当系统中存在的I/O请求进程数量比较少时,与CFQ算法相比,deadline算法可以提供较高的I/O吞吐率。
Cgroup 是control group的简称,它为Linux内核提供了一种任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。
ixgbe.conf是适用于 10 千兆位英特尔网络连接基础驱动程序 。
ixgbevf是虚拟网卡驱动程序。
DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。
上述实施例是说明性的,而非限定性的,上述实施例只是帮助理解本发明,因此本发明不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他的具体实施方式,同样属于本发明保护的范围。

Claims (10)

1.一种KVM的网络性能优化方法,KVM虚拟机系统将物理网卡虚拟成多个虚拟网卡,虚拟机管理器将每个虚拟网卡配置给虚拟机,其特征在于,包括如下步骤:
S1.KVM虚拟机系统通过第一CPU检测虚拟机数目;
S2.当检测到的虚拟机数目M1小于设定阈值M时,回到步骤S1;
S3.当检测到的虚拟机数目M1大于等于设定阈值M时,第一CPU判定所需虚拟网卡数目为N1;
S4.第一CPU将物理网卡配置为N1个虚拟网卡;
S5.虚拟机管理器采用intel VT-d技术通过软件为每个虚拟机添加指定的虚拟网卡。
2.如权利要求1所述的一种KVM的网络性能优化方法,其特征在于,在步骤S5之后还包括如下步骤:
S6.KVM虚拟机系统通过第一CPU检测虚拟机数目M1是否发生变化;
S7.当检测到的虚拟机数目M1不变时,回到步骤S6;
S8.当检测到的虚拟机数目M1发生变化时,若虚拟机数目M1小于设定阈值M,第一CPU结束物理网卡的虚拟配置,回到步骤S1;
S9.若虚拟机数目M1大于等于设定阈值M,回到步骤S3。
3.如权利要求1所述的一种KVM的网络性能优化方法,其特征在于,所述步骤S4中第一CPU采用SR-IOV技术将物理网卡配置为N1个虚拟网卡,具体步骤如下:
S41,在BIOS中打开VT-d技术和SR-IOV;
S42,编辑grub启动菜单:打开输入输出内存管理单元,指定IO调度器,解除每个虚拟网卡的内存限制和输入输出控制的限制;
S43,设置Linux内核参数:设置KVM虚拟机系统的进程最小运行时间,设置KVM虚拟机系统的进程被唤醒后最小运行时间的基数,设置KVM虚拟机系统一个运行队列所有进程运行一次的周期;
S44,加载物理网卡驱动程序模块配置文件,设置虚拟功能数等于虚拟网卡数目N1,禁用虚拟网卡驱动程序。
4.如权利要求2所述的一种KVM的网络性能优化方法,其特征在于,所述步骤S8中结束物理网卡的虚拟配置的具体步骤如下:
S81,在BIOS中关闭VT-d技术和SR-IOV;
S82,加载物理网卡驱动程序模块配置文件,设置虚拟功能数等于0。
5.如权利要求3所述的一种KVM的网络性能优化方法,其特征在于,
所述步骤S42中指定deadline为默认的IO调度器,通过Cgroup解除每个虚拟网卡的内存限制和输入输出控制的限制;
所述步骤S43中KVM虚拟机系统的进程最小运行时间设置为4000000ns,KVM虚拟机系统的进程被唤醒后最小运行时间的基数设置为4000000ns,KVM虚拟机系统一个运行队列所有进程运行一次的周期设置为32000000ns;
所述步骤S44中,加载物理网卡驱动程序模块配置文件为ixgbe.conf,禁用虚拟网卡驱动程序为ixgbevf。
6.如权利要求1所述的一种KVM的网络性能优化方法,其特征在于,所述KVM虚拟机系统运行在多核服务器上,第一CPU处于忙碌状态时,其他空闲CPU检测虚拟机数目。
7.如权利要求1所述的一种KVM的网络性能优化方法,其特征在于,步骤S3中所需虚拟网卡数目N1为虚拟机数目M1的倍数。
8.如权利要求1所述的一种KVM的网络性能优化方法,其特征在于,所述物理网卡10G网卡,数目至少为一个。
9.如权利要求1所述的一种KVM的网络性能优化方法,其特征在于,手动将物理网卡中断绑定到第二CPU,具体步骤如下:
a1,停止物理网卡中断与CPU的自动绑定状态;
a2,查看物理网卡对应的网络中断号;
a3,通过网络中断号把对应物理网卡绑定到第二CPU。
10.如权利要求9所述的一种KVM的网络性能优化方法,其特征在于,当第二CPU处于忙碌状态时,手动将物理网卡中断绑定到其他空闲的一个或多个CPU。
CN201710035535.6A 2017-01-18 2017-01-18 一种kvm的网络性能优化方法 Active CN106789337B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710035535.6A CN106789337B (zh) 2017-01-18 2017-01-18 一种kvm的网络性能优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710035535.6A CN106789337B (zh) 2017-01-18 2017-01-18 一种kvm的网络性能优化方法

Publications (2)

Publication Number Publication Date
CN106789337A CN106789337A (zh) 2017-05-31
CN106789337B true CN106789337B (zh) 2020-06-26

Family

ID=58944181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710035535.6A Active CN106789337B (zh) 2017-01-18 2017-01-18 一种kvm的网络性能优化方法

Country Status (1)

Country Link
CN (1) CN106789337B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107357641A (zh) * 2017-06-21 2017-11-17 西安电子科技大学 一种云计算中任务调度方法
CN109144672A (zh) * 2018-09-07 2019-01-04 郑州云海信息技术有限公司 一种分配PCIe设备的方法、系统及相关组件
CN112367267B (zh) * 2020-09-30 2022-03-29 新华三大数据技术有限公司 一种虚拟机管理方法及装置
CN112600723B (zh) * 2020-11-13 2022-05-13 苏州浪潮智能科技有限公司 一种基于虚拟化场景的网卡测试方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523153A (zh) * 2011-12-08 2012-06-27 华中科技大学 虚拟化环境下的负载均衡方法
CN104503825A (zh) * 2014-12-29 2015-04-08 西安电子科技大学 一种基于kvm混合式设备虚拟化方法
CN104965749A (zh) * 2014-10-15 2015-10-07 哈尔滨安天科技股份有限公司 一种kvm虚拟机快照恢复优化方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523153A (zh) * 2011-12-08 2012-06-27 华中科技大学 虚拟化环境下的负载均衡方法
CN104965749A (zh) * 2014-10-15 2015-10-07 哈尔滨安天科技股份有限公司 一种kvm虚拟机快照恢复优化方法及系统
CN104503825A (zh) * 2014-12-29 2015-04-08 西安电子科技大学 一种基于kvm混合式设备虚拟化方法

Also Published As

Publication number Publication date
CN106789337A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
EP3039540B1 (en) Virtual machine monitor configured to support latency sensitive virtual machines
Zhang et al. {FlashShare}: Punching Through Server Storage Stack from Kernel to Firmware for {Ultra-Low} Latency {SSDs}
US10691363B2 (en) Virtual machine trigger
US7945908B1 (en) Method and system for improving the accuracy of timing and process accounting within virtual machines
US10162658B2 (en) Virtual processor allocation techniques
Gordon et al. ELI: Bare-metal performance for I/O virtualization
EP2202639B1 (en) Virtual machine monitor
US8443376B2 (en) Hypervisor scheduler
Song et al. Schedule processes, not VCPUs
US8826270B1 (en) Regulating memory bandwidth via CPU scheduling
CN106789337B (zh) 一种kvm的网络性能优化方法
US20110093861A1 (en) Assigning A Portion Of Physical Computing Resources To A Logical Partition
US8972702B2 (en) Systems and methods for power management in a high performance computing (HPC) cluster
US9864626B2 (en) Coordinating joint operation of multiple hypervisors in a computer system
CN107977251B (zh) 对在虚拟化系统中的共享寄存器的排他访问
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
WO2018040845A1 (zh) 一种计算资源调度方法及装置
Klingensmith et al. Hermes: A real time hypervisor for mobile and iot systems
Smolyar et al. Ioctopus: Outsmarting nonuniform dma
US20060005184A1 (en) Virtualizing management hardware for a virtual machine
US20230221971A1 (en) Multiple port emulation
Zou et al. DirectNVM: Hardware-accelerated NVMe SSDs for high-performance embedded computing
US11748285B1 (en) Transaction ordering management
AT&T
Lee et al. Mist: Mitigating host-side interference for storage traffic in virtualized data centers

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant