Skip to contentSkip to conversation

no buddy bitmap patch : intro and includes [0/2]

PATCH In review Hiroyuki KAMEZAWA 3 participants 3 messages Oct 7, 2004

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 no buddy bitmap patch : intro and includes [0/2]

Hi,

Followings are patches for removing bitmaps from buddy allocator, against 2.6.9-rc3. I think this version is much clearer than ones I posted a month ago.

The problem I was worried about was how to deal with memmap's holes in a zone. and I decided to use pfn_valid() simply. Now, there is no messy codes :)

pfn_valid() is used when macro "HOLES_IN_ZONE" is defined. It is defined only in ia64 now.

Here is kernbench result on my tiger4 (Itanium2 1.3GHz x2, 8 Gbytes memory)

Average Optimal -j 8 Load Run (Perfroming 5 run of make -j 8 on linux-2.6.8 source tree):

                Elapsed Time  User Time  System Time Percent CPU  Context Switches   Sleeps
2.6.9-rc3         699.906      1322.01     39.336       194            64390         74416.8
no-bitmap         698.334      1321.79     38.58        194.2          64435.4       74622.2

If there is unclear point, please tell me.

Thanks.
Kame <[email protected]>

=== patch for include files ===

This patch removes bitmap from zone->free_area[] in include/linux/mmzone.h, and adds some comments on page->private field in include/linux/mm.h.

non-atomic ops for changing PG_private bit is added in include/page-flags.h. zone->lock is always acquired when PG_private of "a free page" is changed.

---

 test-kernel-kamezawa/include/linux/mm.h         |    2 ++
 test-kernel-kamezawa/include/linux/mmzone.h     |    1 -
 test-kernel-kamezawa/include/linux/page-flags.h |    2 ++
 3 files changed, 4 insertions(+), 1 deletion(-)
include/linux/mm.h renamed from include/linux/mm.h~eliminate-bitmap-includes +2 -0
diff -puN include/linux/mm.h~eliminate-bitmap-includes include/linux/mm.h
@@ -209,6 +209,8 @@ struct page {
 					 * usually used for buffer_heads
 					 * if PagePrivate set; used for
 					 * swp_entry_t if PageSwapCache
+					 * When page is free, this indicates
+					 * order in the buddy system.
 					 */
 	struct address_space *mapping;	/* If low bit clear, points to
 					 * inode address_space, or NULL.
include/linux/mmzone.h renamed from include/linux/mmzone.h~eliminate-bitmap-includes +0 -1
diff -puN include/linux/mmzone.h~eliminate-bitmap-includes include/linux/mmzone.h
@@ -22,7 +22,6 @@
 
 struct free_area {
 	struct list_head	free_list;
-	unsigned long		*map;
 };
 
 struct pglist_data;
include/linux/page-flags.h renamed from include/linux/page-flags.h~eliminate-bitmap-includes +2 -0
diff -puN include/linux/page-flags.h~eliminate-bitmap-includes include/linux/page-flags.h
@@ -238,6 +238,8 @@ extern unsigned long __read_page_state(u
 #define SetPagePrivate(page)	set_bit(PG_private, &(page)->flags)
 #define ClearPagePrivate(page)	clear_bit(PG_private, &(page)->flags)
 #define PagePrivate(page)	test_bit(PG_private, &(page)->flags)
+#define __SetPagePrivate(page)  __set_bit(PG_private, &(page)->flags)
+#define __ClearPagePrivate(page) __clear_bit(PG_private, &(page)->flags)
 
 #define PageWriteback(page)	test_bit(PG_writeback, &(page)->flags)
 #define SetPageWriteback(page)						\

_

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#1 lore raw
Quoted 2 lines

Followings are patches for removing bitmaps from buddy allocator, against 2.6.9-rc3. I think this version is much clearer than ones I posted a month ago.

...

Quoted 1 line

If there is unclear point, please tell me.

What was the purpose behind this, again? Sorry, has been too long since I last looked.

M.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#2 lore raw

--On Thursday, October 07, 2004 07:45:21 -0700 "Martin J. Bligh"

Quoted 8 lines · <[email protected]> wrote:
Quoted 3 lines

Followings are patches for removing bitmaps from buddy allocator, against 2.6.9-rc3. I think this version is much clearer than ones I posted a month ago.

...

Quoted 1 line

If there is unclear point, please tell me.

What was the purpose behind this, again? Sorry, has been too long since I last looked.

The memory allocator bitmaps are the main remaining reason we need the concept of linear memory. If we can get rid of them, it's one step closer to managing memory as a set of sections.

Dave McCracken

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>