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的意思,用于合并内 ...
随机推荐
- python模块----pymysql模块 (连接MySQL数据库)
pymysql模块是专门用来连接mysql数据库的模块,是非标准库模块,需要pip下载 下载 pip install pymysql 查询 import pymysql # 打开数据库连接 db = ...
- 33.vsftpd服务程序--本地用户模式
1.针对本地用户模式的权限参数以及作用如下 [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=NO 2 local_ ...
- DEDECMS:DEDE整合(UEditor)百度编辑器以后,栏目内容、单页无法保存内容的bug处理方法
已经整合过百度编辑器的站长们或许会发现,在编辑单页文档和栏目内容的时候,百度编辑器不能够保存新增或已修改数据,经过排查后发现问题出现在catalog_edit.htm.catalog_add.htm这 ...
- Pytest(5)美化插件进度条pytest-sugar
前言 在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别.有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点. ...
- Linux远程拷贝scp
Linux的scp命令可以实现两台服务器之间互相拷贝文件,我的测试环境是Centos6.4. 基本的命令格式 scp 拷贝目标文件 远程用户@远程主机地址:远程目录 一.从本机拷贝到目标远程主机 # ...
- C++ Socket 入门
Socket 入门 前置知识 :计算机网络基础(TCP/IP四层模型) Socket 原意是"插座",在计算机通信领域被翻译为"套接字",以\(\{IP:Por ...
- Codeforces Global Round 11 A. Avoiding Zero(前缀和)
题目链接:https://codeforces.com/contest/1427/problem/A 题意 将 \(n\) 个数重新排列使得不存在为 \(0\) 的前缀和. 题解 计算正.负前缀和,如 ...
- Codeforces Round #651 (Div. 2) D. Odd-Even Subsequence(二分)
题目链接:https://codeforces.com/contest/1370/problem/D 题意 给出一个含有 $n$ 个数的数组 $a$,从中选出 $k$ 个数组成子序列 $s$,使得 $ ...
- Codeforces Round #697 (Div. 3) G. Strange Beauty (DP,数学)
题意:给你一组数,问你最少删去多少数,使得剩下的数,每个数都能整除数组中其它某个数或被数组中其它某个数整除. 题解:我们直接枚举所有因子,\(dp[i]\)表示\(i\)在数组中所含的最大因子数(当我 ...
- Educational Codeforces Round 94 (Rated for Div. 2) D. Zigzags (枚举,前缀和)
题意:有一长度为\(n(4\le n\le 3000)\)的数组,选择四个位置\((i,j,k,l)\ (1\le i<j<k\le n)\),使得\(a_i=a_k\)并且\(a_j=a ...