Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1594090 > unrolled thread
| Started by | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| First post | 2017-03-07 11:40 +0100 |
| Last post | 2017-03-07 11:50 +0100 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
[RFC][PATCH 1/2] mm: use MIGRATE_HIGHATOMIC as late as possible Xishi Qiu <qiuxishi@huawei.com> - 2017-03-07 11:40 +0100
Re: [RFC][PATCH 1/2] mm: use MIGRATE_HIGHATOMIC as late as possible Michal Hocko <mhocko@kernel.org> - 2017-03-07 11:50 +0100
Re: [RFC][PATCH 1/2] mm: use MIGRATE_HIGHATOMIC as late as possible Xishi Qiu <qiuxishi@huawei.com> - 2017-03-07 12:10 +0100
Re: [RFC][PATCH 1/2] mm: use MIGRATE_HIGHATOMIC as late as possible Michal Hocko <mhocko@kernel.org> - 2017-03-07 15:00 +0100
[RFC][PATCH 2/2] mm: unreserve highatomic pageblock if direct reclaim failed Xishi Qiu <qiuxishi@huawei.com> - 2017-03-07 11:50 +0100
| From | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| Date | 2017-03-07 11:40 +0100 |
| Subject | [RFC][PATCH 1/2] mm: use MIGRATE_HIGHATOMIC as late as possible |
| Message-ID | <tikH7-6ao-1@gated-at.bofh.it> |
MIGRATE_HIGHATOMIC page blocks are reserved for an atomic
high-order allocation, so use it as late as possible.
Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
---
mm/page_alloc.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 40d79a6..2331840 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2714,14 +2714,12 @@ struct page *rmqueue(struct zone *preferred_zone,
spin_lock_irqsave(&zone->lock, flags);
do {
- page = NULL;
- if (alloc_flags & ALLOC_HARDER) {
+ page = __rmqueue(zone, order, migratetype);
+ if (!page && alloc_flags & ALLOC_HARDER) {
page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC);
if (page)
trace_mm_page_alloc_zone_locked(page, order, migratetype);
}
- if (!page)
- page = __rmqueue(zone, order, migratetype);
} while (page && check_new_pages(page, order));
spin_unlock(&zone->lock);
if (!page)
--
1.8.3.1
[toc] | [next] | [standalone]
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Date | 2017-03-07 11:50 +0100 |
| Message-ID | <tikQO-6fF-11@gated-at.bofh.it> |
| In reply to | #1594090 |
On Tue 07-03-17 18:33:53, Xishi Qiu wrote:
> MIGRATE_HIGHATOMIC page blocks are reserved for an atomic
> high-order allocation, so use it as late as possible.
Why is this better? Are you seeing any problem which this patch
resolves? In other words the patch description should explain why not
only what (that is usually clear from looking at the diff).
> Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
> ---
> mm/page_alloc.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 40d79a6..2331840 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -2714,14 +2714,12 @@ struct page *rmqueue(struct zone *preferred_zone,
> spin_lock_irqsave(&zone->lock, flags);
>
> do {
> - page = NULL;
> - if (alloc_flags & ALLOC_HARDER) {
> + page = __rmqueue(zone, order, migratetype);
> + if (!page && alloc_flags & ALLOC_HARDER) {
> page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC);
> if (page)
> trace_mm_page_alloc_zone_locked(page, order, migratetype);
> }
> - if (!page)
> - page = __rmqueue(zone, order, migratetype);
> } while (page && check_new_pages(page, order));
> spin_unlock(&zone->lock);
> if (!page)
> --
> 1.8.3.1
>
--
Michal Hocko
SUSE Labs
[toc] | [prev] | [next] | [standalone]
| From | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| Date | 2017-03-07 12:10 +0100 |
| Message-ID | <tilab-6G6-43@gated-at.bofh.it> |
| In reply to | #1594102 |
On 2017/3/7 18:47, Michal Hocko wrote:
> On Tue 07-03-17 18:33:53, Xishi Qiu wrote:
>> MIGRATE_HIGHATOMIC page blocks are reserved for an atomic
>> high-order allocation, so use it as late as possible.
>
> Why is this better? Are you seeing any problem which this patch
> resolves? In other words the patch description should explain why not
> only what (that is usually clear from looking at the diff).
>
Hi Michal,
I have not see any problem yet, I think if we reserve more high order
pageblocks, the more success rate we will get when meet an atomic
high-order allocation, right?
Thanks,
Xishi Qiu
>> Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
>> ---
>> mm/page_alloc.c | 6 ++----
>> 1 file changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
>> index 40d79a6..2331840 100644
>> --- a/mm/page_alloc.c
>> +++ b/mm/page_alloc.c
>> @@ -2714,14 +2714,12 @@ struct page *rmqueue(struct zone *preferred_zone,
>> spin_lock_irqsave(&zone->lock, flags);
>>
>> do {
>> - page = NULL;
>> - if (alloc_flags & ALLOC_HARDER) {
>> + page = __rmqueue(zone, order, migratetype);
>> + if (!page && alloc_flags & ALLOC_HARDER) {
>> page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC);
>> if (page)
>> trace_mm_page_alloc_zone_locked(page, order, migratetype);
>> }
>> - if (!page)
>> - page = __rmqueue(zone, order, migratetype);
>> } while (page && check_new_pages(page, order));
>> spin_unlock(&zone->lock);
>> if (!page)
>> --
>> 1.8.3.1
>>
>
[toc] | [prev] | [next] | [standalone]
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Date | 2017-03-07 15:00 +0100 |
| Message-ID | <tinOG-8fM-11@gated-at.bofh.it> |
| In reply to | #1594130 |
On Tue 07-03-17 19:03:39, Xishi Qiu wrote: > On 2017/3/7 18:47, Michal Hocko wrote: > > > On Tue 07-03-17 18:33:53, Xishi Qiu wrote: > >> MIGRATE_HIGHATOMIC page blocks are reserved for an atomic > >> high-order allocation, so use it as late as possible. > > > > Why is this better? Are you seeing any problem which this patch > > resolves? In other words the patch description should explain why not > > only what (that is usually clear from looking at the diff). > > > > Hi Michal, > > I have not see any problem yet, I think if we reserve more high order > pageblocks, the more success rate we will get when meet an atomic > high-order allocation, right? Please make sure you measure your changes under different workloads and present numbers in the changelog when you are touch such a subtle things like memory reserves. Ideas that might sound they make sense can turn out to behave differently in the real life. -- Michal Hocko SUSE Labs
[toc] | [prev] | [next] | [standalone]
| From | Xishi Qiu <qiuxishi@huawei.com> |
|---|---|
| Date | 2017-03-07 11:50 +0100 |
| Subject | [RFC][PATCH 2/2] mm: unreserve highatomic pageblock if direct reclaim failed |
| Message-ID | <tikQO-6fF-21@gated-at.bofh.it> |
| In reply to | #1594090 |
If direct reclaim failed, unreserve highatomic pageblock immediately is better than unreserve in should_reclaim_retry(). We may get page in next try rather than reclaim-compact-reclaim-compact... Signed-off-by: Xishi Qiu <qiuxishi@huawei.com> --- mm/page_alloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 2331840..2bd19d0 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -3421,7 +3421,8 @@ void warn_alloc(gfp_t gfp_mask, nodemask_t *nodemask, const char *fmt, ...) bool drained = false; *did_some_progress = __perform_reclaim(gfp_mask, order, ac); - if (unlikely(!(*did_some_progress))) + if (unlikely(!(*did_some_progress) + && !unreserve_highatomic_pageblock(ac, false))) return NULL; retry: -- 1.8.3.1
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web