kvm虚拟机存储速度

kvm虚拟机存储速度,第1张

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 = 0i <=COUNTi++) {

value1 = rand() % (MAX + 1)

value2 = rand() % (MAX + 1)

p1 = buf_1 + value1*1024

p2 = buf_2 + value2*1024

for (j = 0j <1024j++) {

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 = 0i <=COUNTi++) {

value1 = rand() % (MAX + 1)

value2 = rand() % (MAX + 1)

p1 = buf_1 + value1*1024

p2 = buf_2 + value2*1024

for (j = 0j <1024j++) {

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/scheduler

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调度器选择。

修改过的openvz内核隔离文件系统,内存,为每个虚拟环境分配进程,并为openvz vps管理员提供root权限和跟独立服务器一样的命令集。

Xen通过一种叫做半虚拟化的技术获得高效能的表现(较少的效能损失,典型的情况下大约损失 2%,在最糟的情况下会有 8% 的效能耗损;与其它使用完全的虚拟化却造成最高到 20% 损耗的其他解决方案形成一个明显的对比),甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有极佳的表现。

它们都作为系统级虚拟化平台的主要区别是,xen vps管理员能直接修改linux的内核模块,并能使用swap内存以满足vps内存突然占用过高的需求。

主要区别使用较少的资源

硬性内存限制(没有交换分区)

有限制的修改iptables使用较多的资源

软性内存限制(有交换分区)

无限制修改iptables

根据你的需求选择合适的虚拟化平台

openvz vps主要优点在于速度和稳定性。openvz平台能满足大多数虚拟专用服务器的需求,是比较合理的选择。OpenVZ的比Xen使用更少的资源。

Xen vps主机优点是内存使用比较灵活,它能满足内存使用突然超过限制时的需求。如果你运行java环境,编译应用程序和视频解码,那你就得考虑xen平台了。

结论:普遍来说,xen比openvz贵,主要原因是因为openvz可以超卖,而xen则不能。xen对于网站则相对稳定,因为有swap分区。但是如果你的网站经常需要swap,那你就得考虑升级内存了,因为这样运行性能降低很多。选用xen或是openvz,这得看性价比了。

网友的评价:

1. 人说 Buffer cache 在 xen 中,可以提高性能。但可同等价位下 Xen 512M,OpenVZ 可买到 1G(2G Burst)。在这样的条件下 Xen 那少得可怜的 RAM,程序都不够用了,更没有多少空间在 Buffer cache 上了。

而 OpenVZ 下更多的内存用于程序,Buffer cache 计入在 Host OS 内存中的,性能更佳(不超卖的话)

2. 人说 Xen 可以用 SWAP,慢但不会 down 机。可是不要呼略一点,-- SWAP 仅用于保存当前非运行中的程序。“真正”的高并发的情况下,512 M RAM + 4G SWAP Down 机的风险要高于 1G(2G burst) + 0 SWAP。

3. Xen 高定制化,但在同一台 Host 上,必竟是虚拟化主机,就没有过多定制需求了。何况特性上 Provider 已尽可能定制成服务器更优化了。个人非必能定制得这么优化吧,必竟服务器不是你的。

4. 有人说 Xen 下编译性能要比 OpenVZ 快,但很少有普通用户拿 VPS 当编译器吧?这种性能比较,大多出现在企业内部。你不会买 Photonvps当企业编译服务器用吧,那企业也太抠门儿了。

5. 同样的 Xen 响应速度要比 OpenVZ 差,个**验,原因不明。

6. Xen 一样可超卖,网上也有很多被超卖的贴子。只要是软件都会有漏洞。

7. 关于 Xen 比 OpenVZ 更可预期的问题。我的理解如下。

Xen 半虚拟化下,个每个 Guest kernel 都有自己庞大的独立运作机制,要达到高效硬件资源协调,比基于完善的 Linux kernel 的虚拟化容器要困难得多。

举一个例子:以前公司以项目为单位的,所有人都属于项目,大家同一个意识在做同一个项目,很顺畅。后来公司引进矩阵项目管理。发现,当分出来很多‘可复用’部门后,由于每个部门被很多

项目复用,他们同时在做项目 A,B 时,只能按一个项目的思路走(A),对另外担当的项目工作效率很低下(B)。半虚拟化可能面临时样的‘协调问题’。当每个 Kernel 都有自己的想法时,动作和結果变得‘不可预期’了

Data Collector和Data Store实际上是不相关的。Data Store用来在数据库中永久保存配置信息,而Data Collector用来在内存中动态保存会话信息。

但是,两者之间也会间接的发生关系。比如:

当你通过管理控制台修改了配置以后,新的配置信息会被写入Data Store(实际是写到你连接到的那台服务器本地的Cache,然后复制到Data Store),但是当你修改了这台服务器的配置信息以后,为了其他服务器也能即时得到最新的配置,并加载到其本地Cache中,这个过程需要30分钟,独立的XenApp服务器每30分钟检查一次Data Store的变化,但是我们希望配置即时的同步到所有服务器。

Citrix考虑到了这个问题,当Data Store发生变化后,该变化也同时发送到该Zone的Data Collector,然后Data Collector即时的分发到所有服务器(通过IMA 2512端口)。这样,所又有的服务器据此更新其本地Cache。如果有多个zone,那么各个Zone之间的Data Collector会同步所有的更新。

特别地,当这个配置更新变化超过64KB以后,Data Collector将不会同步这个更新,只会发送更新通知到所有服务器,服务器接收到通知以后,不用等待30分钟的同步周期,会马上同步Data Store。一般情况下,超过64KB的配置信息很少发生。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/438656.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-29
下一篇2023-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存