KSM概念学习
KSM: Kernel SamePage Merging 内核同页合并
简介
KSM允许内核在两个或多个进程(包括虚拟客户机)之间共享完全相同的内存页.
KSM让内核扫描检查正在运行中的程序,并比较他们的内存,如果发现他们有内存区域或内存页是完全相同的,就将多个相同的内存合并为一个单一的内存页,并将其标识为写时复制.这就可以起到节省系统内存使用量的作用.如果之后有进程需要修改被标识为"写时复制"的合并内存页时,就为该进程复制出一个新的内存页供其使用.
写时复制:在Linux中,当使用fork函数创建一个进程时,子进程与其父进程共享全部的内存,而当子进程或父进程试图修改他们的共享内存区域时,内核会分配一块新的内存区域,并将即将被修改的共享内存区域复制到新的内存区域上,然后让进程去修改复制的内存.这就是著名的写时复制.
优点
- 提高了缓存命中率,直接导致了操作系统/应用程序的运行速度
在KSM的帮助下,相同的内存页被合并了,减少了客户机的内存使用量,一方面,内存中的内容更容易被保存到到CPU的缓存当中;另一方面,有更多的内存可用于缓存一些磁盘中的数据。因此不管是内存的缓存命中率还是磁盘数据的缓存命中率都会提高,从而提高了KVM客户机中操作系统或应用程序的运行速度.
- 通过降低客户机的内存用量,提高了虚拟化客户机部署的密度,提高了物理资源的利用效率
缺点
KSM必须有1个或多个进程去检测和找出哪些内存页是完全相同可以用于合并的,并且需要找到那些不会经常更新的可合并的内存页,这样的页才是最适合合并的.由于"可合并内存检测进程"的运行,使CPU使用率有一定程度提高,可能会带来隐蔽的性能问题.
优化及数据
客户机操作系统类型 & 客户机上应用类型
KSM节省的内存大小,与客户机操作系统类型以及其上运行的应用类型有关.
如果宿主机上的客户机操作系统全部相同,其上的应用程序也类似,节省内存的效果就会很显著,甚至节省超过50%的内存也有可能.
反之,如果客户机操作系统不尽相同,运行的应用程序也类型繁多,KSM节省效率就会不好,可能连5%也不会达到,这部分节省的内存,与由于可合并内存检测进程运行导致的CPU使用率升高,孰轻孰重难以衡量.
交换空间
使用KSM时最好保证宿主机的交换空间(SWAP SPACE)够大,因为KSM将不同客户机的相同内存页合并从而减少了内存使用量,但与此同时,客户机可能由于需要修改被KSM合并的内存页,使这些被修改的内存被重新复制出来占用内存空间,可能会导致系统内存的不足,因此需要足够的交换空间保证宿主机系统的正常运行.
参考资料
《KVM虚拟化技术实战与原理解析》
KSM概念学习的更多相关文章
- OutputCache概念学习
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
- 虚拟机NUMA和内存KSM
KSM技术可以合并相同的内存页,即使是不同的NUMA节点,如果需要关闭跨NUMA节点的内存合并,设置/sys/kernel/mm/ksm/merge_across_nodes参数为0.或者可以关闭特定 ...
- 概念学习(Concept Learning)
从特殊的训练样例中归纳出一般函数是机器学习的核心问题.一般函数是对理想目标函数的函数逼近(function approximation).简而言之,从特殊到普通.与此对应的是演绎推理(deductiv ...
- KSM剖析——Linux 内核中的内存去耦合
简介: 作为一个系统管理程序(hypervisor),Linux® 有几个创新,2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许这个系统管理程序通 ...
- 操作系统概念学习笔记 10 CPU调度
操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到C ...
- 概念学习 - JNDI, JDBC, ODBC, DataSource
layout: post title: 概念学习 - JNDI, JDBC, ODBC, DataSource --- 最近在学习Java Hibernate,对数据库资源访问这块好多概念模糊,所以在 ...
- SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对比注解方式的优缺点)
接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文采用强制的CGLB代理方式 Security ...
- SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP
AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP之所以能得到广泛应用,主要是因为它将应用系统拆分分了2个部分 ...
- Linux内存管理 (17)KSM
专题:Linux内存管理专题 关键词:KSM.匿名页面.COW.madvise .MERGEABLE.UNMERGEABLE. KSM是Kernel Samepage Merging的意思,用于合并内 ...
随机推荐
- 34.vsftpd服务程序--虚拟用户模式
1.创建用于进行FTP 认证的用户数据库文件,其中奇数行为账户名,偶数行为密码. [root@localhost ~]# cd /etc/vsftpd/ [root@localhost vsftpd] ...
- Python 字符串指定位置替换字符
指定位置替换字符 def replace_char(old_string, char, index): ''' 字符串按索引位置替换字符 ''' old_string = str(old_string ...
- DolphinScheduler1.3.2源码分析(一)看源码前先把疑问列出来
1.谈谈如何看源码 个人觉得拿到一个开源的项目,首先要先使用一下. 如果是有页面的那种,可以先把测试平台部署起来,然后到处随意点点,然后用一下最基础的功能,走一遍基础的使用流程.不用担心会把系统弄 ...
- 【繁星Code】如何在EF将实体注释写入数据库中
最近在项目中需要把各个字段的释义写到数据库中,该项目已经上线很长时间了,数据库中的字段没有上千也有上百个,要是一个项目一个项目打开然后再去找对应字段查看什么意思,估计要到明年过年了.由于项目中使用En ...
- SPF POJ - 1523 割点+并查集
题意: 问你这个图中哪个点是割点,如果把这个点去掉会有几个子网 代码: 1 //给你几个点,用着几个点形成了一个图.输入边形成的图,问你这个图中有多少个割点.每一个割点去掉后会形成几个强连通分量 2 ...
- HDU 4289 Control(最大流+拆点,最小割点)
题意: 有一群恐怖分子要从起点st到en城市集合,你要在路程中的城市阻止他们,使得他们全部都被抓到(当然st城市,en城市也可以抓捕).在每一个城市抓捕都有一个花费,你要找到花费最少是多少. 题解: ...
- 向 3D 世界迈出一小步
前言 OpenGL 的学习资料很多,一个是比较著名的 OpenGL 红宝书<OpenGL 编程指南>,可以在这里 http://opengl-redbook.com/ 下载该书配套的源代码 ...
- python yield && scrapy yield
title: python yield && scrapy yield date: 2020-03-17 16:00:00 categories: python tags: 语法 yi ...
- Polya定理应用实例
关于Polya原理的应用经典实例: 问题:用两种颜色去染排成一个圈的6个棋子,如果通过旋转得到只算作一种.问有多少种染色状态. 解:先将棋子表上号: 1 6 2 5 3 4 那么把所有通过旋转 ...
- 高并发之Phaser、ReadWriteLock、StampedLock
本系列研究总结高并发下的几种同步锁的使用以及之间的区别,分别是:ReentrantLock.CountDownLatch.CyclicBarrier.Phaser.ReadWriteLock.Stam ...