Linux

為什麼 Ubuntu 12.04 上的核心共享記憶體為 0?

  • March 1, 2019

誰能向我解釋為什麼 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 時可用。

引用自:https://serverfault.com/questions/470093