为什么内核共享内存在 Ubuntu 12.04 上为 0?

Kev*_*ker 4 linux ubuntu kernel-modules ubuntu-12.04

任何人都可以向我解释为什么 KSM 不起作用是否意味着目前我的内核没有使用 KSM 来降低内存利用率。

 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
Run Code Online (Sandbox Code Playgroud)

内核:3.2.0-23-通用

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Dav*_*rtz 7

除非应用软件通过调用madvise(MADV_MERGEABLE). 很可能,您没有使用任何使用 KSMD 服务的应用程序软件。

MADV_MERGEABLE(自 Linux 2.6.32 起):

为 addr 和 length 指定范围内的页面启用内核相同页面合并 (KSM)。内核会定期扫描那些标记为可合并的用户内存区域,寻找具有相同内容的页面。它们被一个单一的写保护页面所取代(如果一个进程稍后想要更新页面的内容,它会被自动复制)。KSM 仅合并私有匿名页面(请参阅 mmap(2))。

KSM 功能用于生成相同数据的多个实例的应用程序(例如,KVM 等虚拟化系统)。会消耗大量的处理能力;小心使用。有关更多详细信息,请参阅内核源文件 Documentation/vm/ksm.txt。MADV_MERGEABLE 和 MADV_UNMERGEABLE 操作仅在内核配置了 CONFIG_KSM 时才可用。