Hello Thierry, I will try to help showing some information gathered from my lab server as you requested: - Enviroment: 10 x Ubuntu 10.04 x86_64 with several services (SMTP, MySQL, Oracle, DB2, TeamSpeak servers, Tomcats, bind ... etc). 1 x Windows 7 x86_64 3 x Debian Lenny x86_64 (iscsitarget, pacemaker cluster testing) RAM schema (assigned to the VMs): 3 vms 128 MB, 6 vms 256 MB, 2 vms 512 MB, 1 vm 768 MB, 2 vms 1GB SMP: 5 vms with 2 SMP (num vCPU) configured, rest 1 SMP - Hardware: 1 x Intel(R) Core(TM)2 Quad CPU @ 2.66GHz 8 GB RAM DDR2 800 Mhz / 25 ns --------------------------------------------- * Summary: Usefull information: CPU % usage goes stable, also memory is examined and released after the 3rd full_scans CPU % usage is specially high between 1st and 2nd scan (when ksm is merging pages at the same time that it is doing the second scan) Memory starts being released after the 1st scan is completly and the 2nd is in progress (so past some minutes) KSM default pages_to_scan:100 sleep_millisecs:20 CPU: ~11,67% Time_for_a_full_scan: 3m35.209s KSM pages_to_scan:60 sleep_millisecs:40 CPU: ~3,44% Time_for_a_full_scan: 11m50.734s KSM pages_to_scan:100 sleep_millisecs:50 CPU: ~4,21% Time_for_a_full_scan: 8m55.533s KSM pages_to_scan:60 sleep_millisecs:60 CPU: ~2,00% Time_for_a_full_scan: 17m46.094s KSM pages_to_scan:100 sleep_millisecs:120 CPU: ~1,67% Time_for_a_full_scan: 21m26.285s Mem Optimization in all the tests (there before or after): RAM available (reminder): 8 GB Memory optimizacition thanks to ksm: 14-16% full available memory (~ 1.3 / 1.1 Gb of more free memory) Conclusions: ksm is good but need some tweaks to doesnt become a problem more than a help I'd consider to off ksm in /etc/default/qemu-kvm for desktop versions of Ubuntu (availabe but off by default) I'd consider to switch default value of sleep_millisecs: 120 even a bit higher in the ubuntu server version. More conservative... ------------------------------------------- root@core:/sys/kernel/mm/ksm# echo 2 > /sys/kernel/mm/ksm/run root@core:/sys/kernel/mm/ksm# sleep 30 root@core:/sys/kernel/mm/ksm# landscape-sysinfo System load: 1.02 IP address for lo: xxx Usage of /home: 66.1% of 2.68TB IP address for eth1: xxx Memory usage: 60% IP address for eth1:0: xxx Swap usage: 0% IP address for bond0: xxx Processes: 199 IP address for br0: xxx Users logged in: 1 root@core:/sys/kernel/mm/ksm# echo 1 > /sys/kernel/mm/ksm/run ; time /tmp/tmp.bash real 3m35.209s user 0m0.070s sys 0m0.130s [... /tmp/tmp.bash #!/bin/bash while true do SALIDA=`cat /sys/kernel/mm/ksm/full_scans` if [ $SALIDA == "1" ] then break else sleep 5 fi done .... yeee... terrible but enough for a script done in 10 secs...] [...waiting for a pair of aditional scans...] root@core:/sys/kernel/mm/ksm# cat full_scans 3 root@core:/sys/kernel/mm/ksm# ps axuw | grep ksm | grep -v grep root 53 10.7 0.0 0 0 ? SN 17:51 12:08 \_ [ksmd] (Cycle/scan time is 3m35secs ~= 215 secs -- doing check each 2 secs so I'll use "iostat -p 2 215/2") root@core:/sys/kernel/mm/ksm# pidstat -p 53 2 108 Linux 2.6.32-24-server (core) 18/08/10 _x86_64_ (4 CPU) [...] Media: 53 0,00 11,67 0,00 11,67 - ksmd root@core:/sys/kernel/mm/ksm# cat full_scans 4 root@core:/sys/kernel/mm/ksm# cat max_kernel_pages 511518 root@core:/sys/kernel/mm/ksm# cat pages_shared 42045 root@core:/sys/kernel/mm/ksm# cat pages_sharing 287118 root@core:/sys/kernel/mm/ksm# cat pages_to_scan 100 root@core:/sys/kernel/mm/ksm# cat pages_unshared 622240 root@core:/sys/kernel/mm/ksm# cat pages_volatile 97214 root@core:/sys/kernel/mm/ksm# cat run 1 root@core:/sys/kernel/mm/ksm# cat sleep_millisecs 20 root@core:/sys/kernel/mm/ksm# cat /proc/meminfo MemTotal: 8194212 kB MemFree: 1000880 kB Buffers: 432396 kB Cached: 2865740 kB SwapCached: 0 kB [...] root@core:/sys/kernel/mm/ksm# landscape-sysinfo System load: 6.44 IP address for lo: xxx Usage of /home: 66.1% of 2.68TB IP address for eth1: xxx Memory usage: 44% IP address for eth1:0: xxx Swap usage: 0% IP address for bond0: xxx Processes: 199 IP address for br0: xxx Users logged in: 1 ------------------------------------------------------------ root@core:/sys/kernel/mm/ksm# echo 2 > /sys/kernel/mm/ksm/run root@core:/sys/kernel/mm/ksm# sleep 30 root@core:/sys/kernel/mm/ksm# echo 40 > /sys/kernel/mm/ksm/sleep_millisecs root@core:/sys/kernel/mm/ksm# echo 60 > /sys/kernel/mm/ksm/pages_to_scan root@core:/sys/kernel/mm/ksm# echo 1 > /sys/kernel/mm/ksm/run ; time /tmp/tmp.bash real 11m50.734s user 0m0.270s sys 0m0.390s [...waiting for a pair of aditional scan...] root@core:/sys/kernel/mm/ksm# cat full_scans 3 root@core:/sys/kernel/mm/ksm# pidstat -p 53 2 355 Linux 2.6.32-24-server (core) 19/08/10 _x86_64_ (4 CPU) 00:05:57 PID %usr %system %guest %CPU CPU Command 00:05:59 53 0,00 0,00 0,00 0,00 0 ksmd 00:06:01 53 0,00 4,00 0,00 4,00 0 ksmd [...] 00:17:45 53 0,00 1,50 0,00 1,50 0 ksmd 00:17:47 53 0,00 0,50 0,00 0,50 0 ksmd Media: 53 0,00 3,44 0,00 3,44 - ksmd root@core:/sys/kernel/mm/ksm# cat full_scans 4 root@core:/sys/kernel/mm/ksm# cat /proc/meminfo MemTotal: 8194212 kB MemFree: 1027900 kB Buffers: 478248 kB Cached: 2684208 kB SwapCached: 1020 kB ------------------------------------------------------------ root@core:/sys/kernel/mm/ksm# echo 2 > /sys/kernel/mm/ksm/run root@core:/sys/kernel/mm/ksm# echo 50 > /sys/kernel/mm/ksm/sleep_millisecs root@core:/sys/kernel/mm/ksm# echo 100 > /sys/kernel/mm/ksm/pages_to_scan root@core:/sys/kernel/mm/ksm# cat /proc/meminfo MemTotal: 8194212 kB MemFree: 59480 kB Buffers: 485952 kB Cached: 2636984 kB SwapCached: 1120 kB [...] root@core:/sys/kernel/mm/ksm# echo 1 > run; time /tmp/tmp.sh real 8m55.533s user 0m0.180s sys 0m0.380s [...waiting for a pair of aditional scans...] root@core:/sys/kernel/mm/ksm# cat full_scans 3 root@core:/sys/kernel/mm/ksm# cat /proc/meminfo MemTotal: 8194212 kB MemFree: 1026668 kB Buffers: 482376 kB Cached: 2642836 kB SwapCached: 1316 kB root@core:/sys/kernel/mm/ksm# pidstat -p 53 2 267 Linux 2.6.32-24-server (core) 19/08/10 _x86_64_ (4 CPU) 00:40:40 PID %usr %system %guest %CPU CPU Command 00:40:42 53 0,00 1,50 0,00 1,50 2 ksmd 00:40:44 53 0,00 11,00 0,00 11,00 2 ksmd [...] 00:49:32 53 0,00 6,00 0,00 6,00 2 ksmd 00:49:34 53 0,00 6,00 0,00 6,00 2 ksmd Media: 53 0,00 4,21 0,00 4,21 - ksmd root@core:/sys/kernel/mm/ksm# cat full_scans 4 ------------------------------------------------------------ root@core:/sys/kernel/mm/ksm# echo 2 > /sys/kernel/mm/ksm/run root@core:/sys/kernel/mm/ksm# echo 60 > /sys/kernel/mm/ksm/sleep_millisecs root@core:/sys/kernel/mm/ksm# echo 60 > /sys/kernel/mm/ksm/pages_to_scan root@core:/sys/kernel/mm/ksm# cat /proc/meminfo MemTotal: 8194212 kB MemFree: 63684 kB Buffers: 501664 kB Cached: 2606948 kB SwapCached: 1316 kB [...] root@core:/sys/kernel/mm/ksm# echo 1 > run; time /tmp/tmp.sh real 17m46.094s user 0m0.400s sys 0m0.540s [...waiting for a pair of aditional scans...] root@core:/sys/kernel/mm/ksm# cat full_scans 3 root@core:/sys/kernel/mm/ksm# pidstat -p 53 2 533 Linux 2.6.32-24-server (core) 19/08/10 _x86_64_ (4 CPU) 01:48:30 PID %usr %system %guest %CPU CPU Command 01:48:32 53 0,00 0,00 0,00 0,00 1 ksmd 01:48:34 53 0,00 3,00 0,00 3,00 2 ksmd [...] 02:06:14 53 0,00 0,50 0,00 0,50 2 ksmd 02:06:16 53 0,00 3,50 0,00 3,50 2 ksmd Media: 53 0,00 2,00 0,00 2,00 - ksmd root@core:/sys/kernel/mm/ksm# cat full_scans 4 root@core:/sys/kernel/mm/ksm# cat /proc/meminfo MemTotal: 8194212 kB MemFree: 938949 kB Buffers: 525132 kB Cached: 2615487 kB SwapCached: 1184 kB ------------------------------------------------------------ root@core:/sys/kernel/mm/ksm# echo 2 > /sys/kernel/mm/ksm/run root@core:/sys/kernel/mm/ksm# echo 120 > /sys/kernel/mm/ksm/sleep_millisecs root@core:/sys/kernel/mm/ksm# echo 100 > /sys/kernel/mm/ksm/pages_to_scan root@core:/sys/kernel/mm/ksm# cat /proc/meminfo MemTotal: 8194212 kB MemFree: 58696 kB Buffers: 464916 kB Cached: 2637064 kB SwapCached: 1184 kB [...] root@core:/sys/kernel/mm/ksm# landscape-sysinfo System load: 2.44 IP address for lo: xxx Usage of /home: 66.1% of 2.68TB IP address for eth1: xxx Memory usage: 64% IP address for eth1:0: xxx Swap usage: 0% IP address for bond0: xxx Processes: 204 IP address for br0: xxx Users logged in: 1 root@core:/sys/kernel/mm/ksm# echo 1 > run; time /tmp/tmp.sh real 21m26.285s user 0m0.520s sys 0m0.990s [...waiting for a pair of aditional scans...] root@core:/sys/kernel/mm/ksm# cat full_scans 2 root@core:/sys/kernel/mm/ksm# pidstat -p 53 2 643 Linux 2.6.32-24-server (core) 19/08/10 _x86_64_ (4 CPU) 03:17:21 PID %usr %system %guest %CPU CPU Command 03:17:23 53 0,00 2,00 0,00 2,00 0 ksmd 03:17:25 53 0,00 0,00 0,00 0,00 0 ksmd [...] 03:38:45 53 0,00 1,50 0,00 1,50 0 ksmd 03:38:47 53 0,00 0,00 0,00 0,00 0 ksmd Media: 53 0,00 1,67 0,00 1,67 - ksmd root@core:/sys/kernel/mm/ksm# cat full_scans 3 root@core:/sys/kernel/mm/ksm# pidstat -p 53 2 643 Linux 2.6.32-24-server (core) 19/08/10 _x86_64_ (4 CPU) 03:38:47 PID %usr %system %guest %CPU CPU Command 03:38:49 53 0,00 0,00 0,00 0,00 0 ksmd 03:38:51 53 0,00 0,50 0,00 0,50 0 ksmd [...] 04:00:13 53 0,00 0,00 0,00 0,00 0 ksmd Media: 53 0,00 1,67 0,00 1,67 - ksmd root@core:/sys/kernel/mm/ksm# cat full_scans 4