Может кто-нибудь, пожалуйста, помогите мне понять это.
Я использую kvm-хосты с 5 виртуальными машинами.
Это статистика драйвера 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
pages_unshared
означает именно то, что он говорит: страницы не могут быть общими, потому что они уникальны.
pages_shared
указывает, сколько страниц фактически используется и передается.
pages_sharing
указывает, сколько страниц существует по мнению виртуальных машин. Если бы у вас не работал KSM, именно столько страниц было бы использовано на самом деле.
Итак, в вашем примере было обнаружено, что 264281 страница является общедоступной, и поэтому они были объединены в 162221 страницу, в то время как 241483 страницы не были общими. KSM сэкономил вам около 398 МБ памяти.
Посмотреть здесь 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_shared из pages_sharing. pages_sharing - это экономия памяти!
Pages_sharing - это реально сохраненная память: 264281 * 4096/1024/1024 = 1032 МБ
(264281 - 162221) * 4096 = 418037760. Разделить на (1024 * 1024) = 398,67 МБ не сохраняет память