Linux
為什麼 Ubuntu 12.04 上的核心共享記憶體為 0?
誰能向我解釋為什麼 KSM 不工作,這是否意味著目前我的核心沒有使用 KSM 來減少 ram 使用率。
grep KSM /boot/config-3.2.0-23-generic CONFIG_KSM=y cat /sys/kernel/mm/ksm/pages_shared 0 cat /sys/kernel/mm/ksm/pages_sharing 0 cat /sys/kernel/mm/ksm/pages_unshared 0
核心:3.2.0-23-generic
Ubuntu 12.04 LTS 64 位桌面
免費-m
total used free shared buffers cached Mem: 1964 1883 81 0 11 228 -/+ buffers/cache: 1644 320 Swap: 2008 485 1523
ipcs -m
------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 0 myexperiments 600 393216 2 dest 0x00000000 2490369 myexperiments 600 393216 2 dest 0x00000000 98306 myexperiments 600 393216 2 dest 0x00000000 2523139 myexperiments 600 393216 2 dest 0x00000000 13008900 myexperiments 666 262080 1 dest 0x00000000 1245189 myexperiments 666 4 2 dest 0x00000000 1277958 myexperiments 666 4 1 dest 0x00000000 6520839 myexperiments 600 393216 2 dest 0x00000000 14811144 myexperiments 666 1277760 3 dest 0x00000000 12648458 myexperiments 666 300000 1 dest 0x00000000 8060939 myexperiments 666 300000 1 dest 0x00000000 12943373 myexperiments 666 300000 2 dest 0x00000000 12976142 myexperiments 666 262080 2 dest 0x00000000 13271055 myexperiments 666 300000 2 dest
除非應用軟體通過呼叫
madvise(MADV_MERGEABLE)
. 很可能,您沒有使用任何使用 KSMD 服務的應用程序軟體。MADV_MERGEABLE(自 Linux 2.6.32 起);
為 addr 和 length 指定範圍內的頁面啟用 Kernel Samepage Merging (KSM)。核心定期掃描那些被標記為可合併的使用者記憶體區域,尋找具有相同內容的頁面。這些被單個防寫頁面替換(如果稍後程序想要更新頁面的內容,則會自動複製該頁面)。KSM 只合併私有匿名頁面(參見 mmap(2))。
KSM 功能適用於生成相同數據的許多實例的應用程序(例如,KVM 等虛擬化系統)。它會消耗大量的處理能力;小心使用。有關詳細資訊,請參閱核心源文件 Documentation/vm/ksm.txt。MADV_MERGEABLE 和 MADV_UNMERGEABLE 操作僅在核心配置了 CONFIG_KSM 時可用。