博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openstack-KVM-Memory
阅读量:4973 次
发布时间:2019-06-12

本文共 2357 字,大约阅读时间需要 7 分钟。

 

一、Memory

1、查看memory信息

  free -g

  cat /proc/meminfo

  dmesg | grep Memory

2、xml文件中的内存信息:

      vim /etc/libvirt/qemu/虚拟机名.xml

2097152
2097152

 

二、 EPT和VPID

1、EPT(扩展页表)

  EPT (Extended Page Tables)属于Intel的二代硬件虚拟化技术,针对内存管理单元(MMU)的虚拟化扩展。EPT降低了内存虚拟化的难度(影子页表)也提升了内存虚拟化的性能。从基于Intel的Nehalem架构的平台开始,EPT作为CPU的一个特性加入到CPU硬件中去了。

  NPT (Nested PageTables)AMD称为NPT。

2、EPT(扩展页表)工作原理:

  GVA (Guest Virtual Address) 客户机虚拟地址 guest

  GPA (Guest Physical Address) 客户机物理地址

  HPA (Host Physical Address) 宿主机物理地址 Hypervisor

  1个EPT页表=N个影子页表

  注:影子页表即每个虚拟机各自都有的一个页表。

  地址转换过程:

  为了实现内存虚拟化,让客户机使用一个隔离的、从零开始且具有连续的内存空间,KVM 引入一层新的地址空间,即客户机物理地址空间 (Guest Physical Address,GPA),这个地址空间并不是真正的物理地址空间,它只是宿主机虚拟地址空间在客户机地址空间的一个映射。

  对客户机来说,客户机物理地址空间都是从零开始的连续地址空间,但对于宿主机来说,客户机的物理地址空间并不一定是连续的,客户机物理地址空间有可能映射在若干个不连续的宿主机地址区间。虚拟机本质上是Host机上的一个进程,按理说应该可以使用Host机的虚拟地址空间,但由于在虚拟化模式下,虚拟机处于非Root模式,无法直接访问Root模式下的Host机上的内存。

  这个时候就需要VMM 的介入,VMM 需要 intercept(截获)虚拟机的内存访问指令,然后 virtualize(模拟)Host上的内存,相当于VMM在虚拟机的虚拟地址空间和Host机的虚拟地址空间中间增加了一层,即虚拟机的物理地址空间,也可以看作是 Qemu的虚拟地址空间。

  所以,内存虚拟化的目标就是要将虚拟机的虚拟地址(Guest Virtual Address,GVA)转化为Host的物理地址(Host Physical Address,HPA),中间要经过虚拟机的物理地址(Guest Physical Address,GPA)和Host虚拟地址(Host Virtual Address)的转化,即:GVA→ GPA →HVA→HPA

  其中前两步由虚拟机的系统页表完成,中间两步由 VMM 定义的映射表(由数据结构 kvm_memory_slot 记录)完成,它可以将连续的虚拟机物理地址映射成非连续的 Host 机虚拟地址,后面两步则由 Host 机的系统页表完成。

3、VPID (虚拟处理器标识)

  VPID (VirtualProcessor Identifiers)虚拟处理器标识,提升实时迁移的效率,同时节省实时迁移的开销,提高速度,降低延迟。

  TLB (translation lookaside buffer)旁路转换缓冲,或称为页表缓冲;里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。

#查看ept和vpid信息:grep ept /proc/cpuinfogrep vpid /proc/cpuinfo#查看ept和vpid信息:cat /sys/module/kvm_intel/parameters/eptcat /sys/module/kvm_intel/parameters/vpid#关闭ept和vpid:modprobe kvm_intel ept=0,vpid=0

三、 大页(Huge Page)

  x86-64CPU

  支持2MB大页

  内核2.6以上支持大页

  内存页数量减少,从而需要更少的页表,节约页表所占用的内存数量,减少地址转换,提高内存访问性能。

  地址转换信息一般保存在CPU缓存中,地址转换信息减少,从而减少CPU缓存压力。

  注:一般内存页大小4KB。

#查看Huge Page信息getconf PAGESIZEcat /proc/meminfo | grep Huge#Huge Page挂载mount | grep hugemount -t hugetlbfs hugetlbfs /dev/hugepagessysctl vm.nr_hugepages=1024#开启Huge Pagehugpages=yes

  注:开启大页后:

  不能swap out

  不能ballooning方式增长

四、 Memory超配

(1)内存交换(swapping)

  用交换空间(swap space)来弥补内存的不足。

(2)气球(ballooning)

  通过virio_balloon驱动来实现宿主机Hypervisor和客户机之间的协作。

(3)页共享(page sharing)

  通过KSM(Kernel Samepage Merging)合并多个客户机进程使用的相同内存页。

 

转载于:https://www.cnblogs.com/chenli90/p/10348090.html

你可能感兴趣的文章
springMVC 获取本地项目路径 及后整理上传文件的方法
查看>>
Spring3.0 AOP 具体解释
查看>>
Android反编译-逆天的反编译
查看>>
Android简易实战教程--第十一话《获取手机所有应用信息Engine类详解》
查看>>
Linux下which、whereis、locate、find 命令查找文件
查看>>
codeforces1101D GCD Counting 【树形DP】
查看>>
Delphi 获取命令行输出的函数
查看>>
面向对象六大原则
查看>>
2-常见机器学习模型总结
查看>>
centos7 安装搜狗输入法
查看>>
本日进度3
查看>>
PyCharm下创建并运行我们的第一个Django项目
查看>>
第十九篇 同源策略与Jsonp
查看>>
python3 调用 Linux 脚本
查看>>
Jquery选中行实现行中的Checkbox的选中与取消选中
查看>>
绘制矩形
查看>>
redis优化
查看>>
vi编辑器的使用(1)
查看>>
微信开发--入门(一)
查看>>
防反编译、混淆文件proguard.cfg与proguard-project.txt详解
查看>>