resolve duplicate flag no for PG_lazyfree
Subsystems (2)
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 */
Andrew Morton
maintainerQuoted 13 lines · On Mon, 14 May 2007 10:37:18 +0800 Fengguang Wu <[email protected]> wrote:
PG_lazyfreeandPG_bookedshares the same bit.Either it is a bug that shall fixed by the following patch, or the situation should be explicitly documented?
Signed-off-by Fengguang Wu <[email protected]>--- 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>
Quoted 27 lines · Andrew Morton
Quoted 13 lines · On Mon, 14 May 2007 10:37:18 +0800 Fengguang Wu <[email protected]> wrote:
PG_lazyfreeandPG_bookedshares the same bit.Either it is a bug that shall fixed by the following patch, or the situation should be explicitly documented?
Signed-off-by Fengguang Wu <[email protected]>--- 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_lazyfreegot 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 arePageLazyFree()should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.otoh2,
PageLazyFree()could have reusedPG_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.
Quoted 27 lines · Andrew Morton
Quoted 13 lines · On Mon, 14 May 2007 10:37:18 +0800 Fengguang Wu <[email protected]> wrote:
PG_lazyfreeandPG_bookedshares the same bit.Either it is a bug that shall fixed by the following patch, or the situation should be explicitly documented?
Signed-off-by Fengguang Wu <[email protected]>--- 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_lazyfreegot 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 arePageLazyFree()should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.otoh2,
PageLazyFree()could have reusedPG_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.
Quoted 8 lines · Andrew Morton
otoh, the intersection between pages which are
PageBooked()and pages which arePageLazyFree()should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.otoh2,
PageLazyFree()could have reusedPG_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
Andrew Morton
maintainerQuoted 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 arePageLazyFree()should be zreo, so it'd be good to actually formalise this reuse within the ext4 patches.otoh2,
PageLazyFree()could have reusedPG_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_lazyfreeis 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 thatPG_lazyfreeisn't already set when try to setPG_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>
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 arePageLazyFree()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 reusedPG_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_lazyfreeis 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 thatPG_lazyfreeisn't already set when try to setPG_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
0a27a14a62921b438bb6f33772690d345a089be6sufficiently 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.