加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

玩转KVM: 聊聊KSM内存合并

发布时间:2019-07-14 07:35:22 所属栏目:站长百科 来源:佚名
导读:KVM的KSM技能先容 共享内存的观念在当代操纵体系中很常用了,好比,一个措施启动时会与父历程共用它的所有内存。但子或父历程必要修改共享内存的时辰,linux便再分派新内存,然后copy原地区内容到新内存。这个进程就叫copy on write。 而KSM是linux的新属

KVM的KSM技能先容

共享内存的观念在当代操纵体系中很常用了,好比,一个措施启动时会与父历程共用它的所有内存。但子或父历程必要修改共享内存的时辰,linux便再分派新内存,然后copy原地区内容到新内存。这个进程就叫copy on write。

玩转KVM: 聊聊KSM内存归并

而KSM是linux的新属性,它做的对象恰恰与共享内存相反。 当linux启用了KSM之后,KSM会搜查多个运行中的历程,并比对它们的内存。假如任何地区可能分页是一样的,KSM就会绝不踌躇地归并他们成一个分页。 那么新分页也是被标志成copy on write。假如VM要修改内存的话,那么linux就会分派新的内存给这个VM。

KSM技能应用场景

相识了KSM技能后,认为KSM可以在KVM大有作为哦。

利益:

a. 一个VM启动,则只担任了父历程(qemu-kvm)的内存。一台VM的内存,可以让沟通操纵体系可能运行沟通应用的VM共享。

b. 当开启了KSM,常用的历程数据存在缓存和主内存中。这样可以镌汰VM的缓存未掷中,同时也进步了VM机能。

c. 共享内存低落了VM的总体内存行使率,从而应承更高的密度和更大的资源操作率。

虽然每种技能都有范围性的,差异场景下,它的弱点也袒露无疑。

a. 操作KSM使内存超用。这会导致耗损必然的计较资源用于内存扫描,加重了CPU的耗损。内存超用,使得频仍地行使swap交互,导致VM机能降落。

b. KSM行使了边通道(side channels),也许存在泄漏客户信息的隐藏风险。为此就要思量在VM上封锁KSM。

以是总结一下应用的场景:

a. 出产情形慎用,应急时可开启。

b. 测试情形提议行使。

c. 桌面假造化情形提议行使,但要留意内存行使环境。

KSM技能实践

Linux的2.6.32 内核中新增了 KSM(Kernel Samepage Merging),在CentOS 6和Fedora 16中,KSM默认是打开的。而debian和ubuntu默认是没有这个处事的。 KSM通过两个处事:ksmd和ksmtuned实现,打点员应该判定他们的情形并抉择保持KSM处于运行状态照旧封锁它。

1. 对centos6体系来说,在没有开启KSM时就可以或许满意假造机的内存需求,那么最好封锁KSM。封锁的要领如下:

  1. chkconfig ksmd off 
  2. chkconfig ksmtuned off 
  3. service ksmd off 
  4. service ksmtuned off 

2. 而ubuntu默认没有KSM处事, 假如必要行使则安装ksmtuned处事

  1. sudo apt-get install ksmtuned 
  2. service ksmtuned start 

3. 查察KSM运行环境

在/sys/kernel/mm/ksm目次下,

pages_to_scan: ksmd就寝前必要扫描几多分页(默认是100)。

sleep_millisecs :文件界说执行另一次页面扫描前 ksmd 休眠的毫秒数。

max_kernel_pages :文件界说 ksmd 可以行使的最大页面数(默认值是可用内存的 25%,但可以写入一个 0 来指定为无穷)。

pages_to_scan :文件界说一次给定扫描中可以扫描的页面数。任何用户都可以查察。这些文件,可是用户必需拥有根权限才气修改它们。

full_scans :文件表白已经执行的全地区扫描的次数。

pages_shared:KSM 正在行使的不行互换的内核页面的数目。

pages_sharing:一个内存存储指示。 几多节点被共享而且几多被生涯。

pages_unshared:为归并而一再搜查的惟一页面的数目。

pages_volatile:频仍改变的页面的数目。

max_page_sharing: 每个分页能运行共享的次数。

merge_across_nodes: 是否指定多个numa节点的内存举办归并。

run :配置ksm属性的状态。

use_zero_pages : 是否归并空缺分页,默认封锁。

4. KSM配置

即然上面临KSM的浸染举办了相识,那么如安在行使KSM时举办调优呢?

KSM的参数可以在/etc/ksmtuned.conf文件中调解。其默认参数如下:

以下是对付该参数的详细表明:

KSM_MONITOR_INTERVAL暗示ksm每次内存扫描的时刻;

KSM_SLEEP_MSEC暗示每次扫描苏息的隔断时刻(最小值为10),KSM扫描会占用一些CPU的开销,以是当KVM假造机数目可能应用软件较少时可以调解KSM_SLEEP_MSEC至一个较大的值,反之则配置较小的值;同时当Hypervisor内里的假造机的内存调优达到一个不变状态,也可以按照环境把这个参数调末节减CPU的开销;

KSM_THRES_COEF暗示临界值系数;

KSM_THRES_CONST暗示临界值常量;

KSM_NPAGES_BOOST暗示内存页归并增进数目;

KSM_NPAGES_DECAY暗示内存页归并镌汰数目;

KSM_NPAGES_MIN暗示内存页归并最小值;

KSM_NPAGES_MAX暗示内存页归并最大值;

LOGFILE暗示ksmtuned的日记存放路径,提议行使默认路径;

DEBUG打消注释才见效,提议行使默认值。

5. 对vm的配置

在kvm情形中,可以选择VM是否应承内存归并。

为了掩护客户的信息不泄漏,一样平常我们照旧会封锁KSM。步调很简朴,修改VM的xml:

  1. <memoryBacking> 
  2. <nosharepages/> 
  3. </memoryBacking> 

【编辑保举】

  1. 浅谈假造机内存区
  2. 漫衍式体系Kafka和ES中,JVM内存越大越好吗?
  3. 云计较之基,一文带你速懂假造化KVM和XEN
  4. JVM 与 Linux 的内存相关详解
  5. KVM假造化行使详解
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读