zoukankan      html  css  js  c++  java
  • kvm内存优化--KSM

    一、KSM(Kernel SamePage Merging)
    1、KSM简介
    KSM允许内核在多个进程(包括虚拟机)之间共享完全相同的内存页,KSM让内核扫描检查正在运行中的程序并且比较他们的内存,若发现相同的内存页,就将相同的内存页合并成单一的内存页,标识为“写时复制”。
    如果有进程试图去修改被标识为“写时复制”的合并的内存页时,就为该进程复制出一个新的内存页供其使用。

    2、KSM提高内存的速度和使用效率
    (1)相同的内存页被合并,减少了虚拟机的内存使用量,内存中的内容更容易被保存到CPU的缓存中。
    (2)通过减少每个虚拟机实际占用的内存数量,让多个虚拟机占用的总内存之和大于物理内存,实现“内存过载”。

    3、KSM劣势
    (1)消耗一定的资源用于内存扫描,加重CPU的消耗。
    (2)虚拟机由于修改被KSM合并的内存页,从而这些被修改的内存重新被复制出来占用内存空间,造成内存不足,从而使用swap分区。因此内存不足时,频繁使用swap交互,虚拟机性能下降。

    二、KSM服务
    KSM主要有两个服务:ksm和ksmtuned。

    1、配置和监控ksm
    ksm的配置文件:/sys/kernel/mm/ksm/*
    1
    full_scans:已经对所有可合并的内存区域扫描过的次数。
    pages_shared:正在使用中的共享内存页数量
    pages_sharing:有多少内存页正在使用被合并的共享页,不包括合并内存页本身。这是实际节省的内存页数量。
    pages_to_scan:在ksmd进程休眠之前会去扫描的内存页的数量。
    pages_unshared:无重复内容而不可以被合并的内存页数量。
    pages_volatile:因为内容很容易变化而不被合并的内存页数量。
    run:控制ksmd是否运行。0:停止运行但是保存合并的内存页;1:马上运行ksmd;2:停止运行,并且分立已经合并的所有内存页。
    sleep_millisecs:ksmd进程的休眠时间。
    其中pages_to_scan、sleep_millisecs、run三个文件是可读写的,其他文件是只读的。

    2、配置和使用ksmtuned
    配置文件:/etc/ksmtuned.conf
    ksmtuned会一直保持循环执行,以调节ksm服务运行

  • 相关阅读:
    【转】跨域的理解与实现
    【3.5】从今天开始学习WCF技术
    LAB.js使用
    资源文件的动态加载
    C#对图片文件的压缩、裁剪操作初探
    WCF技术剖析_学习笔记之一
    SQL 写入调优
    【转】Nosql,为什么要使用
    wcf配置文件
    wcf错误
  • 原文地址:https://www.cnblogs.com/lcword/p/14361931.html
Copyright © 2011-2022 走看看