首页 > 代码库 > 美团网 KVM虚拟化公开课学习笔记

美团网 KVM虚拟化公开课学习笔记

KVM优化技术,美团开放平台--邱剑

基于KVM现有选项做一些优化,视频地址:http://www.osforce.cn/course/77/learn#lesson/80

CPU调优:

1、Context switch(用户态到内核态的优化);ring0->nernel mode,ring 3->user mode;

设置:宿主机BIOS中开启intel VT-X


2、缓存优化  Cache-Node Binding

将qemu进程绑定到特定的CPU node或者core上---避免L2/L3Cache miss

Node binding VS core binding

设置:task set

?

Memory调优

地址Address转换和物理空间Space优化

1、Addressing-EPT(SLAT)硬件加速

2、Addressing-HugePage 减少Page table尺寸,降低查找缓存(TLB)的Cache-miss,加速VM内存地址转换;默认PageSize为4KB/ HugePage size为2M;

Transparent hugepage:kernel进程khugepaged周期性扫描内存,自动将地址连续可合并的普通4KB page合并为2MB Hugepage.社会自方法:sysctl -w sys.kernel.mm.transparent_huge....

3、对空间的优化 Space-KSM:kernel same-page merging

kernel进程ksmd周期性扫描内存,将内容相同的Page合并,减少物理内存使用量


I/O调优:

1、Storage 2、Network间数据交换借口,简化流程

full virtualization技术无需修改Guest OS,则不存在虚拟化层和Guest OS层的特别配合导致影响效率;

virtio:半虚拟化I/O设备框架,标准化Guest和host间数据交换借口,简化流程,减少内存拷贝,提升虚拟机I/O效率


1、Storage

virtio-blk:基于virtio框架的虚拟PCI磁盘设备;

/dev/vdx

virtio-scsi:基于virtio框架的虚拟SCSI磁盘设备?:/dev/sdx

缓存模式调整



Native AIO:kernel AIO 2%~3%的优化性能,命令行参数中修改;

块设备IO调度器优化(通过sysctl -w sys.block.sdb.queue.scheduler...):



Network优化:

1、virtio-net:基于virtio框架的虚拟以太网设备


vhost_net优化:内核进程vhost_XXXX


其他优化选项:

1、CPU:scheduler

2、Memory:NUMA

3、Storage:PCI-passthrough

4、Network:SR-IOV,PCI-Kernel

5、提升硬件指标--终级方案


相关问题

1、VT-X作用:context的上下文切换加速,用户态到内核态的快速切换,以提升其性能;

2、IO隔离和网络隔离QoS:IO隔离通过virtio-blk进行设定,有两种方式

网络隔离对带宽资源进行隔离;


3、Cgroup可以设置每个KVM QEMU进程或线程吗?--可以找到对应的QEMU pid,对该PID进行限制,或者用libvirt会更简单


4、美团95%以上的业务都在Openstack上;


5、基于Openswitch做带宽调整;


6、openstack中KVM的恢复机制?---snapshot方式,但占用空间较大;


7、使用千兆网络带宽,没有使用分布式文件系统


8、监控:通过在Host中通过脚本进行监控