linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: PINTU KUMAR <pintu_agarwal@yahoo.com>
To: Hui Zhu <zhuhui@xiaomi.com>,
	"rjw@rjwysocki.net" <rjw@rjwysocki.net>,
	"len.brown@intel.com" <len.brown@intel.com>,
	"pavel@ucw.cz" <pavel@ucw.cz>,
	"m.szyprowski@samsung.com" <m.szyprowski@samsung.com>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"mina86@mina86.com" <mina86@mina86.com>,
	"aneesh.kumar@linux.vnet.ibm.com"
	<aneesh.kumar@linux.vnet.ibm.com>,
	"iamjoonsoo.kim@lge.com" <iamjoonsoo.kim@lge.com>,
	"hannes@cmpxchg.org" <hannes@cmpxchg.org>,
	"riel@redhat.com" <riel@redhat.com>,
	"mgorman@suse.de" <mgorman@suse.de>,
	"minchan@kernel.org" <minchan@kernel.org>,
	"nasa4836@gmail.com" <nasa4836@gmail.com>,
	"ddstreet@ieee.org" <ddstreet@ieee.org>,
	"hughd@google.com" <hughd@google.com>,
	"mingo@kernel.org" <mingo@kernel.org>,
	"rientjes@google.com" <rientjes@google.com>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"keescook@chromium.org" <keescook@chromium.org>,
	"atomlin@redhat.com" <atomlin@redhat.com>,
	"raistlin@linux.it" <raistlin@linux.it>,
	"axboe@fb.com" <axboe@fb.com>,
	"paulmck@linux.vnet.ibm.com" <paulmck@linux.vnet.ibm.com>,
	"kirill.shutemov@linux.intel.com"
	<kirill.shutemov@linux.intel.com>,
	"n-horiguchi@ah.jp.nec.com" <n-horiguchi@ah.jp.nec.com>,
	"k.khlebnikov@samsung.com" <k.khlebnikov@samsung.com>,
	"msalter@redhat.com" <msalter@redhat.com>,
	"deller@gmx.de" <deller@gmx.de>,
	"tangchen@cn.fujitsu.com" <tangchen@cn.fujitsu.com>,
	"ben@decadent.org.uk" <ben@decadent.org.uk>,
	"akinobu.mita@gmail.com" <akinobu.mita@gmail.com>,
	"lauraa@codeaurora.org" <lauraa@codeaurora.org>,
	"vbabka@suse.cz" <vbabka@suse.cz>,
	"sasha.levin@oracle.com" <sasha.levin@oracle.com>,
	"vdavydov@parallels.com" <vdavydov@parallels.com>,
	"suleiman@google.com" <suleiman@google.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"pintu_agarwal@yahoo.com" <pintu_agarwal@yahoo.com>,
	"pintu.k@samsung.com" <pintu.k@samsung.com>
Subject: Re: [PATCH v2 2/4] (CMA_AGGRESSIVE) Add new function shrink_all_memory_for_cma
Date: Fri, 17 Oct 2014 21:50:08 -0700	[thread overview]
Message-ID: <1413607808.82877.YahooMailNeo@web160105.mail.bf1.yahoo.com> (raw)
In-Reply-To: <1413538084-15743-1-git-send-email-zhuhui@xiaomi.com>

Hi,



----- Original Message -----
> From: Hui Zhu <zhuhui@xiaomi.com>
> To: rjw@rjwysocki.net; len.brown@intel.com; pavel@ucw.cz; m.szyprowski@samsung.com; akpm@linux-foundation.org; mina86@mina86.com; aneesh.kumar@linux.vnet.ibm.com; iamjoonsoo.kim@lge.com; hannes@cmpxchg.org; riel@redhat.com; mgorman@suse.de; minchan@kernel.org; nasa4836@gmail.com; ddstreet@ieee.org; hughd@google.com; mingo@kernel.org; rientjes@google.com; peterz@infradead.org; keescook@chromium.org; atomlin@redhat.com; raistlin@linux.it; axboe@fb.com; paulmck@linux.vnet.ibm.com; kirill.shutemov@linux.intel.com; n-horiguchi@ah.jp.nec.com; k.khlebnikov@samsung.com; msalter@redhat.com; deller@gmx.de; tangchen@cn.fujitsu.com; ben@decadent.org.uk; akinobu.mita@gmail.com; lauraa@codeaurora.org; vbabka@suse.cz; sasha.levin@oracle.com; vdavydov@parallels.com; suleiman@google.com
> Cc: linux-kernel@vger.kernel.org; linux-pm@vger.kernel.org; linux-mm@kvack.org; Hui Zhu <zhuhui@xiaomi.com>
> Sent: Friday, 17 October 2014 2:58 PM
> Subject: [PATCH v2 2/4] (CMA_AGGRESSIVE) Add new function shrink_all_memory_for_cma
> 
> Update this patch according to the comments from Rafael.
> 
> Function shrink_all_memory_for_cma try to free `nr_to_reclaim' of memory.
> CMA aggressive shrink function will call this functon to free 
> `nr_to_reclaim' of
> memory.

Instead, we can have in short shrink_cma_memory(nr_to_reclaim).
Sometime back I already proposed to have shrink_memory for CMA here:
http://lists.infradead.org/pipermail/linux-arm-kernel/2013-January/143103.html

Now, I am working on another solution that uses shrink_all_memory().
This can be helpful even for non CMA cases as well to bring back the higher-order pages quickly.
Will post the patches until next week.


> 
> Signed-off-by: Hui Zhu <zhuhui@xiaomi.com>
> ---
> mm/vmscan.c | 58 +++++++++++++++++++++++++++++++++++++++++++---------------
> 1 file changed, 43 insertions(+), 15 deletions(-)
> 
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index dcb4707..658dc8d 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -3404,6 +3404,28 @@ void wakeup_kswapd(struct zone *zone, int order, enum 
> zone_type classzone_idx)
>     wake_up_interruptible(&pgdat->kswapd_wait);
> }
> 
> +#if defined CONFIG_HIBERNATION || defined CONFIG_CMA_AGGRESSIVE
> +static unsigned long __shrink_all_memory(struct scan_control *sc)
> +{
> +    struct reclaim_state reclaim_state;
> +    struct zonelist *zonelist = node_zonelist(numa_node_id(), sc->gfp_mask);
> +    struct task_struct *p = current;
> +    unsigned long nr_reclaimed;
> +
> +    p->flags |= PF_MEMALLOC;
> +    lockdep_set_current_reclaim_state(sc->gfp_mask);
> +    reclaim_state.reclaimed_slab = 0;
> +    p->reclaim_state = &reclaim_state;
> +
> +    nr_reclaimed = do_try_to_free_pages(zonelist, sc);
> +
> +    p->reclaim_state = NULL;
> +    lockdep_clear_current_reclaim_state();
> +    p->flags &= ~PF_MEMALLOC;
> +
> +    return nr_reclaimed;
> +}
> +
> #ifdef CONFIG_HIBERNATION
> /*
>   * Try to free `nr_to_reclaim' of memory, system-wide, and return the 
> number of
> @@ -3415,7 +3437,6 @@ void wakeup_kswapd(struct zone *zone, int order, enum 
> zone_type classzone_idx)
>   */
> unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
> {
> -    struct reclaim_state reclaim_state;
>     struct scan_control sc = {
>         .nr_to_reclaim = nr_to_reclaim,
>         .gfp_mask = GFP_HIGHUSER_MOVABLE,
> @@ -3425,24 +3446,31 @@ unsigned long shrink_all_memory(unsigned long 
> nr_to_reclaim)
>         .may_swap = 1,
>         .hibernation_mode = 1,
>     };
> -    struct zonelist *zonelist = node_zonelist(numa_node_id(), sc.gfp_mask);
> -    struct task_struct *p = current;
> -    unsigned long nr_reclaimed;
> -
> -    p->flags |= PF_MEMALLOC;
> -    lockdep_set_current_reclaim_state(sc.gfp_mask);
> -    reclaim_state.reclaimed_slab = 0;
> -    p->reclaim_state = &reclaim_state;
> 
> -    nr_reclaimed = do_try_to_free_pages(zonelist, &sc);
> +    return __shrink_all_memory(&sc);
> +}
> +#endif /* CONFIG_HIBERNATION */
> 
> -    p->reclaim_state = NULL;
> -    lockdep_clear_current_reclaim_state();
> -    p->flags &= ~PF_MEMALLOC;
> +#ifdef CONFIG_CMA_AGGRESSIVE
> +/*
> + * Try to free `nr_to_reclaim' of memory, system-wide, for CMA aggressive
> + * shrink function.
> + */
> +void shrink_all_memory_for_cma(unsigned long nr_to_reclaim)
> +{
> +    struct scan_control sc = {
> +        .nr_to_reclaim = nr_to_reclaim,
> +        .gfp_mask = GFP_USER | __GFP_MOVABLE | __GFP_HIGHMEM,
> +        .priority = DEF_PRIORITY,
> +        .may_writepage = !laptop_mode,
> +        .may_unmap = 1,
> +        .may_swap = 1,
> +    };
> 
> -    return nr_reclaimed;
> +    __shrink_all_memory(&sc);
> }
> -#endif /* CONFIG_HIBERNATION */
> +#endif /* CONFIG_CMA_AGGRESSIVE */
> +#endif /* CONFIG_HIBERNATION || CONFIG_CMA_AGGRESSIVE */
> 
> /* It's optimal to keep kswapds on the same CPUs as their memory, but
>     not required for correctness.  So if the last cpu in a node goes
> -- 
> 1.9.1
> 
> 
> --
> 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>
>

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

  reply	other threads:[~2014-10-18  4:50 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-16  3:35 [PATCH 0/4] (CMA_AGGRESSIVE) Make CMA memory be more aggressive about allocation Hui Zhu
2014-10-16  3:35 ` [PATCH 1/4] (CMA_AGGRESSIVE) Add CMA_AGGRESSIVE to Kconfig Hui Zhu
2014-10-18 22:15   ` Pavel Machek
     [not found]   ` <201410220126.s9M1Qita026502@spam.xiaomi.com>
2014-10-22  5:44     ` 朱辉
2014-10-16  3:35 ` [PATCH 2/4] (CMA_AGGRESSIVE) Add argument hibernation to function shrink_all_memory Hui Zhu
2014-10-16  8:45   ` Rafael J. Wysocki
2014-10-17  6:18     ` 朱辉
2014-10-17  9:28     ` [PATCH v2 2/4] (CMA_AGGRESSIVE) Add new function shrink_all_memory_for_cma Hui Zhu
2014-10-18  4:50       ` PINTU KUMAR [this message]
2014-10-16  3:35 ` [PATCH 3/4] (CMA_AGGRESSIVE) Update reserve custom contiguous area code Hui Zhu
2014-10-17  9:30   ` [PATCH v2 " Hui Zhu
2014-10-16  3:35 ` [PATCH 4/4] (CMA_AGGRESSIVE) Update page alloc function Hui Zhu
2014-10-24  5:28   ` Joonsoo Kim
2014-11-28  3:45     ` Hui Zhu
2014-10-16  5:13 ` [PATCH 0/4] (CMA_AGGRESSIVE) Make CMA memory be more aggressive about allocation Weijie Yang
2014-10-16  8:55 ` Laura Abbott
2014-10-17  7:44   ` 朱辉
2014-10-22 12:01   ` Peter Hurley
2014-10-23  0:40     ` 朱辉
2014-10-29 14:43   ` Vlastimil Babka
2014-11-03  8:46     ` Hui Zhu
2014-11-04  7:53     ` Minchan Kim
2014-11-04  8:59       ` Hui Zhu
2014-11-04  9:29       ` Vlastimil Babka
2014-11-07  7:06         ` Minchan Kim
2014-10-24  5:25 ` Joonsoo Kim
2014-11-03  7:28   ` Hui Zhu
2014-11-03  8:05     ` Joonsoo Kim
2014-11-04  2:31       ` Joonsoo Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1413607808.82877.YahooMailNeo@web160105.mail.bf1.yahoo.com \
    --to=pintu_agarwal@yahoo.com \
    --cc=akinobu.mita@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=atomlin@redhat.com \
    --cc=axboe@fb.com \
    --cc=ben@decadent.org.uk \
    --cc=ddstreet@ieee.org \
    --cc=deller@gmx.de \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=k.khlebnikov@samsung.com \
    --cc=keescook@chromium.org \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=lauraa@codeaurora.org \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mgorman@suse.de \
    --cc=mina86@mina86.com \
    --cc=minchan@kernel.org \
    --cc=mingo@kernel.org \
    --cc=msalter@redhat.com \
    --cc=n-horiguchi@ah.jp.nec.com \
    --cc=nasa4836@gmail.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=pavel@ucw.cz \
    --cc=peterz@infradead.org \
    --cc=pintu.k@samsung.com \
    --cc=raistlin@linux.it \
    --cc=riel@redhat.com \
    --cc=rientjes@google.com \
    --cc=rjw@rjwysocki.net \
    --cc=sasha.levin@oracle.com \
    --cc=suleiman@google.com \
    --cc=tangchen@cn.fujitsu.com \
    --cc=vbabka@suse.cz \
    --cc=vdavydov@parallels.com \
    --cc=zhuhui@xiaomi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox