ksm 中的 pages_sharing 和 pages_shared 区别

ksm 中的 pages_sharing 和 pages_shared 区别

有人可以帮我理解这一点吗?

我正在运行带有 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 不节省内存

相关内容