2010-08-28 14:09:49

by Richard Kennedy

[permalink] [raw]
Subject: [PATCH] mm: remove alignment padding from anon_vma on (some) 64 bit builds

Reorder structure anon_vma to remove alignment padding on 64 builds when
(CONFIG_KSM || CONFIG_MIGRATION).
This will shrink the size of the anon_vma structure from 40 to 32 bytes
& allow more objects per slab in its kmem_cache.

Under slub the objects in the anon_vma kmem_cache will then be 40 bytes
with 102 objects per slab.
(On v2.6.36 without this patch,the size is 48 bytes and 85
objects/slab.)

compiled & tested on x86_64 using SLUB

Signed-off-by: Richard Kennedy <[email protected]>
---
patch against v2.6.36-rc2
compiled & tested on x86_64 AMD X2

regards
Richard


diff --git a/include/linux/rmap.h b/include/linux/rmap.h
index 31b2fd7..5c98df6 100644
--- a/include/linux/rmap.h
+++ b/include/linux/rmap.h
@@ -25,8 +25,8 @@
* pointing to this anon_vma once its vma list is empty.
*/
struct anon_vma {
- spinlock_t lock; /* Serialize access to vma list */
struct anon_vma *root; /* Root of this anon_vma tree */
+ spinlock_t lock; /* Serialize access to vma list */
#if defined(CONFIG_KSM) || defined(CONFIG_MIGRATION)

/*


2010-08-28 15:57:15

by Rik van Riel

[permalink] [raw]
Subject: Re: [PATCH] mm: remove alignment padding from anon_vma on (some) 64 bit builds

On 08/28/2010 10:09 AM, Richard Kennedy wrote:
> Reorder structure anon_vma to remove alignment padding on 64 builds when
> (CONFIG_KSM || CONFIG_MIGRATION).
> This will shrink the size of the anon_vma structure from 40 to 32 bytes
> & allow more objects per slab in its kmem_cache.
>
> Under slub the objects in the anon_vma kmem_cache will then be 40 bytes
> with 102 objects per slab.
> (On v2.6.36 without this patch,the size is 48 bytes and 85
> objects/slab.)
>
> compiled& tested on x86_64 using SLUB
>
> Signed-off-by: Richard Kennedy<[email protected]>

Reviewed-by: Rik van Riel <[email protected]>

--
All rights reversed