All of lore.kernel.org
 help / color / mirror / Atom feed
From: Uladzislau Rezki <urezki@gmail.com>
To: NeilBrown <neilb@suse.de>, Michal Hocko <mhocko@suse.com>
Cc: Uladzislau Rezki <urezki@gmail.com>,
	Michal Hocko <mhocko@suse.com>,
	Linux Memory Management List <linux-mm@kvack.org>,
	Dave Chinner <david@fromorbit.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Christoph Hellwig <hch@infradead.org>,
	linux-fsdevel@vger.kernel.org,
	LKML <linux-kernel@vger.kernel.org>,
	Ilya Dryomov <idryomov@gmail.com>,
	Jeff Layton <jlayton@kernel.org>
Subject: Re: [RFC 2/3] mm/vmalloc: add support for __GFP_NOFAIL
Date: Mon, 25 Oct 2021 11:48:41 +0200	[thread overview]
Message-ID: <20211025094841.GA1945@pc638.lan> (raw)
In-Reply-To: <163485654850.17149.3604437537345538737@noble.neil.brown.name>

On Fri, Oct 22, 2021 at 09:49:08AM +1100, NeilBrown wrote:
> On Thu, 21 Oct 2021, Uladzislau Rezki wrote:
> > > On Thu 21-10-21 21:13:35, Neil Brown wrote:
> > > > On Thu, 21 Oct 2021, Uladzislau Rezki wrote:
> > > > > On Wed, Oct 20, 2021 at 05:00:28PM +0200, Uladzislau Rezki wrote:
> > > > > > >
> > > > > > > On Wed 20-10-21 16:29:14, Uladzislau Rezki wrote:
> > > > > > > > On Wed, Oct 20, 2021 at 4:06 PM Michal Hocko <mhocko@suse.com> wrote:
> > > > > > > [...]
> > > > > > > > > As I've said I am OK with either of the two. Do you or anybody have any
> > > > > > > > > preference? Without any explicit event to wake up for neither of the two
> > > > > > > > > is more than just an optimistic retry.
> > > > > > > > >
> > > > > > > > From power perspective it is better to have a delay, so i tend to say
> > > > > > > > that delay is better.
> > > > > > >
> > > > > > > I am a terrible random number generator. Can you give me a number
> > > > > > > please?
> > > > > > >
> > > > > > Well, we can start from one jiffy so it is one timer tick: schedule_timeout(1)
> > > > > > 
> > > > > A small nit, it is better to replace it by the simple msleep() call: msleep(jiffies_to_msecs(1));
> > > > 
> > > > I disagree.  I think schedule_timeout_uninterruptible(1) is the best
> > > > wait to sleep for 1 ticl
> > > > 
> > > > msleep() contains
> > > >   timeout = msecs_to_jiffies(msecs) + 1;
> > > > and both jiffies_to_msecs and msecs_to_jiffies might round up too.
> > > > So you will sleep for at least twice as long as you asked for, possible
> > > > more.
> > > 
> > > That was my thinking as well. Not to mention jiffies_to_msecs just to do
> > > msecs_to_jiffies right after which seems like a pointless wasting of
> > > cpu cycle. But maybe I was missing some other reasons why msleep would
> > > be superior.
> > >
> > 
> > To me the msleep is just more simpler from semantic point of view, i.e.
> > it is as straight forward as it can be. In case of interruptable/uninteraptable
> > sleep it can be more confusing for people.
> 
> I agree that msleep() is more simple.  I think adding the
> jiffies_to_msec() substantially reduces that simplicity.
> 
> > 
> > When it comes to rounding and possibility to sleep more than 1 tick, it
> > really does not matter here, we do not need to guarantee exact sleeping
> > time.
> > 
> > Therefore i proposed to switch to the msleep().
> 
> If, as you say, the precision doesn't matter that much, then maybe
>    msleep(0)
> which would sleep to the start of the next jiffy.  Does that look a bit
> weird?  If so, the msleep(1) would be ok.
> 
Agree, msleep(1) looks much better rather then converting 1 jiffy to
milliseconds. Result should be the same.

> However now that I've thought about some more, I'd much prefer we
> introduce something like
>     memalloc_retry_wait();
> 
> and use that everywhere that a memory allocation is retried.
> I'm not convinced that we need to wait at all - at least, not when
> __GFP_DIRECT_RECLAIM is used, as in that case alloc_page will either
>   - succeed
>   - make some progress a reclaiming or
>   - sleep
> 
> However I'm not 100% certain, and the behaviour might change in the
> future.  So having one place (the definition of memalloc_retry_wait())
> where we can change the sleeping behaviour if the alloc_page behavour
> changes, would be ideal.  Maybe memalloc_retry_wait() could take a
> gfpflags arg.
> 
At sleeping is required for __get_vm_area_node() because in case of lack
of vmap space it will end up in tight loop without sleeping what is
really bad.

Thanks!

--
Vlad Rezki

  parent reply	other threads:[~2021-10-25  9:48 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-18 11:47 [RFC 0/3] extend vmalloc support for constrained allocations Michal Hocko
2021-10-18 11:47 ` [RFC 1/3] mm/vmalloc: alloc GFP_NO{FS,IO} for vmalloc Michal Hocko
2021-10-19  0:44   ` NeilBrown
2021-10-19  6:59     ` Michal Hocko
2021-10-18 11:47 ` [RFC 2/3] mm/vmalloc: add support for __GFP_NOFAIL Michal Hocko
2021-10-18 16:24   ` kernel test robot
2021-10-18 16:24     ` kernel test robot
2021-10-18 16:48   ` Michal Hocko
2021-10-18 18:15   ` kernel test robot
2021-10-18 18:15     ` kernel test robot
2021-10-19 11:06   ` Uladzislau Rezki
2021-10-19 11:52     ` Michal Hocko
2021-10-19 19:46       ` Uladzislau Rezki
2021-10-20  8:25         ` Michal Hocko
2021-10-20  9:18           ` Michal Hocko
2021-10-20 13:54           ` Uladzislau Rezki
2021-10-20 14:06             ` Michal Hocko
2021-10-20 14:29               ` Uladzislau Rezki
2021-10-20 14:53                 ` Michal Hocko
2021-10-20 15:00                   ` Uladzislau Rezki
2021-10-20 19:24                     ` Uladzislau Rezki
2021-10-21  8:56                       ` Michal Hocko
2021-10-21 10:13                       ` NeilBrown
2021-10-21 10:27                         ` Michal Hocko
2021-10-21 10:40                           ` Uladzislau Rezki
2021-10-21 22:49                             ` NeilBrown
2021-10-22  8:18                               ` Michal Hocko
2021-10-25  9:48                               ` Uladzislau Rezki [this message]
2021-10-25 11:20                                 ` Michal Hocko
2021-10-25 14:30                                   ` Uladzislau Rezki
2021-10-25 14:56                                     ` Michal Hocko
2021-10-25 23:50                                 ` NeilBrown
2021-10-26  7:16                                   ` Michal Hocko
2021-10-26 10:24                                     ` NeilBrown
2021-10-26 14:25                                       ` Uladzislau Rezki
2021-10-26 14:43                                         ` Michal Hocko
2021-10-26 15:40                                           ` Uladzislau Rezki
2021-10-20  8:25   ` [PATCH] mm/vmalloc: be more explicit about supported gfp flags Michal Hocko
2021-10-18 11:47 ` [RFC 3/3] mm: allow !GFP_KERNEL allocations for kvmalloc Michal Hocko

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=20211025094841.GA1945@pc638.lan \
    --to=urezki@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@fromorbit.com \
    --cc=hch@infradead.org \
    --cc=idryomov@gmail.com \
    --cc=jlayton@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=neilb@suse.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.