有人可以帮我理解这一点吗?
我正在运行带有 5 个 vm 的 kvm 主机。
这是 ksm 车手统计数据
each page is 4KB
cat /sys/kernel/mm/ksm/pages_shared 162221
cat /sys/kernel/mm/ksm/pages_sharing 264281
cat /sys/kernel/mm/ksm/pages_unshared 241483
“pages_sharing” 是 vms 创建的页面总数。而“pages_shared”是发现相似并合并在一起的页面数量。
if that is true then why is pages_sharing-pages_shared != pages_unshared
264281-162221 != 241483
答案1
pages_unshared
意思就是:由于这些页面是唯一的,所以无法共享。
pages_shared
指示实际正在使用和共享的页面数。
pages_sharing
表示虚拟机认为有多少页面。如果您没有运行 KSM,那么这就是实际正在使用的页面数。
因此,在您的示例中,发现有 264281 个页面可共享,因此它们被合并为 162221 个页面,而 241483 个页面不可共享。KSM 为您节省了大约 398 MB 的内存。
答案2
看这里https://www.kernel.org/doc/Documentation/vm/ksm.txt
pages_shared - how many shared pages are being used
pages_sharing - how many more sites are sharing them i.e. how much saved
pages_unshared - how many pages unique but repeatedly checked for merging
因此,您不应该从 pages_sharing 中减去 pages_shared。pages_sharing 是节省的内存!
答案3
pages_sharing 是真正节省的内存:264281*4096/1024/1024=1032MB
(264281 - 162221) * 4096 = 418037760. 除以 (1024 * 1024)= 398.67MB 不节省内存