‘壹’ pve半虚拟化网卡性能
pve半虚拟化网卡性能pve半虚拟化网卡性能
容易被忽略的PVE细节—PVE的tips
cosz 22-02-15关注
PVE的教程一搜一大把,站内也有很好的PVE入门教程,大家跟着一步一步走基本上都不会出问题。但是前几天发了一篇x86小主机评测后发现,PVE有一些细节部分很多教程没有说清楚,我尽可能的将在这篇文章中说清楚。
注:为了保证专业性,我会尽力找到官方的一些解释,附在各个部分下面。
一、虚拟机和CT模板
ct和虚拟机
ct和虚拟机
vm是完全虚拟出来一整个主机,而ct是进程隔离。简单来说就是宾馆和青年旅社的关系,vm虚拟化隔离更彻底,但是资源占用也较大,ct进程隔离,所以不能任意冲桥模拟出任何系统,但是资源利用率最高。如果你使用linux,ct一般能满足你的需求。
二、CPU分配
很多时候,家用小主机是4核、双核,但是我们往往创建了不止一个虚拟机,可能有小伙伴有疑问:是不是要按照物理核心数分配给各个虚拟机?CPU模式选哪个更好?
那我们就来说说PVE中cpu分配页的各个选项。
cpu
cpu
插槽数:
虽然家用主板大部分都是1板1cpu,但是存在一个主板可以搭载多颗cpu的情况。这里的插槽数就是你想给你创建的这个虚拟机分配的cpu数量。家用一般选1就可以了。
核心数:
关于cpu核心数的分配,更像是docker中的limit。我们给虚拟机A分配了2核,那么他最多只能使用2核,但不代表这两颗核心完全保留给了虚拟机A。如果你有过esxi的使用经验,esxi中内存有一个“完全预留”,这里的cpu分配就和完全预留是截然不同的概念。所以不需要有负担,放开手每个核心设置满核心都可以。有人要问那分配的意义在哪里?我下面说到权重的时候详细说。
It is perfectly safe if the overall number of cores of all your VMs is greater than the number of cores on the server (e.g., 4 VMs with each 4 cores on a machine with only 8 cores).
类别:
这是绝大多数教程都没说的东西。默认可以看到是kvm64,我们拉到最底下还可以看到host。两个的区别用一句概括就是:kvm64具有最好的迁移性,host具有最好的性能。所谓迁移性,就是你将一个虚拟机从宿主机A迁移到宿主机B,如果你没有这样的需求,选host就好了。引用官方的话说就是:
If you don’t care about live migration or have a homogeneous cluster where all nodes have the same CPU, set the CPU type to host, as in theory this will give your guests maximum performance.
权重:困判闹
就像上面说的,如果我们给每个虚拟机都分配了相同的核心数,那该如何调度呢?均衡分配。那如果我的虚拟机A很重要,一般需要更多的资源,不想被均衡分配抢资源怎么办呢?将权重调高。比如A是2048,B是1024,那么在调度上A就是B的两倍优先。
NUMA:
一种将内存分散到每个cpu的本地储存池的技术。就像过去是市中心大商场,你每次买东西都要去大商场,路途远耗时长,现在各个地方开了便利店,你就可以更快的拿到资源。但是这一切的前提是你有多个cpu。如过你只有一个,开和不开区别不大
三、内存
内存
内存
内存只需要说一个,ballooning。它是一种动态调节宿主机和虚拟机之间内存的技术,但是前提是你的虚汪罩拟机能够使用ballooning。例如一些人在pve下安装ikuai总是莫名重启,可以试试关掉ballooning,情况会有改善(我不是说开了就一定重启)
四、网络
如果你需要在pve下虚拟路由(例如openwrt),建议进行直通网卡。直通网卡教程一搜一大把,我就不赘述。如果一不小心直通了管理口,无论如何进不去pve管理页面了,可以将hdmi显示输出连接到一个显示器上,在显示出的pve管理命令行下输入
qm stop “你的虚拟机id(例如101)”
之后正常进入管理页面删除直通设备就可以了。
有人会说半虚拟化已经很好了为什么要直通。诚然,对于性能比较好的主机,半年虚拟化也可以跑满带宽,但是如果有直通的条件,为什么不直通将更多的资源留给其他项目呢?如果网口不够另说。
虚拟化网卡
虚拟化网卡
另外选项中的e1000是历史比较悠久的虚拟化技术了,后来有e1000e(esxi),对于pve来说,选半虚拟化最稳妥。
五、概要中的温度显示
有很多人需要随时看到温度情况,但是通过sensor命令不够直观,而且每次要进命令行。可以用一个小插件来实现温度、去掉订阅提示、换源等操作。
https://github.com/ivanhao/pvetools
使用方法README介绍的很详细,我就指个路就行了。效果如图
温度显示
温度显示
六、PVE下虚拟机无法关闭问题
有时候要重启pve,但是发现其中一个虚拟机无论如何都关不掉,不停显示停止错误。这时候可以如下操作
1. 进入pve命令行使用如下命令
qm stop “你的虚拟机id”
如果显示无法停止,由于无法unlockxxxx,进行第二步
2. 删除conf
输入如下命令后再次执行第一步
rm /var/lock/qemu-server/lock-103.conf
七、pve挂载nas存储问题
我看很多人都是通过linux的方式进行挂载,但是对于nas用户来说,有现成的ftp、nfs等服务时,就无须再用繁琐的挂载到mnt下等等操作。下面以nfs为例
开启你nas的nfs服务,例如威联通在共享文件夹下对你想要挂载的文件夹进行nfs赋权,之后进入pve
按照如图路径进入nfs挂载设置
nfs挂载
nfs挂载
之后填入你nfs服务器地址即可,名称什么的看你喜好。
如图我的设置
‘贰’ kvm虚拟机存储速度
kvm性能优化,主要集中在cpu、内存、磁森巧盘、网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节。
1. CPU
cpu优化需要搞清楚node、socket、core、logic processor的关系,知道内存、l3-cache、l2-cache、l1-cache和cpu的关系。
针对kvm的优化,一般情况,都是通过pin,将答键vm上的cpu绑定到某一个node上,让其共享l3-cache,优先选择node上的内存,bind方法可以通过此举键virt-manage processor里面的pinning动态绑定。这个绑定是实时生效的。
由于没有下载到speccpu2005,所以写了个大量消费cpu和内存的程序,来检验绑定cpu所带来的性能提升,程序如下:
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#define BUF_SIZE 512*1024*1024
#define MAX 512*1024
#define COUNT 16*1024*1024
char * buf_1 = NULL;
char * buf_2 = NULL;
void *pth_1(void *data)
{
char * p1 = NULL;
char * p2 = NULL;
int value1 = 0;
int value2 = 0;
int value_total = 0;
int i = 0;
int j = 0;
for (i = 0; i <=COUNT; i++) {
value1 = rand() % (MAX + 1);
value2 = rand() % (MAX + 1);
p1 = buf_1 + value1*1024;
p2 = buf_2 + value2*1024;
for (j = 0; j < 1024; j++) {
value_total += p1[j];
value_total += p2[j];
}
}
return NULL;
}
void *pth_2(void *data)
{
char * p1 = NULL;
char * p2 = NULL;
int value1 = 0;
int value2 = 0;
int value_total = 0;
int i = 0;
int j = 0;
for (i = 0; i <=COUNT; i++) {
value1 = rand() % (MAX + 1);
value2 = rand() % (MAX + 1);
p1 = buf_1 + value1*1024;
p2 = buf_2 + value2*1024;
for (j = 0; j < 1024; j++) {
value_total += p1[j];
value_total += p2[j];
}
}
return NULL;
}
int main(void)
{
buf_1 = (char *)calloc(1, BUF_SIZE);
buf_2 = (char *)calloc(1, BUF_SIZE);
memset(buf_1, 0, BUF_SIZE);
memset(buf_2, 0, BUF_SIZE);
pthread_t th_a, th_b;
void *retval;
pthread_create(&th_a, NULL, pth_1, 0);
pthread_create(&th_b, NULL, pth_2, 0);
pthread_join(th_a, &retval);
pthread_join(th_b, &retval);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
偶数cpu在node 0 上,奇数cpu在node 1上,vm有2个cpu,程序有2个线程,分别将vm绑定到8,9和10,12,通过time命令运行程序,time ./test,测试结果如下
8,9
real 1m53.999s
user 3m34.377s
sys 0m3.020s
10,12
real 1m25.706s
user 2m49.497s
sys 0m0.699s
可以看出,绑定到同一个node上,比绑到不同node上其消耗时间小不少。测试过程中,也发现如果提供8、9、10、11的cpu,系统会在大部分时间选择8、10和9、11,所以猜测,kvm在cpu bind上,可能已经做了优化,会尽可能的往同一个node上绑定。
这里需要注意的一点是,通过virt-manage pin cpu,仅仅进行cpu bind,会共享l3-cache,并没有限制一定用某一个node上的内存,所以仍然会出现跨node使用内存的情况
2. 内存
优化项包括EPT、透明大页、内存碎片整理、ksm,下面一个一个来介绍
2.1 EPT
针对内存的使用,存在逻辑地址和物理地址的转换,这个转换时通过page table来进行的,并且转换过程由cpu vmm硬件加速,速度是很块的。
但是引入vm之后,vm vaddr----->vm padddr--------->host paddr,首先vm需要进行逻辑地址和物理地址的转换,但是vm的物理地址还是host机的逻辑地址,需要再进行一次逻辑地址到物理地址的转换,所以这个过程有2次地址转换,效率非常低。
幸亏intel提供了EPT技术,将两次地址转换变成了一次。这个EPT技术是在bios中,随着VT技术开启一起开启的。
2.2 透明大页
逻辑地址向物理地址的转换,在做转换时,cpu保持一个翻译后备缓冲器TLB,用来缓存转换结果,而TLB容量很小,所以如果page很小,TLB很容易就充满,这样就很容易导致cache miss,相反page变大,TLB需要保存的缓存项就变少,减少cache miss。
透明大页的开启:echo always > /sys/kernel/mm/transparent_hugepage/enabled
内存碎片整理的开启:echo always> /sys/kernel/mm/transparent_hugepage/defrag
2.3 KSM
简单理解就是可以将host机内容相同的内存合并,节省内存的使用,特别是当vm操作系统都一样的情况,肯定会有很多内容相同的内存,开启了KSM,则会将这些内存合并为一个,当然这个过程会有性能损耗,所以开启与否,需要考虑使用场景,如果不注重vm性能,而注重host内存使用率,可以考虑开启,反之则关闭,在/etc/init.d/下,会有两个服务,服务名称为ksm和ksmtuned,都需要关闭
3. 磁盘
磁盘的优化包括:virtio-blk、缓存模式、aio、块设备io调度器
3.1 virtio
半虚拟化io设备,针对cpu和内存,kvm全是全虚拟化设备,而针对磁盘和网络,则出现了半虚拟化io设备,目的是标准化guest和host之间数据交换接口,减少交互流程和内存拷贝,提升vm io效率,可以在libvirt xml中设置,disk中加入<target dev='vda' bus='virtio'/>
3.2 缓存模式
从vm写磁盘,有3个缓冲区,guest fs page cache、Brk Driver writeback cache(qemu的cache)、Host FS page cache,在host上的设置,无法改变guest fs page cache,但是可以改变后面2个cache,缓存模式有如下5种,当采用Host FS page cache,会有一个写同步,会实时将host cache中的数据flush到磁盘上,当然这样做比较安全,不会丢失数据,但写性能会受到影响。
writeback mode在mail server这种小文件 高io的服务器上,其性能是很差的,none模式大部分情况要比writethrough性能稍好一点,所以选择none。
启用方式在libvirt xml disk中加入<driver name='qemu' type='qcow2' cache='none'/>
3.3 aio
异步读写,分别包括Native aio: kernel AIO 和 threaded aio: user space AIO emulated by posix thread workers,内核方式要比用户态的方式性能稍好一点,所以一般情况都选择native,开启方式<driver name='qemu' type='qcow2' cache='none' aio='native'/>
3.4 块设备调度器
cfq:perprocess IO queue,较好公平性,较低aggregate throughput
deadline:per-device IO queue,较好实时性,较好aggregate throughput,不够公平,当某些vm有大量io操作,占用了大量io资源时,其它后加入的vm很有可能抢占不到io资源。
这个目前笔者还没有做过测试,但是查看网易和美团云的方案,都将其设置为cfq。
开启方式:echo cfq > /sys/block/sdb/queue/scheler
4. 网络
优化项包括virtio、vhost、macvtap、vepa、SRIOV 网卡,下面有几篇文章写的非常好
http://www.ibm.com/developerworks/cn/linux/1312_xiawc_linuxvirtnet/
http://xiaoli110.blog.51cto.com/1724/1558984
4.1 virtio
更改虚拟网卡的类型,由全虚拟化网卡e1000、rtl8139,转变成半虚拟化网卡virtio,virtio需要qemu和vm内核virtio驱动的支持,这个原理和磁盘virtio原理一样,不再赘述。
4.2 vhost_net
vhost_net将virtiobackend处理程序由user space转入kernel space,将减少两个空间内存拷贝和cpu的切换,降低延时和提高cpu使用率
4.3 macvtap
代替传统的tap+bridge,有4中模式,bridge、vepa、private、passthrough
1 Bridge
完成与 Bridge 设备类似功能,数据可以在属于同一个母设备的子设备间交换转发. 当前的Linux实现有一个缺陷,此模式下MACVTAP子设备无法和Linux Host通讯,即虚拟机无法和Host通讯,而使用传统的Bridge设备,通过给Bridge设置IP可以完成。但使用VEPA模式可以去除这一限制. macvtap的这种bridge模式等同于传统的tap+bridge的模式.
2 VEPA
是对802.1Qbg标准中的VEPA机制的部分软件实现,工作在此模式下的MACVTAP设备简单的将数据转发到母设备中,完成数据汇聚功能,通常需要外部交换机支持Hairpin模式才能正常工作。
3 Private
Private模式和VEPA模式类似,区别是子 MACVTAP之间相互隔离。
4 Passthrough
可以配合直接使用SRIOV网卡, 内核的macvtap数据处理逻辑被跳过,硬件决定数据如何处理,从而释放了Host CPU资源。MACVTAP Passthrough 概念与PCI Passthrough概念不同,PCI Passthrough针对的是任意PCI设备,不一定是网络设备,目的是让Guest OS直接使用Host上的 PCI 硬件以提高效率。MACVTAP Passthrough仅仅针对 MACVTAP网络设备,目的是饶过内核里MACVTAP的部分软件处理过程,转而交给硬件处理。综上所述,对于一个 SRIOV 网络设备,可以用两种模式使用它:MACVTAP Passthrough 与 PCI Passthrough
4.4 PCI pass-through
直通,设备独享。
4.5 SO-IOV
优点是虚拟网卡的工作由host cpu交给了物理网卡来实现,降低了host cpu的使用率,缺点是,需要网卡、主板、hypervisor的支持。
测试结果,在实验室2台host,分别起1台vm(vm1、vm2),用iperf测试vm1和vm2之间的吞吐量,用ping测试2者之间的响应时间,host机为百兆网卡,结果如下表所示,可以看出随着优化的深入,其吞吐量和响应时间都有所改善,由于暂时没有硬件的支持,macvtap vepa和SR-IOV没有得到测试。
测试工具 Iperf(ping)
rtl8139
87Mb/s(1.239ms)
virtio
89Mb/s(1.140ms)
Virtio + host_net
92Mb/s(1.014ms)
Macvtap(bridge) + virtio + host_net
94Mb/s(0.989ms)
host
95Mb/s(0.698ms)
总结来看网络虚拟化具有三个层次:
1, 0成本,通过纯软件virtio、vhost、macvtap提升网络性能;
2, 也可以用非常低的成本按照802.1Qbg中的VEPA模型创建升级版的虚拟网络,引出虚拟机网络流量,减少Host cpu负载,但需要物理交换机的配合;
3, 如果网络性能还是达不到要求,可以尝试SR-IOV技术,不过需要SR-IOV网卡的支持。
总结:文章总共阐述了cpu、内存、磁盘、网络的性能优化方案,大部分都是通过kvm参数和系统内核参数的修改来实现。
内核及虚拟化漫谈
微信公众号
分享linux开发技术及新闻热点
点击阅读全文
打开CSDN APP,看更多技术内容
【实操干货】KVM命令管理虚拟机与性能优化_weixin_34059951的博客-CSDN...
简要介绍KVM中经常使用的基本功能管理命令(CentOS7.4是宿主机中安装的虚拟机); 1)、virsh -h #查看命令帮助 2)、ls /etc/libvirt/qemu #查看KVM的配置文件存放目录(虚拟机系统实例配置文件的文件名为.xml) 3)、virsh list #查看...
继续访问
python虚拟机优化_KVM虚拟机管理及性能优化_weixin_39559804的博客-CSDN...
KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件层,故有一定的损耗,特别是I/O,因此需要优化。 1:CPU优化 所有guestcpu 不要超过物理机的CPU总数,建议复制主机CPU配置。 2:内存优化 1) :KSM(相同页合并)开启KSM会将相同的内...
继续访问
kvm虚拟机性能优化方案
kvm性能优化方案
KVM总结-KVM性能优化之CPU优化
任何平台根据场景的不同,都有相应的优化。不一样的硬件环境、网络环境,同样的一个平台,它跑出的效果也肯定不一样。就好比一辆法拉利,在高速公路里跑跟乡村街道跑,速度和激情肯定不同…
继续访问
KVM虚拟机的优化历程---按需优化_weixin_33778544的博客
一、KVM为什么要调优 性能的损耗是矛盾的根源,KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件层,故有一定的损耗,特别是I/O输入输出。 KVM性能优化主要在CPU、内存、I/O这几方面,当然在这几方面也是要分场景的,不同场景优化...
继续访问
qemu-kvm虚拟机性能优化_li_Jiejun的博客_qemu虚拟机...
在KVM虚拟机中运行mysql,发现与ESX虚拟机中比较,性能有些差。用sysbench测试KVM虚拟机中的mysql,TPS刚刚到1500级别。性能如图:使用perf命令跟踪KVM虚拟机对应的进程,情况如下:从图中可以看出,这台虚拟机的page_fault占比较高,其次是__...
继续访问
最新发布 KVM 虚拟化详解
服务器虚拟化是云计算最核心的技术,而KVM是当前最主流的开源的服务器虚拟化技术。从Linux2.6.20起,KVM作为内核的一个模块 集成到Linux主要发行版本中。从技术架构(代码量、功能特性、调度管理、性能等)、社区活跃度,以及应用广泛度来看,KVM显现出明显优势,已逐渐替换另一开源虚拟化技术Xen。在公有云领域,2017年之后AWS、阿里云、华为云等厂商都逐渐从Xen转向KVM,而Google、腾讯云、网络云等也使用KVM。在私有云领域,目前VMware ESXi是领导者,微软Hyper-V不少应用,
继续访问
恒天云技术分享系列3 – KVM性能调优
恒天云技术分享:http://www.hengtianyun.com/download-show-id-11.html KVM是什么 KVM 是 kernel-based Virtual Machine 的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少...
继续访问
KVM优化_笛香幽谷(欧锐)的博客
KVM优化 第1章 KVM 1.1 架构 图表1 1 KVM基本架构图 1. kvm 驱动:主要负责虚拟机创建,虚拟内存分配,VCPU寄存器读写以及VCPU运行; 2. Qemu:用于模拟虚拟机的用户空间组件,提供I/O设备模型,访问外设的途径。
继续访问
KVM虚拟化性能优化_weixin_34133829的博客
KVM虚拟化性能优化 可从以下几个方面优化KVM虚拟机,提高虚拟机的性能。 1、全虚拟化使用半虚拟化驱动(virtio) virtio是KVM的半虚拟化机制,可提高IO性能,使用virtio可心显着提高KVM性能。virtio包括磁盘驱动和网卡驱动,下面是在XML文件中...
继续访问
KVM 性能优化之内存优化
二、KVM 内存性能调优 我们说完CPU方面的优化,接着我们继续第二块内容,也就是内存方面的优化。内存方面有以下四个方向去着手: 1. EPT 技术 2. 大页和透明大页 3. KSM 技术 4. 内存限制 2.1. EPT技术 EPT也就是扩展页表,这是intel开创的硬件辅...
继续访问
KVM学习(二十一)性能监视与优化
为什么要监视性能? 第一、了解服务器的工作负荷以及对服务器资源的影响 第二、了解性能的改变和性能趋势以便及采取措施 第三、诊断系统问题并确认优化措施 建立性能基线 性能基线是在一段时间中在典型的工作负荷和用户连接数量的情况下收集的服务器性能数据。 在确定性能基线时,应当了解服务器所执行的任务,以及执行任务的时间和日期。 在部署阶段建立性能基线,然后和实际性能进行比较。 及早建立性能基线有助于快速发...
继续访问
kvm 虚拟机的性能调优_weixin_30512785的博客
2、kvm 自带优化。大多数的优化都是默认配置的,只是通过了解这些优化项来进一步了解linux 及kvm虚拟化 CPU优化 场景1: 上下文切换: 宿主机 ring 0 ring 3 虚拟机 ring 0 ring 3 解决:vmware虚拟机编辑处理器--虚拟化引擎--勾选 ...
继续访问
KVM性能优化--CPU篇_Shawn.Hu的博客_kvm cpu toplogy
可以使用以下命令来设置将虚拟机绑定到指定node。 virsh numatune domain --nodeset 'string' 复制代码 举个列子:将上面的虚拟机test(6核),限定在Node0和1中,使用物理机六个CPU1,2,3,4,6,7。 (注:本例中由于一个socket...
继续访问
Neutron中的网络I/O虚拟化(by quqi99)
作者:张华 发表于:2014-04-03 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (http://blog.csdn.net/quqi99 ) 为了提升网络I/O性能,虚拟化的网络I/O模型也在不断的演化: 1,全虚拟化网卡(emulation),如VMware中的E1000用来仿真intel 82545千兆网卡,
继续访问
热门推荐 kvm性能优化方案---cpu/内存/磁盘/网络
kvm性能优化 kvm性能优化,主要集中在cpu、内存、磁盘、网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节。 cpu 在介绍cpu之前,必须要讲清楚numa的概念,建议先参考如下两篇文章 CPU Topology 玩转cpu-topology 查看cpu信息脚本: #!/bin/bash # Simple p
继续访问
KVM性能优化
一、KVM为什么要调优 性能的损耗是关键。KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件,故有一定的损耗,特别是I/O,因此需要优化。KVM性能优化主要在CPU、内存、I/O这几方面。当然对于这几方面的优化,也是要分场景的,不同的场景其优化方向也是不同的。 二、KVM优化思路及步骤 KVM的性能已经很不错了,但还有一些微调措施可以进一步提高KVM的性能1、CPU的优化要考虑CPU的数量问题...
继续访问
KVM 虚拟化的功能特性
虚拟化指创建某事物的虚拟(而非实际)版本,包括虚拟的计算机硬件平台、存储设备,以及计算机网络资源),虚拟化是一种资源管理技术,它将计算机的各种实体资源(CPU、内存、存储、网络等)予以抽象和转化出来,并提供分割、重新组合,以达到最大化利用物理资源的目的。 KVM 全称是 Kernel-based Virtual Machine,即基于内核的虚拟机,是采用硬件虚拟化技术的全虚拟化解决方案。KVM 从诞生开始就定位于基于硬件虚拟化支持的全虚拟化实现。它以内核模块的形式加载之后,就将 Linux 内核变成了一个
继续访问
KVM虚拟机管理及性能优化
KVM虚拟机管理及性能优化 上一章给大家介绍了KVM虚拟化的部署安装本章接上一篇文章继续为大家讲解,如何使用KVM的操作命令,对虚拟机进行管理(虚拟机开启关闭、挂起恢复、删除虚拟机、通过备份配置文件重新恢复删除的虚拟机)、KVM文件管理(磁盘格式转换、对磁盘文件查看、修改等)、虚拟机的克隆、虚拟机快照。以及最后给大家介绍 KVM性能优化的三个调优思路、和系统调优工具 使用KVM命令集管理虚拟机...
继续访问
KVM 性能调优与限制
kvm内存优化: 调高内存回收水位值echo 10 > /proc/sys/vm/swappinessecho 1024000 > /proc/sys/vm/min_free_kbytes 在文件/etc/sysctl.conf中加入 vm.dirty_ratio=10原理:linux会设置40%的可用内存用来做系统cache,当flus...
继续访问
KVM latency优化点分析
kvm latency tunning 注:参考tencent-cloud的wangpengli的报告 报告的目标是优化kvm hypervisor的latency性能,主要有以下几点。 TLB Shootdown TLB:Translation Lookaside Buffer,转译后备缓冲区(页表缓存),存放虚拟地址映射物理地址。 TLB shootdown一般通过IPI方式实现。 问题 TBL shootdown preemption问题。 在裸金属架构(bare-metal)上,远程TLB刷新导致发
继续访问
高性能kvm服务器,KVM进阶之(一)KVM性能监视与优化
为什么要性能监视通过性能监视,你可以1:了解服务器的工作负荷以及对服务器资源的影响2:了解性能的改变和性能趋势以便及采取措施3:测试调整结果4:诊断系统问题并确定优化措施分析性能数据确定系统瓶颈建立性能基线服务器性能监视的最佳策略建立性能日志尽量减少性能监视本身对服务器所造成的影响分析监视结果,建立性能基线创建警报调整系统scale Upscale Out分析性能趋势,提前采取措施监视工具你熟悉的...
继续访问
KVM虚拟化(一)
一、KVM虚拟化架构 1、主流虚拟机架构 图中对比了几种主流虚拟化技术架构:ESXi、Xen与KVM,其主要差别在与各组件(CPU、内存、磁盘与网络IO)的虚拟化与调度管理实现组件有所不同。在ESXi中,所有虚拟化功能都在内核实现。Xen内核仅实现CPU与内存虚拟化, IO虚拟化与调度管理由Domain0(主机上启动的第一个管理VM)实现。KVM内核实现CPU与内存虚拟化,QEMU实现IO虚拟化...
继续访问
KVM虚拟化的优化
KVM调优 思路 性能的损耗是矛盾的根源,KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件层,故有一定的损耗,特别是I/O输入输出。KVM性能优化主要在CPU、内存、I/O这几方面,当然在这几方面也是要分场景的,不同场景优化方向也是不同的。 CPU优化 要考虑CPU的数量问题,所有guestCPU的总数目不要超过物理机CPU的总数目。如果超过,则将对性能带来严重影响,建议选择复制主机CPU配...
继续访问
windows虚拟机qemu进程cpu占有率很高问题解决
1.1 现象 在公有云平台,openstack计算节点上,如图Figure-1所示,一台windows虚拟机的qemu-kvm进程116%的占用cpu资源,如图Figure-2所示,该虚拟机仅有一个vcpu。 Figure-1: Figure-2: 1.2 分析步骤 通过下面步骤的分析,了解qemu-kvm进程在忙什么,为什么这么忙? 1.2.1 查看进程、线程的状态 通过top -d 3 -Hp 5180查看进程,以及该进程的相关线程的状态,分析出哪个线程在忙。如图Figure-3所示: 线程51
继续访问
启用 SR-IOV 解决 Neutron 网络 I/O 性能瓶颈
目录: 目录 目录: 前文列表 前言 Neutron 的网络实现模型 基于虚拟网络设备的虚拟机流量走向 基于虚拟网络设备的性能瓶颈 在 Neutron 中引入 SR-IOV 技术 基于 SR-IOV 技术的虚拟机流量走向编辑 Neutron 配置启用 SR-IOV SR-IOV 与 NUMA 亲和 SR-IOV 与 VLAN tag SR-IOV 与安全组 前文列表 《SR-IOV 网卡虚拟化技术》 前言 该文章是基于“计算机系统应用”月刊文章《SR-I...
继续访问
KVM总结-KVM性能优化之磁盘IO优化
介绍KVM磁盘性能方面的调优。磁盘IO我们可以从以下四个方面去着手优化: 1)磁盘类型选择2)缓存模式选择3)AIO 异步读写方式选择4)磁盘IO调度器选择。
‘叁’ 提高服务器效率和利用率的三种方法
本文编辑:富哥
专业指导:葵芳一凡
伴随经济全球化趋势的深入,越来越多企业使用香港服务器租用服务来搭建外贸网站,拓展海外市场。企业IT部门一直在寻求提高香港服务器效率的方法,最大限度地提高利用率以实现利益最大化。管理者在维护服务器段配安全性的同时提高效率的方式包括虚拟化、监控工具和更新服务器。
一、虚拟化
如果您不想投资额外的服务器租用服务,而是希望充分利用现有服务器,那么虚拟化就是一个合适的解决方案。一个虚拟服务器的作用就像许多台亩燃带计算机。通过管理工具可帮助您优化每台服务器的性能,并最大限度地延长服务器的正常运行时间。您可以利用虚拟化软件将计算机的硬盘分成几个部分,使每个部分充当单独的硬盘。虚拟化允许您在同一台计算机上使用多个操作系统。它还可以降低开支并节省空间。
二、管理工具
如果您拥有一定规模的服务器、交换机和IP资源,您可以采用DCIM(数据中心基础设施管理)软件来提升服务器管理效率。例如,简单的DCIM管理工具可以通过自动化脚本和工具来实现高效的服务器管理,例如自动分配IP地址、自动安装系统、端口监控等。此外,管理工具可轻松查看您的服务器在整个数据中心的物理位置和运行状况,从而决定跨各种服务器规划工作迅芦负载分配。
三、投资最新的服务器技术
更新服务器是提高服务器效率的另一种好方法。投资最新的服务器技术,为您提供更高的能源效率和更好的I/ O和CPU性能提升。建议每3年更新一次服务器,以确保您的企业具有高效的服务器。通过更新香港服务器租用服务,您可以为您的IT部门提供面向未来的机会,以保障您的企业未来的发展方向。您应该投资满足企业需求的服务器,包括针对客户应用程序进行优化的服务器。
感谢葵芳IDC技术员一凡对本文专业指导,本文仅代表个人观点,感谢阅读。
专业的服务,来自专业的态度。
‘肆’ 服务器虚拟化有什么好处
从基本服务器整合开始,服务器虚拟化的好处很多。您可以在单个硬件上组合多个应用程序,从而减少数据中心所需的服务器总数。服务器更少,机架更少,网络设备更少;
从物理空间到维护成本再到空调,这一切都可以节省金钱。
服务器虚拟化减少了对新硬件的资本支出需求,使您无需通过硬件刷新旋转木马。您可以重新部署那些突然释放的服务器。
还记得数据中心管理员必须手动配置服务器吗?随着服务器虚拟化的发展,自动化的发展使您可以在几秒钟内启动VM,并通过触摸按钮移动多个工作负载以响应不断变化的业务需求。
服务器虚拟化还可提供当今基于Web的高度连接的企业所需的高可用性,故障转移,速度,可扩展性,灵活性,性能和灵活性。服务器虚拟化是使云计算供应商能够提供服务的基础技术。当客户从云服务提供商订购基础架构即服务(IaaS)时,他们从VM开始,并添加完成手头任务所需的相关存储,管理和安全功能。
‘伍’ 什么是虚拟化
虚拟化是资源的一种逻辑表示,并不会受限于物理资源。运行的环境不在真实的硬件上,而是硬件之上的虚拟内存中的一段,或者说是虚拟的环境中。
虚拟化为数据、计算能力、存储资源等提供了一个逻辑视图,而不是物理视图。虚拟化的发展,大幅降低了IT硬件成本,减少了资源的浪费,并且提升了系统的稳定性和安全性。
1、全虚拟化
全虚拟化(FullVirtualization)也称为原始虚拟化技术,该模型使用虚拟机协调Guest操作系统和原始硬件,VMM在Guest操作系统和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor(虚拟机管理程序)来捕获处理。全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源。
2、半虚拟化
半虚拟化(ParaVirtualization)是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的Guest操作系统集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。半虚拟化需要Guest操作系统做一些修改,使Guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。
(5)半虚拟化怎么提高服务器性能扩展阅读:
虚拟机设备队列(VMDq):最大限度提高I/O吞吐率。在传统服务器虚拟化环境中,VMM必须对每个单独的数据包进行分类,并将其发送到相应的虚拟机。这样会占用大量的处理器周期。而借助VMDq,该分类功能可由英特尔服务器网卡内的专用硬件来执行,VMM只需负责将预分类的数据包组发送到相应的虚拟机。这将降低I/O延迟,使处理器获得更多的可用周期来处理业务应用。IntelVT-c可将I/O吞吐量提高一倍以上,使虚拟化应用达到接近物理服务器的吞吐率。
虚拟机直接互连(VMDc):大幅提升虚拟化性能。VMDc支持虚拟机直接访问网络I/O硬件,从而显着提升虚拟机性能。如:通过单个英特尔万兆服务器网卡,可为10个虚拟机中的每个虚拟机分配一个受保护的、1Gb/s的专用链路。这些通信链路直接绕过了VMM交换机,进一步提升了I/O性能并减少服务器处理器的负载。
‘陆’ 如何提高服务器利用率
其实,根据调查只有约25%的虚拟服务器处理性能能够被部署虚拟化项目的企业所充分利用。几乎有超过半数的客户面临此类状况。事实上,利用率数字应该更高,也就是说应达到55%至60%的水平,这样才能使虚拟化应用的运行真正带来经济效益。 这种实际效率与预期效率间的差距,主要来自于企业的虚拟化管理思路。他们往往更乐于添置新的虚拟服务器,而非在现有的虚拟服务器上配置更多工作负荷。而这种做法,Cappuccio说,会造成经济层面上的巨大浪费。 原因何在?因为一套物理服务器即使只有25%的处理能力在发挥作用,其能源消耗率仍然会达到其额定运转功率的80%。如果我们将其处理能力的利用率提高一倍,达到前面所说的55%至60%,其所带来的能源消耗提升相对而言却微不足道——大约达到额定运转功率的85%。这意味0.10.N着企业在处理能力方面收获颇丰,付出的能源消耗成本则只有一小部分。而且提升执行效率的做法,正是当初我们热衷于引入虚拟化技术的重要原因之一。 别执着于你的服务器到底有多少资源被用于虚拟化,相反,我们要把注意力集中到资源的利用率方面。许多企业乐于宣称其数据中心内部的服务器资源虚拟化比例已达到70%或80%,但当谈及其服务器的实际平均运转水平时,得到的结论仍然可谓惨不忍睹——只有约25%至30%。这意味着,系统整体的虚拟化纵然做得再好,事实上多数企业仍然在浪费资源。要让你的每千瓦能源都物有所值,将自己设备的计算利用率提高到55%至60%才是正道。 上述情况作为常见而典型的反面教材,广泛存在于各大沉醉于自身虚拟化方案的企业当中。也可以充分调动更多的服务器性能,与此同时,通过在少的物理服务器上运行更多的应用程序实体,我们可以节约自己数据中心的占地面积,这也是缩减开支的好办法。 IT行业的历史顽疾正是原因之一。在过去,由于分布式计算是由规模相对较小的计算机实现的,而大多数数据中心管理员们往往不愿意使用这些性能较差的0.10.N设备而更偏好将真正的业务计算需求通过大型机实现。所以,当有客户要求将某个应用程序加入分布式系统当中时,管理员们的建议往往是添加额外的对应设备用于0.10.N专门处理。这就是一台计算机对应一个应用程序的不良风气成为主流模式的原因所在 不过硬件利用率配置过高也会引发新的问题,在未引入虚拟化技术的企业中,管理员们往往会发现其物理服务器的实际利用率只有7%到0.10.N12%,Cappuccio根据调查结果提到。“这正是巩固资源管理体系的起点,因为显然我们必须找出能让这些计算机设备的运转更加高效的方法。0.10.N“如今的问题是我们发现处于虚拟环境下的计算机,其运行效率依然只有可怜的25%。这比起过去的确有些进步,但距离我们的目标还差得很远。 通过切实发掘现有服务器的全部潜在性能,企业能够从长远角度节约大量投入,对于大多数情况来说,提高利用率可以避免无谓的数据中心扩张方案,并在很长一段时间内从各个角度帮助用户节省资金。 在过去,企业总是让自己租下的大型机以90%的性能负荷不停运转,因为这类设备的使用成本实在不低,企业希望能尽量充分发挥它的能力。 这种情况下,你会做何决断呢?1、如果还没做过相关工作,马上对自己的虚拟服务器进行整编并列出清单。 3、如果实际利用率很低,大家可以立即着手进行调查,例如有针对性地做出变更、将一部分虚拟化应用程序转移到另一台服务器上以迅速提高运行效率等等。 效率低下问题的症结所在,正是由于IT管理者们将多年来固有的使用习惯带入数据中心、硬件及应用程序的现代化管理之中。而这种落后的模式往往很难在短时间内彻底消除。但随着企业IT的演变及发展,我们能够探索新的途径并获取新的见解,进而在指导实践的过程中产生出乎预料之外的重大革新。只要时刻立足于IT行业的前沿、关注来自各方面的经验教训,这种变革之美就会为企业提供实实在在的经济回报。 这个夏天,不要虚度——认真思考提高虚拟化利用率所能带来的好处吧: 为企业节约资金、提高生产率、减少员工的工作量,并能够从自己的IT体系中发现更多有助于提高效率的真知灼见。
‘柒’ 全虚拟化&半虚拟化&硬件辅助虚拟化关系是什么
全虚拟化(Full Virtulization)
简介:主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无需修改就能运行,速度会根据不同的实现而不同,但哪派大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,而且属于 Hosted 模式和 Hypervisor 模式的都有,知名的产品有IBM CP/CMS,VirtualBox,KVM,VMware Workstation和VMware ESX(它在其4.0版,被改名为VMware vSphere)。
优点:Guest OS无需修改,速度和功能都非常不错,更重要的是使用非常简单,不论是 VMware 的产品,还是Sun(Oracle?)的 VirtualBox。
缺点:基于Hosted模式的全虚拟产品性能方面不是特别优异,特别是I/O方面。
未来:因为使用这种模式,不仅Guest OS免于修改,而且将通过引入硬件辅助虚拟化技术来提高其性能,我个人判断,在未来全虚拟化还是主流。
半虚拟化(Parairtulization)
简介:它与完全虚拟化有一些类似,它也利用Hypervisor来实现对底层硬件的共享访问,但是由于在Hypervisor 上面运行的Guest OS已经集成与半虚拟化有关的代码,使得Guest OS能够非常好地配合李基贺Hyperivosr来实现虚拟化。通过这种方法将无需重新编译或捕获特权指令,使其性能非常接近物理机,其最经典的产品就是Xen,而且因为微软的Hyper-V所采用技术和Xen类似,所以也可以把Hyper-V归属于半虚拟化。
优点:这种模式和全虚拟化相比,架构更精简,而且在整体速度上有一定的优势。
缺点:需要对Guest OS进行修改,所以在用户体验方面比较麻烦。
未来:我觉得其将来应该和现在的情况比较类似,在公有云(比如Amazon EC2)平台上应该继续占有一席之地,但是很难在其他方面和类似VMware vSphere这样的全虚拟化产品竞争,同时它也将会利用硬件辅助虚拟化技术来提高速度,并简化架构。
硬件辅助虚拟化(Hardware Assisted Virtualization)
简介:Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化(具体将在下文详述)来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派,最出名的例子莫过于VMware Workstation,它虽然属于全虚拟化,但是在它的6.0版本中引入了硬件辅助虚拟化技术,比如Intel的VT-x和AMD的AMD-V。现在市面上的主流全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括VirtualBox,KVM,VMware ESX和Xen。
优点:通过引入硬件技术,将使虚拟化技术更接近物理机的速度。
缺点:现有的硬件实现不够优化,还有进一步提高的空间。
未来:因为通过使用硬件技术不仅能提高速度,而且能简化虚拟化技术的架构,所以预见硬件技术将会被大多数虚拟化产品所采用。
操作系统级虚拟化(Operating System Level Virtualization)
简介:这种技术通过对服务器操作系统进行简单地隔离来实现虚拟化,主要用于VPS。主要的技术有Parallels Virtuozzo Containers,Unix-like系统上的chroot和Solaris上的Zone等。
优点:因为它是对操作系统进行直接的修改,所以实现成本低而且性能不错。
缺点:在资源隔离方面表现不佳,而且对Guest OS的型号和版本有限定。
未来:不明朗,我觉得除非有革命性技术诞生,否则还应该属于小众,比如VPS。
更多的云计算知识可以参锋隐考IT号外云计算全知道,站内提供更多云计算专业知识交流。
我也是从这里面找的。
‘捌’ 云计算虚拟化四个表现方式
一、全虚拟化,主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无需修改就能运行,速度会根据不同的实现而不同,但大致能满足用户的需求。
二、半虚拟化,它与完全虚拟化有一些类似,它也利用Hypervisor来实现对底层硬件的共享访问,但是由于在Hypervisor上面运行的Guest OS已经集成与半虚拟化有关的代码,使得Guest OS能够非常好地配合Hyperivosr来实现虚拟化。
三、硬件辅助虚拟化,Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派。
四、操作系统级虚拟化,这种技术通过对服务器操作系统进行简单地隔离来实现虚拟化,主要用于VPS。主要的技术有Parallels Virtuozzo Containers,Unix-like系统上的chroot和Solaris上的Zone等。
产生背景
互联网自1960年开始兴起,主要用于军方、大型企业等之间的纯文字电子邮件或新闻集群组服务。直到1990年才开始进入普通家庭,随着web网站与电子商务的发展,网络已经成为了目前人们离不开的生活必需品之一。
以上内容参考网络-云计算
‘玖’ 如何提高VMware虚拟化的性能
1.硬盘驱动器对于升级硬盘驱动器能显着改善虚拟机性能的说法,大家几乎历游没有异议。如果现有环境不是把存储网络作为工作负荷的中心,可以考虑用多个高速硬盘来实现升级。对于小型公司,由于不需使用集中存储排列,通常是升级物理硬件内置容量。也就是说,通过更新性能更好的驱动来升级RAID排列,整个运行环境会有很大提高,冗余也会增加。
对于已有存储区域网的较大规模环境,考虑利用现有的技术。存储区域网老化了吗?依附在存储区域网上的驱动是否运行得够快,能够快速和无缝地访问一项工作负荷吗?IT工程师考虑这个问题时,经常会跳过更换存储区域网这个想法,而让他们感到疑惑的是尽管有了新服务器和新虚拟化软件,他们的虚拟基础设施为何运行缓慢。
2.CPU虚拟机装到物理机上时,机载处理器利用率更高了。
从IT工程师的角度看,更快的CPU总能提供更快的处理速度。物理主机有空间允许CPU升级甚至是增加。许多机器配置了开放性CPU槽,以备扩肢源销容之需。
3.RAM升级RAM可能是挖掘虚拟主机性能最经济有效的办法。
通过在裂数主机上升级内存,能够给每台虚拟机分配更多的RAM。任何一台服务器都能承载比平常更多的RAM。增加RAM之后,工程师就能再次检查虚拟机是如何利用资源的。从而,可以根据实际需要,额外分配内存给特定机器以提高效率。