Skip to contentSkip to conversation

resolve duplicate flag no for PG_lazyfree

PATCH In review Fengguang Wu 4 participants 7 messages May 14, 2007 – May 16, 2007

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

PATCH 1/1 resolve duplicate flag no for PG_lazyfree

PG_lazyfree and PG_booked shares the same bit.

Either it is a bug that shall fixed by the following patch, or the situation should be explicitly documented?

---
 include/linux/page-flags.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/page-flags.h +1 -1
@@ -91,7 +91,7 @@
 #define PG_buddy		19	/* Page is free, on buddy lists */
 #define PG_booked		20	/* Has blocks reserved on-disk */
 
-#define PG_lazyfree		20	/* MADV_FREE potential throwaway */
+#define PG_lazyfree		21	/* MADV_FREE potential throwaway */
 
 /* PG_owner_priv_1 users should have descriptive aliases */
 #define PG_checked		PG_owner_priv_1 /* Used by some filesystems */
maintainer
#1 lore raw
Quoted 13 lines · On Mon, 14 May 2007 10:37:18 +0800 Fengguang Wu <[email protected]> wrote:

PG_lazyfree and PG_booked shares the same bit.

Either it is a bug that shall fixed by the following patch, or the situation should be explicitly documented?

---
 include/linux/page-flags.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

include/linux/page-flags.h line 97

Quoted 8 lines
include/linux/page-flags.h +1 -1
@@ -91,7 +91,7 @@
 #define PG_buddy		19	/* Page is free, on buddy lists */
 #define PG_booked		20	/* Has blocks reserved on-disk */
 
-#define PG_lazyfree		20	/* MADV_FREE potential throwaway */
+#define PG_lazyfree		21	/* MADV_FREE potential throwaway */
 
 /* PG_owner_priv_1 users should have descriptive aliases */
 #define PG_checked		PG_owner_priv_1 /* Used by some filesystems */

That's an accident: PG_lazyfree got added but the out-of-tree ext4 patches didn't get updated.

otoh, the intersection between pages which are PageBooked() and pages which are PageLazyFree() should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.

otoh2, PageLazyFree() could have reused PG_owner_priv_1.

Rik, Ted: any thoughts? We do need to scrimp on page flags: when we finally run out, we're screwed.

--
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
Quoted 27 lines · Andrew Morton
Quoted 13 lines · On Mon, 14 May 2007 10:37:18 +0800 Fengguang Wu <[email protected]> wrote:

PG_lazyfree and PG_booked shares the same bit.

Either it is a bug that shall fixed by the following patch, or the situation should be explicitly documented?

---
 include/linux/page-flags.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

include/linux/page-flags.h line 97

Quoted 8 lines
include/linux/page-flags.h +1 -1
@@ -91,7 +91,7 @@
 #define PG_buddy		19	/* Page is free, on buddy lists */
 #define PG_booked		20	/* Has blocks reserved on-disk */
 
-#define PG_lazyfree		20	/* MADV_FREE potential throwaway */
+#define PG_lazyfree		21	/* MADV_FREE potential throwaway */
 
 /* PG_owner_priv_1 users should have descriptive aliases */
 #define PG_checked		PG_owner_priv_1 /* Used by some filesystems */

That's an accident: PG_lazyfree got added but the out-of-tree ext4 patches didn't get updated.

Quoted 5 lines

otoh, the intersection between pages which are PageBooked() and pages which are PageLazyFree() should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.

otoh2, PageLazyFree() could have reused PG_owner_priv_1.

otoh3: PG_lazyfree and PG_readahead can reuse the same bit, too. PG_lazyfree applies to anonymous pages, while PG_readahead applies to file backed pages.

#3 lore raw
In reply to Andrew Morton
Quoted 27 lines · Andrew Morton
Quoted 13 lines · On Mon, 14 May 2007 10:37:18 +0800 Fengguang Wu <[email protected]> wrote:

PG_lazyfree and PG_booked shares the same bit.

Either it is a bug that shall fixed by the following patch, or the situation should be explicitly documented?

---
 include/linux/page-flags.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

include/linux/page-flags.h line 97

Quoted 8 lines
include/linux/page-flags.h +1 -1
@@ -91,7 +91,7 @@
 #define PG_buddy		19	/* Page is free, on buddy lists */
 #define PG_booked		20	/* Has blocks reserved on-disk */
 
-#define PG_lazyfree		20	/* MADV_FREE potential throwaway */
+#define PG_lazyfree		21	/* MADV_FREE potential throwaway */
 
 /* PG_owner_priv_1 users should have descriptive aliases */
 #define PG_checked		PG_owner_priv_1 /* Used by some filesystems */

That's an accident: PG_lazyfree got added but the out-of-tree ext4 patches didn't get updated.

Quoted 5 lines

otoh, the intersection between pages which are PageBooked() and pages which are PageLazyFree() should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.

otoh2, PageLazyFree() could have reused PG_owner_priv_1.

otoh3: PG_lazyfree and PG_readahead can reuse the same bit, too. PG_lazyfree applies to anonymous pages, while PG_readahead applies to file backed pages.

#4 lore raw
In reply to Andrew Morton
Quoted 8 lines · Andrew Morton

otoh, the intersection between pages which are PageBooked() and pages which are PageLazyFree() should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.

otoh2, PageLazyFree() could have reused PG_owner_priv_1.

Rik, Ted: any thoughts? We do need to scrimp on page flags: when we finally run out, we're screwed.

It makes sense to me. PG_lazyfree is currently only in -mm, right? I don't see it in my git tree. It would probably would be a good idea to make sure that we check to add some sanity checking code if it isn't there already that PG_lazyfree isn't already set when try to set PG_lazyfree (just in case there is a bug in the future which causes the should-never-happen case of trying lazy free a PageBooked page).

- Ted

maintainer
#5 lore raw
Quoted 11 lines · On Mon, 14 May 2007 14:06:19 -0400 Theodore Tso <[email protected]> wrote:
Quoted 8 lines · Andrew Morton

otoh, the intersection between pages which are PageBooked() and pages which are PageLazyFree() should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.

otoh2, PageLazyFree() could have reused PG_owner_priv_1.

Rik, Ted: any thoughts? We do need to scrimp on page flags: when we finally run out, we're screwed.

It makes sense to me. PG_lazyfree is currently only in -mm, right?

Ah, yes, I got confused, sorry.

Quoted 7 lines

I
don't see it in my git tree. It would probably would be a good idea to make sure that we check to add some sanity checking code if it isn't there already that PG_lazyfree isn't already set when try to set PG_lazyfree (just in case there is a bug in the future which causes the should-never-happen case of trying lazy free a PageBooked page).

Actually, I think the current status of lazy-freeing-of-memory-through-madv_free.patch is "might not be needed". I _think_ we've determined that 0a27a14a62921b438bb6f33772690d345a089be6 sufficiently fixed the perfomance problems we had in there?

--
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>

#6 lore raw
Quoted 30 lines · Andrew Morton
Quoted 6 lines · On Mon, 14 May 2007 14:06:19 -0400 Theodore Tso <[email protected]> wrote:
Quoted 4 lines · Andrew Morton

otoh, the intersection between pages which are PageBooked() and pages which are PageLazyFree() should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.

Quoted 6 lines
Quoted 4 lines

otoh2, PageLazyFree() could have reused PG_owner_priv_1.

Rik, Ted: any thoughts? We do need to scrimp on page flags: when we finally run out, we're screwed.

It makes sense to me. PG_lazyfree is currently only in -mm, right?

Ah, yes, I got confused, sorry.

Quoted 7 lines

I
don't see it in my git tree. It would probably would be a good idea to make sure that we check to add some sanity checking code if it isn't there already that PG_lazyfree isn't already set when try to set PG_lazyfree (just in case there is a bug in the future which causes the should-never-happen case of trying lazy free a PageBooked page).

Quoted 4 lines

Actually, I think the current status of lazy-freeing-of-memory-through-madv_free.patch is "might not be needed". I _think_ we've determined that 0a27a14a62921b438bb6f33772690d345a089be6 sufficiently fixed the perfomance problems we had in there?

I think so far we've found that it fixes the MySQL scalability problem, yes. I couldn't see any statistically significant difference with MySQL in my tests with MADV_FREE (versus MADV_DONTNEED).

ebizzy is improved a bit at low concurrency but drops off slightly at higher concurrency.

But basically, I don't think we've found a good reason to use a page flag and introduce the potential performance regressions that the MADV_FREE patch has.

Signature · 1 line
SUSE Labs, Novell Inc.