虚拟化是一个广义的术语,通常指在虚拟基础上而不是在真实基础上运行的计算组件。 它是一个简化管理和优化资源的解决方案。 服务器虚拟化是一种用于集成基于 x86 的服务器的方法。 ,提高资源利用效率和性能的技术。

本文从企业业务系统和管理的角度,重点分析和研究X86技术架构下的虚拟网卡、SR-IOV、NUMA、虚拟磁盘格式的对应特性,探讨X86技术架构下的资源划分和性能优化方案。不同的应用场景。 希望通过多应用系统下的实践和优化配置,提高X86服务器的性能和资源利用效率。

1 x86虚拟化的两种常见架构

对于x86虚拟化来说,常见的架构有两种:主机架构和裸机架构。 主机架构将虚拟化层运行在操作系统之上,并将其作为应用程序运行,并拥有广泛的硬件支持。 相比之下,裸机架构金属架构直接在x86硬件系统上运行虚拟化层,可以直接访问硬件资源,而不需要操作系统来实现硬件访问,因此效率更高。 和ESX都是基于主机架构实现的,ESX是业界首款裸机架构虚拟化产品,第五代产品已经发布。 ESX需要运行在经过认证的硬件平台上,能够提供优异的性能,能够完全满足大型数据中心的性能需求。 本文主要讨论的也是基于X86裸机架构的服务器的资源划分和性能优化问题。

2 x86虚拟化资源划分的三级

简单来说,服务器的资源划分包括三个层面:网络、计算、存储。 每个虚拟机都处于其连接的网络中,承担一定的计算任务,并存储计算数据以供业务使用。

网络层

从网络层面来说,X86物理机使用物理网卡,并连接到物理交换机。 一个X86被划分为多个VM虚拟机后,虚拟网卡和虚拟交换机就诞生了。 这样,虚拟网络和物理网络之间就发生流量的传输和交互。 如图1所示。

如何开启cpu虚拟化_虚拟cpu怎么开启_cpu开启虚拟化技术

图1 虚拟网络和物理网络

同一台物理机上划分的VM可以分为同一网段和不同网段。 根据虚拟机之间的网络流量是否经过物理网卡的不同,可以分为四种不同的情况:

第一种情况,例如业务系统的虚拟机在同一主机的同一网段,虚拟机之间的网络流量不经过主机的物理网卡,最大网络流量为7.6GB 。 (测试方法:启用jperf作为网络上的数据接收端,在 jperf中启用jperf,发送网络数据包,同时对网络流量进行加压。X86主机有双10G网卡)

第二种情况,例如某个业务系统的虚拟机位于同一主机的不同网段,虚拟机之间的网络流量经过主机的物理网卡,最大网络流量为5.6GB。 测试方法同上。

第三种情况,例如某个业务系统的虚拟机位于不同主机的同一网段,虚拟机之间的网络流量经过主机的物理网卡,最大网络流量为6.5GB。 测试方法同上。

第四种情况,例如某业务系统的虚拟机处于不同主机的不同网段,虚拟机之间的网络流量经过主机的物理网卡,最大网络流量为4.6GB。 测试方法同上。

几种测试场景的对比表如表1所示。

虚拟cpu怎么开启_cpu开启虚拟化技术_如何开启cpu虚拟化

表1 几种场景下VM测试数据对比

X86物理服务器上VM网络虚拟化的另一种技术是SR-IOV。 SR-IOV技术是INTEL提出的一种基于硬件的虚拟化解决方案,可以提高性能和可扩展性。 SR – IOV 标准允许虚拟机之间高效共享 PCIe( )设备,并在硬件中实现,以获得与本机性能相当的网络 I/O 性能。 例如,我们把一台X86物理服务器上的10G网卡通过SR-IOV技术分成四块虚拟网卡供四台虚拟机使用,那么它的网络传输性能将远高于使用虚拟化网卡的网络传输性能。虚拟机。

测试方法:在X86物理服务器上,4台VM启用jperf作为网络数据接收方; 在另一台X86物理服务器上,4个VM启用jperf并连接到jperf发送网络数据包,同时对网络流量进行加压。 两台X86主机有双10G网卡。

SR-IOV虚拟化测试架构如图2所示。

虚拟cpu怎么开启_cpu开启虚拟化技术_如何开启cpu虚拟化

图2 SR-IOV虚拟化测试架构

网络传输数据量对比如表2所示。

cpu开启虚拟化技术_虚拟cpu怎么开启_如何开启cpu虚拟化

普通虚拟化传输的最大数据量为4.6Gbps,而SR-IOV的直接硬件虚拟化可达9.4Gbps。

具有SR-IOV功能的设备还具有以下优点:节能、减少适配器数量、简化布线、减少交换机端口。 SR-IOV有很多优点,但也有很多限制。 例如,许多原来的功能将无法用于 SR-IOV 虚拟机。 例如,、、、、高、FT、DRS、DPM、挂起和恢复、快照、热添加和删除虚拟设备、加入集群环境。

因此,我们在考虑x86网络虚拟化时,需要根据性能、业务特性、基础设施等方面进行更全面的考虑。 如果业务对性能要求比较高,并且不需要更大的灵活性,可以考虑SR-IOV技术。 否则,选择X86通用的网络虚拟化技术,结合部署。

计算水平

从计算的角度来看,X86物理服务器上的CPU和内存资源可以提供给虚拟机。 当今的高性能 解决多处理器多核和非统一内存架构交互带来的新的CPU和内存资源分配方式的挑战,提高内存密集型工作负载的性能。

NUMA架构如图3所示。

cpu开启虚拟化技术_如何开启cpu虚拟化_虚拟cpu怎么开启

图3 NUMA架构图

传统的服务器架构将内存放入单个存储池中,这对于单处理器或单核系统来说效果很好。 然而,这种传统的统一访问方式在多个核心同时访问内存空间时会导致资源争用。 使用和性能问题。 NUMA是一种针对服务器CPU和内存设计的新架构。 它改变了内存呈现给 CPU 的方式。 这是通过对服务器每个CPU的内存进行分区来实现的。 每个分区(或内存块)称为一个 NUMA 节点,与该分区关联的处理器可以更快地访问 NUMA 内存,并且不需要与其他 NUMA 节点竞争服务器上的资源(其他内存分区分配给其他处理器) 。 NUMA还支持任何处理器访问服务器上的任何内存区域。 处理器当然可以访问位于不同区域的内存数据,但需要在本地 NUMA 节点之外进行更多传输,并且需要目标 NUMA 节点的确认。 这会增加总体开销并影响 CPU 和内存子系统的性能。

例如,一台服务器配置有两个八核处理器和128GB内存。 在NUMA架构中,每个处理器可以控制64GB的物理内存,每个处理器的8个核心将对应一个8GB的NUMA节点。 这将如何影响虚拟机性能? 由于每个处理器核心访问NUMA节点中的内存的速度都比其他节点快,因此当虚拟机内存大小小于或等于NUMA节点的内存大小时,虚拟机理论上可以获得最佳性能。 所以我们在这台物理服务器上分配虚拟机时,不要给每个虚拟机分配超过8GB的内存。 如果给虚拟机分配更多的内存,虚拟机必须访问其NUMA节点之外的部分内存,因此更多或更少都会影响其性能。 如果应用程序能够感知 NUMA,那就更好了。 使用 vNUMA,您可以创建支持 NUMA 的虚拟机。 虚拟机将被划分为虚拟NUMA节点,每个vNUMA节点将被放置在不同的物理NUMA节点上。 尽管虚拟机仍然在两个 NUMA 节点之间扩展,但虚拟机内的操作系统和应用程序是 NUMA 感知的,并且资源使用将得到优化。

NUMA 给数据中心服务器上内存的安装和选择方式带来了许多变化。 在给服务器添加物理内存的时候,我们需要注意添加的内存在NUMA节点之间要均衡匹配,保证主板上的每条内存和每一个处理器的内存都是一样的。 如果您在我们的示例服务器上配置更多内存,则必须在处理器之间平衡这些内存模块。 如果添加 64GB 内存,每个处理器将分配 32GB。 内存(每个处理器可支配内存将增加到96GB,服务器总内存将达到192GB),每个NUMA节点的内存大小将从8GB增加到12GB。

结合最佳实践,CPU一般推荐,最大支持64个vCPU,一般不超过32个,最好不要过度配置; 一般不推荐内存,不同的业务对内存大小会有不同的要求。 当然,最好不要跨NUMA单元进行调用。 另请注意,NUMA架构仅针对物理CPU(),而不针对核心(Core)。 由于每个受控内存插槽不同,请确保内存插槽均匀。例如,128G内存分为8个16G内存条,则应将4个插入一个内存插槽,将另外4个插入另一个内存插槽。 给虚拟机分配vCPU资源时,也尽可能按照/Core的倍数来分配,如1X1、1X2、1X 4、1X8、2X1、2X2、2X4、2X8等组合,但不要使用组合例如2X3、2X5、2X7。 后一种组合会造成跨内存调用,很容易导致性能下降。

存储层

从存储的角度来看,.

如何开启cpu虚拟化_cpu开启虚拟化技术_虚拟cpu怎么开启

图4 磁盘的三种模式

厚置备延迟置零(厚)以默认的厚格式创建虚拟磁盘。 所需的所有空间均在创建期间分配给虚拟磁盘。 保留在物理设备上的任何数据在创建时都不会被删除,但随后会在第一次执行写入操作时从虚拟机中删除,并根据需要重置为零。 简单来说,就是立即分配指定大小的空间。 空间中的数据暂时不清除,稍后根据需要清除; 厚置备(eager Thick)是为了支持集群功能(例如Fault)而创建的。 所需的空间在创建时分配给虚拟磁盘。 与平面格式相反,物理设备上保留的数据在创建过程中被清零。 创建此格式的磁盘可能比创建其他类型的磁盘花费更长的时间。 简单来说,就是立即分配一个指定大小的空间,并清除该空间内的所有数据; 精简配置(thin)使用精简配置格式。 最初,精简配置磁盘仅使用最初需要的磁盘。 数据存储空间。 如果精简磁盘将来需要更多空间,它可以增长到为其分配的最大容量。 简单来说,就是给磁盘文件指定最大增长空间,需要增长时检查是否超出限制。

此外,在虚拟机中使用时,与厚配置格式相比,精简格式会对性能产生一些负面影响。 这是因为精简格式的磁盘是动态扩展的,磁盘上不会一次性生成几个GB的vmdk文件,所以与厚置备格式的磁盘不同,厚置备格式的磁盘会占用连续的磁盘空间,在访问精简格式的磁盘时,在精简格式中,由于磁头在不连续的磁盘块之间移动,因此寻道时间必然会变长,从而影响磁盘IO。 表现。

综上所述,精简配置的性能无论是在部署还是应用上都不如厚配置。 因此,在空间不紧张且足够的情况下,建议您使用厚置备格式的虚拟磁盘。

3 x86虚拟化后如何根据业务优化性能

例如,Linux下的邮件系统包括邮件服务器、数据库和网络。 邮件系统从磁盘上最大的问题之一就是它不是很多大文件的读写,而是很多小文件的读写,而这些读写请求是来自于多个进程或者线程。同时。 对于这种小文件较多的读写应用服务,在分配邮件用户所在磁盘时,建议使用Thin模式。 这不仅避免了大量的初始空间占用,而且还可以按需增长。

从内存角度来看,每个进程不会消耗太多内存。 我们期望的是,大量的内存会自动用于磁盘缓存,以提高磁盘 I/O 速率。 当然,我们不需要这样做。 ,linux帮我们完成了! Linux虚拟内存管理默认使用所有空闲内存空间作为硬盘缓存。 因此,在拥有几 GB 内存的生产 Linux 系统中,您经常可以看到可用内存只有 20MB。 从处理器来看邮件系统,无论是smtp、imap都不会占用大量CPU。 这样,我们在分配CPU和内存资源时,就可以根据NUMA架构配置固定大小的单元。 例如,一台配备两个八核处理器和128GB内存的服务器,虚拟构建成4台邮件服务器,每台可以分配4个核心、32G。

从网络角度来看,邮件系统会频繁使用网络子系统,但邮件系统的瓶颈仍然是磁盘吞吐量而不是网络吞吐量。 这类应用不需要强交互,并且允许延迟,因此网卡虚拟或SR-IOV的影响并不大。

对于邮件系统的数据库服务器,由于小文件的随机读写较多,数据库磁盘可以选择厚置备模式,以提高小数据块的IO。

针对不同的业务系统,需要具体问题具体分析。 性能优化不是一朝一夕就能完成的。 随着业务的发展和变化,优化的技术手段和方法也会随之变化。

4 从企业日常使用和管理角度看x86服务器虚拟化

不同的企业级应用,其CPU、内存资源和空间的利用率不同。 如何利用NUMA架构来优化资源分配、提高性能对于企业数据中心的管理也非常有意义。

见表3

如何开启cpu虚拟化_cpu开启虚拟化技术_虚拟cpu怎么开启

表3 不同企业级应用资源利用率对比

对于数据库服务器来说,由于对CPU和内存资源要求较高,不适合多机共享资源,因此应尽可能使用配置较好的物理机。 对于VDI桌面和文件服务器来说,NUMA架构下的固定CPU和内存更适合。 对于单元的分配,邮件系统需要根据具体情况来分配NUMA架构中的资源。 对于按需更改的网站,NUMA 可能并不适合所有网站。 例如,网站中的缓存服务器更适合非NUMA架构的内存分配。 在分配磁盘空间时,IO性能要求较高的业务系统适合采用厚置备的空间分配方式; IO性能要求不高、业务增长空间不大的业务系统适合精简配置空间分配。 。

5 结论

X86服务器虚拟化是一种用于整合服务器资源、提高效率的技术。 X86虚拟化可以带来更高的服务器硬件和系统资源利用率,透明的负载均衡、动态迁移、自动故障隔离、系统自动重构的高可靠性服务器应用环境,以及更加简洁统一的服务器资源分配和管理模型。 X86服务器虚拟化在资源划分后的性能优化也大大提高了数据中心的整体资源利用率,符合当今绿色节能的新理念。

关于作者:

孙杰是北京中油瑞飞高级架构师,著名技术博主,国内云技术界技术专家。

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注