git.openpandora.org
/
pandora-kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
539a5fe
)
mm: make mem_map allocation continuous
author
Yinghai Lu
<yhlu.kernel@gmail.com>
Sun, 13 Apr 2008 18:51:06 +0000
(11:51 -0700)
committer
Ingo Molnar
<mingo@elte.hu>
Sat, 26 Apr 2008 20:51:07 +0000
(22:51 +0200)
vmemmap allocation currently has this layout:
[
ffffe20000000000
-
ffffe200001fffff
] PMD ->
ffff810001400000
on node 0
[
ffffe20000200000
-
ffffe200003fffff
] PMD ->
ffff810001800000
on node 0
[
ffffe20000400000
-
ffffe200005fffff
] PMD ->
ffff810001c00000
on node 0
[
ffffe20000600000
-
ffffe200007fffff
] PMD ->
ffff810002000000
on node 0
[
ffffe20000800000
-
ffffe200009fffff
] PMD ->
ffff810002400000
on node 0
...
note that there is a 2M hole between them - not optimal.
the root cause is that usemap (24 bytes) will be allocated after every 2M
mem_map, and it will push next vmemmap (2M) to the next (2M) alignment.
solution: try to allocate the mem_map continously.
after the patch, we get:
[
ffffe20000000000
-
ffffe200001fffff
] PMD ->
ffff810001400000
on node 0
[
ffffe20000200000
-
ffffe200003fffff
] PMD ->
ffff810001600000
on node 0
[
ffffe20000400000
-
ffffe200005fffff
] PMD ->
ffff810001800000
on node 0
[
ffffe20000600000
-
ffffe200007fffff
] PMD ->
ffff810001a00000
on node 0
[
ffffe20000800000
-
ffffe200009fffff
] PMD ->
ffff810001c00000
on node 0
...
which is the ideal layout.
and usemap will share a page because of they are allocated continuously too:
sparse_early_usemap_alloc: usemap =
ffff810024e00000
size = 24
sparse_early_usemap_alloc: usemap =
ffff810024e00080
size = 24
sparse_early_usemap_alloc: usemap =
ffff810024e00100
size = 24
sparse_early_usemap_alloc: usemap =
ffff810024e00180
size = 24
...
so we make the bootmem allocation more compact and use less memory
for usemap => mission accomplished ;-)
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
No differences found