diff options
author | Hugh Dickins <hugh.dickins@tiscali.co.uk> | 2009-10-07 19:32:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-08 10:36:38 -0400 |
commit | c73602ad31cdcf7e6651f43d12f65b5b9b825b6f (patch) | |
tree | e9af7ebc13854e03e9ea0ee1c4e7e00475506fa7 /mm | |
parent | 0eca52a92735f43462165efe00a7e394345fb38e (diff) |
ksm: more on default values
Adjust the max_kernel_pages default to a quarter of totalram_pages,
instead of nr_free_buffer_pages() / 4: the KSM pages themselves come from
highmem, and even on a 16GB PAE machine, 4GB of KSM pages would only be
pinning 32MB of lowmem with their rmap_items, so no need for the more
obscure calculation (nor for its own special init function).
There is no way for the user to switch KSM on if CONFIG_SYSFS is not
enabled, so in that case default run to KSM_RUN_MERGE.
Update KSM Documentation and Kconfig to reflect the new defaults.
Signed-off-by: Hugh Dickins <hugh.dickins@tiscali.co.uk>
Cc: Izik Eidus <ieidus@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/Kconfig | 4 | ||||
-rw-r--r-- | mm/ksm.c | 10 |
2 files changed, 7 insertions, 7 deletions
diff --git a/mm/Kconfig b/mm/Kconfig index edd300aca173..57963c6063d1 100644 --- a/mm/Kconfig +++ b/mm/Kconfig | |||
@@ -224,7 +224,9 @@ config KSM | |||
224 | the many instances by a single resident page with that content, so | 224 | the many instances by a single resident page with that content, so |
225 | saving memory until one or another app needs to modify the content. | 225 | saving memory until one or another app needs to modify the content. |
226 | Recommended for use with KVM, or with other duplicative applications. | 226 | Recommended for use with KVM, or with other duplicative applications. |
227 | See Documentation/vm/ksm.txt for more information. | 227 | See Documentation/vm/ksm.txt for more information: KSM is inactive |
228 | until a program has madvised that an area is MADV_MERGEABLE, and | ||
229 | root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set). | ||
228 | 230 | ||
229 | config DEFAULT_MMAP_MIN_ADDR | 231 | config DEFAULT_MMAP_MIN_ADDR |
230 | int "Low address space to protect from user allocation" | 232 | int "Low address space to protect from user allocation" |
@@ -184,11 +184,6 @@ static DEFINE_SPINLOCK(ksm_mmlist_lock); | |||
184 | sizeof(struct __struct), __alignof__(struct __struct),\ | 184 | sizeof(struct __struct), __alignof__(struct __struct),\ |
185 | (__flags), NULL) | 185 | (__flags), NULL) |
186 | 186 | ||
187 | static void __init ksm_init_max_kernel_pages(void) | ||
188 | { | ||
189 | ksm_max_kernel_pages = nr_free_buffer_pages() / 4; | ||
190 | } | ||
191 | |||
192 | static int __init ksm_slab_init(void) | 187 | static int __init ksm_slab_init(void) |
193 | { | 188 | { |
194 | rmap_item_cache = KSM_KMEM_CACHE(rmap_item, 0); | 189 | rmap_item_cache = KSM_KMEM_CACHE(rmap_item, 0); |
@@ -1673,7 +1668,7 @@ static int __init ksm_init(void) | |||
1673 | struct task_struct *ksm_thread; | 1668 | struct task_struct *ksm_thread; |
1674 | int err; | 1669 | int err; |
1675 | 1670 | ||
1676 | ksm_init_max_kernel_pages(); | 1671 | ksm_max_kernel_pages = totalram_pages / 4; |
1677 | 1672 | ||
1678 | err = ksm_slab_init(); | 1673 | err = ksm_slab_init(); |
1679 | if (err) | 1674 | if (err) |
@@ -1697,6 +1692,9 @@ static int __init ksm_init(void) | |||
1697 | kthread_stop(ksm_thread); | 1692 | kthread_stop(ksm_thread); |
1698 | goto out_free2; | 1693 | goto out_free2; |
1699 | } | 1694 | } |
1695 | #else | ||
1696 | ksm_run = KSM_RUN_MERGE; /* no way for user to start it */ | ||
1697 | |||
1700 | #endif /* CONFIG_SYSFS */ | 1698 | #endif /* CONFIG_SYSFS */ |
1701 | 1699 | ||
1702 | return 0; | 1700 | return 0; |