1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > KVM性能优化之内存KSM

KVM性能优化之内存KSM

时间:2023-05-04 06:59:16

相关推荐

KVM性能优化之内存KSM

1、KSM简介

KSM允许内核在多个进程(包括虚拟机)之间共享完全相同的内存页,KSM让内核扫描检查正在运行中的程序并且比较他们的内存,若发现相同的内存页,就将相同的内存页合并成单一的内存页,标识为“写时复制”。

如果有进程试图去修改被标识为“写时复制”的合并的内存页时,就为该进程开辟出一个新的内存页供其使用。

2、KSM提高内存的速度和使用效率

(1)相同的内存页被合并,减少了虚拟机的内存使用量,内存中的内容更容易被保存到CPU的缓存中。

(2)通过减少每个虚拟机实际占用的内存数量,让多个虚拟机占用的总内存之和大于物理内存,实现“内存过载”

3、KSM劣势

(1)消耗一定的资源用于内存扫描,加重CPU的消耗。

(2)虚拟机由于修改被KSM合并的内存页,从而这些被修改的内存重新被复制出来占用内存空间,造成内存不足,从而使用swap分区。因此内存不足时,频繁使用swap交互,虚拟机性能下降。

---------------------

[root@opman ksm]# pwd

/sys/kernel/mm/ksm

cd ksm/

[root@opman ksm]# ll

总用量 0

-r--r--r-- 1 root root 4096 10月 25 14:56 full_scans //已经对所有可合并的内存区域扫描过的次数。

-rw-r--r-- 1 root root 4096 10月 25 14:56 max_page_sharing //

-rw-r--r-- 1 root root 4096 10月 25 14:56 merge_across_nodes

-r--r--r-- 1 root root 4096 10月 25 14:56 pages_shared //正在使用中的共享内存页数量

-r--r--r-- 1 root root 4096 10月 25 14:56 pages_sharing //有多少内存页正在使用被合并的共享页,不包括合并内存页本身。这是实际节省的内存页数量。

-rw-r--r-- 1 root root 4096 10月 25 14:56 pages_to_scan

-r--r--r-- 1 root root 4096 10月 25 14:56 pages_unshared //无重复内容而不可以被合并的内存页数量

-r--r--r-- 1 root root 4096 10月 25 14:56 pages_volatile

-rw-r--r-- 1 root root 4096 10月 25 14:55 run

-rw-r--r-- 1 root root 4096 10月 25 14:56 sleep_millisecs

-r--r--r-- 1 root root 4096 10月 25 14:56 stable_node_chains

-rw-r--r-- 1 root root 4096 10月 25 14:56 stable_node_chains_prune_millisecs

-r--r--r-- 1 root root 4096 10月 25 14:56 stable_node_dups

[root@opman ksm]#

查看是否开启KSM,0表示没有开启,1表示开启

[root@opman ksm]# cat run

0

[root@opman ksm]# echo 1 >run //临时开启ksm,只能使用重定向,vim 不行

[root@opman ksm]# cat run

1 //可以将echo 1 >/sys/kernel/mm/ksm/run 写在/etc/rc.local,保证开机自启

查看所依赖的两个服务的状态

[root@opman ksm]# service status ksm

status: 未被识别的服务

[root@opman ksm]# service ksmtuned status

ksmtuned (pid 2935) 正在运行...

[root@opman ksm]# service ksmd status

ksmd: 未被识别的服务

所以我们开启两个服务,分别是ksmd、和ksmdtuned

[root@opman ksm]# service ksm start

正在启动 ksm: [确定]

[root@opman ksm]# service ksmtuned start

正在启动 ksmtuned:

查看状态

[root@opman ksm]# service ksmtuned status

ksmtuned (pid 2935) 正在运行...

[root@opman ksm]# service ksm status

ksm 正在运行

查看扫描的页面数,默认是100,

[root@opman ksm]# cat pages_to_scan

100

对内存的限制

为了避免某个虚拟机无节制地使用资源,导致其他虚拟机无法正常使用,这时候就需要对内存的使用做限制

[root@opman ksm]# virsh memtune centos-6.8-1(虚拟机的名字) ,内存大小的单位为KB

hard_limit : 0 强制设置虚拟机最大使用内存,单位为KB

soft_limit : 0 可用最大内存,单位为KB

swap_hard_limit: 0 虚拟机最多使用的内存加上swap的大小,单位为KB

可以使用 virsh list –all 查看虚拟机列表

[root@opman ksm]# virsh list --all

Id 名称 状态

----------------------------------------------------

- centos-6.8-1 关闭

查看使用帮助

[root@opman ksm]# virsh memtune --help

NAME

memtune - Get or set memory parameters

SYNOPSIS

memtune <domain> [--hard-limit <number>] [--soft-limit <number>] [--swap-hard-limit <number>] [--min-guarantee <number>] [--config] [--live] [--current]

DESCRIPTION

Get or set the current memory parameters for a guest domain.

To get the memory parameters use following command:

virsh # memtune <domain>

OPTIONS

[--domain] <string> 域名,id 或 uuid

--hard-limit <number> Max memory, as scaled integer (default KiB)

--soft-limit <number> Memory during contention, as scaled integer (default KiB)

--swap-hard-limit <number> Max memory plus swap, as scaled integer (default KiB)

--min-guarantee <number> Min guaranteed memory, as scaled integer (default KiB)

--config affect next boot 写入配置文件中,虚拟机重启后生效

--live affect running domain 让设置立即生效,但是虚拟机重启后,效果消失

--current affect current domain 只在当前生效

测试:

[root@opman ksm]# virsh memtune centos-6.8-1 --hard-limit 1024000

--live

查看是否生效

[root@opman ksm]# virsh memtune centos-6.8-1

hard_limit : 1024000

soft_limit : unlimited

swap_hard_limit: unlimited

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。