* [RFC] mm/compaction: ignore block suitable after check large free page @ 2017-03-10 4:20 Yisheng Xie 2017-03-10 7:30 ` Vlastimil Babka 0 siblings, 1 reply; 5+ messages in thread From: Yisheng Xie @ 2017-03-10 4:20 UTC (permalink / raw) To: akpm, vbabka, mhocko, mgorman, iamjoonsoo.kim, rientjes, minchan Cc: linux-mm, linux-kernel, guohanjun, qiuxishi, liubo95 If the migrate target is a large free page and we ignore suitable, it may not good for defrag. So move the ignore block suitable after check large free page. Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com> --- mm/compaction.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/compaction.c b/mm/compaction.c index 0fdfde0..4bf2a5d 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -991,9 +991,6 @@ static bool too_many_isolated(struct zone *zone) static bool suitable_migration_target(struct compact_control *cc, struct page *page) { - if (cc->ignore_block_suitable) - return true; - /* If the page is a large free page, then disallow migration */ if (PageBuddy(page)) { /* @@ -1005,6 +1002,9 @@ static bool suitable_migration_target(struct compact_control *cc, return false; } + if (cc->ignore_block_suitable) + return true; + /* If the block is MIGRATE_MOVABLE or MIGRATE_CMA, allow migration */ if (migrate_async_suitable(get_pageblock_migratetype(page))) return true; -- 1.7.12.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC] mm/compaction: ignore block suitable after check large free page 2017-03-10 4:20 [RFC] mm/compaction: ignore block suitable after check large free page Yisheng Xie @ 2017-03-10 7:30 ` Vlastimil Babka 2017-03-10 9:53 ` Yisheng Xie 0 siblings, 1 reply; 5+ messages in thread From: Vlastimil Babka @ 2017-03-10 7:30 UTC (permalink / raw) To: Yisheng Xie, akpm, mhocko, mgorman, iamjoonsoo.kim, rientjes, minchan Cc: linux-mm, linux-kernel, guohanjun, qiuxishi, liubo95 On 03/10/2017 05:20 AM, Yisheng Xie wrote: > If the migrate target is a large free page and we ignore suitable, > it may not good for defrag. So move the ignore block suitable after > check large free page. Right. But in practice I expect close to no impact, because direct compaction shouldn't have to be called if there's a >=pageblock_order page already available. > Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com> > --- > mm/compaction.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index 0fdfde0..4bf2a5d 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -991,9 +991,6 @@ static bool too_many_isolated(struct zone *zone) > static bool suitable_migration_target(struct compact_control *cc, > struct page *page) > { > - if (cc->ignore_block_suitable) > - return true; > - > /* If the page is a large free page, then disallow migration */ > if (PageBuddy(page)) { > /* > @@ -1005,6 +1002,9 @@ static bool suitable_migration_target(struct compact_control *cc, > return false; > } > > + if (cc->ignore_block_suitable) > + return true; > + > /* If the block is MIGRATE_MOVABLE or MIGRATE_CMA, allow migration */ > if (migrate_async_suitable(get_pageblock_migratetype(page))) > return true; > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC] mm/compaction: ignore block suitable after check large free page 2017-03-10 7:30 ` Vlastimil Babka @ 2017-03-10 9:53 ` Yisheng Xie 2017-03-13 9:51 ` Vlastimil Babka 0 siblings, 1 reply; 5+ messages in thread From: Yisheng Xie @ 2017-03-10 9:53 UTC (permalink / raw) To: Vlastimil Babka, akpm, mhocko, mgorman, iamjoonsoo.kim, rientjes, minchan Cc: linux-mm, linux-kernel, guohanjun, qiuxishi, liubo95 Hi Vlastimil, Thanks for comment. On 2017/3/10 15:30, Vlastimil Babka wrote: > On 03/10/2017 05:20 AM, Yisheng Xie wrote: >> If the migrate target is a large free page and we ignore suitable, >> it may not good for defrag. So move the ignore block suitable after >> check large free page. > > Right. But in practice I expect close to no impact, because direct > compaction shouldn't have to be called if there's a >=pageblock_order > page already available. > Maybe you are right and this change is just based on logical analyses. Presently, only in direct compaction, we increase the compaction priority, and ignore suitable at MIN_COMPACT_PRIORITY. I have a silly question, can we do the similar thing in kcompactd? maybe by doing most work in kcompactd, we can get better perf of slow path. Thanks Yisheng Xie >> Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com> >> --- >> mm/compaction.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/mm/compaction.c b/mm/compaction.c >> index 0fdfde0..4bf2a5d 100644 >> --- a/mm/compaction.c >> +++ b/mm/compaction.c >> @@ -991,9 +991,6 @@ static bool too_many_isolated(struct zone *zone) >> static bool suitable_migration_target(struct compact_control *cc, >> struct page *page) >> { >> - if (cc->ignore_block_suitable) >> - return true; >> - >> /* If the page is a large free page, then disallow migration */ >> if (PageBuddy(page)) { >> /* >> @@ -1005,6 +1002,9 @@ static bool suitable_migration_target(struct compact_control *cc, >> return false; >> } >> >> + if (cc->ignore_block_suitable) >> + return true; >> + >> /* If the block is MIGRATE_MOVABLE or MIGRATE_CMA, allow migration */ >> if (migrate_async_suitable(get_pageblock_migratetype(page))) >> return true; >> > > > . > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC] mm/compaction: ignore block suitable after check large free page 2017-03-10 9:53 ` Yisheng Xie @ 2017-03-13 9:51 ` Vlastimil Babka 2017-03-13 12:16 ` Yisheng Xie 0 siblings, 1 reply; 5+ messages in thread From: Vlastimil Babka @ 2017-03-13 9:51 UTC (permalink / raw) To: Yisheng Xie, akpm, mhocko, mgorman, iamjoonsoo.kim, rientjes, minchan Cc: linux-mm, linux-kernel, guohanjun, qiuxishi, liubo95 On 03/10/2017 10:53 AM, Yisheng Xie wrote: > Hi Vlastimil, > > Thanks for comment. > On 2017/3/10 15:30, Vlastimil Babka wrote: >> On 03/10/2017 05:20 AM, Yisheng Xie wrote: >>> If the migrate target is a large free page and we ignore suitable, >>> it may not good for defrag. So move the ignore block suitable after >>> check large free page. >> >> Right. But in practice I expect close to no impact, because direct >> compaction shouldn't have to be called if there's a >=pageblock_order >> page already available. >> > Maybe you are right and this change is just based on logical analyses. I'm not opposing the change, it might be better for future-proofing the function, just pointing out that it most likely won't have any visible effect right now. > Presently, only in direct compaction, we increase the compaction priority, > and ignore suitable at MIN_COMPACT_PRIORITY. I have a silly question, can > we do the similar thing in kcompactd? maybe by doing most work in kcompactd, > we can get better perf of slow path. That would need a very good evaluation at the very least. Migrating pages into pageblocks other than movable ones brings the danger of later unmovable/reclaimable allocations having to fallback to movable pageblocks and causing permanent fragmentation. For direct compaction we decided that it's better to risk permanent fragmentation than a premature OOM, but for kcompactd there doesn't seem to be such compelling reason. > Thanks > Yisheng Xie > >>> Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com> >>> --- >>> mm/compaction.c | 6 +++--- >>> 1 file changed, 3 insertions(+), 3 deletions(-) >>> >>> diff --git a/mm/compaction.c b/mm/compaction.c >>> index 0fdfde0..4bf2a5d 100644 >>> --- a/mm/compaction.c >>> +++ b/mm/compaction.c >>> @@ -991,9 +991,6 @@ static bool too_many_isolated(struct zone *zone) >>> static bool suitable_migration_target(struct compact_control *cc, >>> struct page *page) >>> { >>> - if (cc->ignore_block_suitable) >>> - return true; >>> - >>> /* If the page is a large free page, then disallow migration */ >>> if (PageBuddy(page)) { >>> /* >>> @@ -1005,6 +1002,9 @@ static bool suitable_migration_target(struct compact_control *cc, >>> return false; >>> } >>> >>> + if (cc->ignore_block_suitable) >>> + return true; >>> + >>> /* If the block is MIGRATE_MOVABLE or MIGRATE_CMA, allow migration */ >>> if (migrate_async_suitable(get_pageblock_migratetype(page))) >>> return true; >>> >> >> >> . >> > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC] mm/compaction: ignore block suitable after check large free page 2017-03-13 9:51 ` Vlastimil Babka @ 2017-03-13 12:16 ` Yisheng Xie 0 siblings, 0 replies; 5+ messages in thread From: Yisheng Xie @ 2017-03-13 12:16 UTC (permalink / raw) To: Vlastimil Babka, akpm, mhocko, mgorman, iamjoonsoo.kim, rientjes, minchan Cc: linux-mm, linux-kernel, guohanjun, qiuxishi, liubo95 Hi Vlastimil, Thanks for comment. On 2017/3/13 17:51, Vlastimil Babka wrote: > On 03/10/2017 10:53 AM, Yisheng Xie wrote: >> Hi Vlastimil, >> >> Thanks for comment. >> On 2017/3/10 15:30, Vlastimil Babka wrote: >>> On 03/10/2017 05:20 AM, Yisheng Xie wrote: >>>> If the migrate target is a large free page and we ignore suitable, >>>> it may not good for defrag. So move the ignore block suitable after >>>> check large free page. >>> >>> Right. But in practice I expect close to no impact, because direct >>> compaction shouldn't have to be called if there's a >=pageblock_order >>> page already available. >>> >> Maybe you are right and this change is just based on logical analyses. > > I'm not opposing the change, it might be better for future-proofing the > function, just pointing out that it most likely won't have any visible > effect right now. Get it, maybe I should put these in the change log :) > >> Presently, only in direct compaction, we increase the compaction priority, >> and ignore suitable at MIN_COMPACT_PRIORITY. I have a silly question, can >> we do the similar thing in kcompactd? maybe by doing most work in kcompactd, >> we can get better perf of slow path. > > That would need a very good evaluation at the very least. Migrating > pages into pageblocks other than movable ones brings the danger of later > unmovable/reclaimable allocations having to fallback to movable > pageblocks and causing permanent fragmentation. For direct compaction we > decided that it's better to risk permanent fragmentation than a > premature OOM, but for kcompactd there doesn't seem to be such > compelling reason. Thanks for kindly explain. > >> Thanks >> Yisheng Xie -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-03-13 12:16 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-03-10 4:20 [RFC] mm/compaction: ignore block suitable after check large free page Yisheng Xie 2017-03-10 7:30 ` Vlastimil Babka 2017-03-10 9:53 ` Yisheng Xie 2017-03-13 9:51 ` Vlastimil Babka 2017-03-13 12:16 ` Yisheng Xie
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox