From: Jens Axboe <axboe@kernel.dk>
To: Michal Hocko <mhocko@kernel.org>
Cc: linux-mm <linux-mm@kvack.org>
Subject: Re: schedule/sleep over mmget()
Date: Fri, 19 Jun 2020 07:59:59 -0600 [thread overview]
Message-ID: <f4017246-f93f-1c8e-4efe-707a6e7915cd@kernel.dk> (raw)
In-Reply-To: <20200619114313.GC12177@dhcp22.suse.cz>
On 6/19/20 5:43 AM, Michal Hocko wrote:
> On Thu 18-06-20 09:20:40, Jens Axboe wrote:
>> Hi,
>>
>> Got a question that I couldn't immediately find an answer to. io_uring
>> currently jumps through a few hoops to avoid holding a process mm over
>> schedule, and it doesn't look like that's necessary.
>>
>> Is it fine for a kthread to do mmget/kthread_use_mm at the start, and
>> only put/unuse when it exits? Or is it more prudent to drop/re-acquire
>> over schedule for potential longer periods of idleness?
>
> Pinning the address space for a long time is not really ideal. This
> would prevent quite a lot of memory to be released when the primary
> owner of the address space goes away (willingly or by the OOM killer).
> Our documentation says
> * Never use this function to pin this address space for an
> * unbounded/indefinite amount of time.
OK, and that's what I've been adhering to. BTW, while checking for this,
the use case in drivers/vhost/vhost.c does not seem to be playing nice.
> If you know the kthread is not going to use the mm for some time just
> pin the mm struct itsef by mmgrab() and then mmget_not_zero() to get the
> address space for your use again.
Yep, that's what I'm currently doing. The "normal" io_uring case is that
when the process exits, the ring goes away anyway. So for most setups,
we should be fine pinning it, but there are also setups where that's not
the case.
--
Jens Axboe
prev parent reply other threads:[~2020-06-19 14:00 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-18 15:20 Jens Axboe
2020-06-19 11:43 ` Michal Hocko
2020-06-19 13:59 ` Jens Axboe [this message]
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=f4017246-f93f-1c8e-4efe-707a6e7915cd@kernel.dk \
--to=axboe@kernel.dk \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
/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