linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Shawn Landden <slandden@gmail.com>
To: Colin Walters <walters@verbum.org>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org
Subject: Re: [RFC] EPOLL_KILLME: New flag to epoll_wait() that subscribes process to death row (new syscall)
Date: Wed, 1 Nov 2017 12:05:07 -0700	[thread overview]
Message-ID: <CA+49okqRFoRUPvgFsOvYv7Y=fjS55vphw=WYN1bvFm0tcBYv4g@mail.gmail.com> (raw)
In-Reply-To: <1509549397.2561228.1158168688.4CFA4326@webmail.messagingengine.com>

[-- Attachment #1: Type: text/plain, Size: 1631 bytes --]

On Wed, Nov 1, 2017 at 8:16 AM, Colin Walters <walters@verbum.org> wrote:

>
>
> On Wed, Nov 1, 2017, at 01:32 AM, Shawn Landden wrote:
> > It is common for services to be stateless around their main event loop.
> > If a process passes the EPOLL_KILLME flag to epoll_wait5() then it
> > signals to the kernel that epoll_wait5() may not complete, and the kernel
> > may send SIGKILL if resources get tight.
> >
>
> I've thought about something like this in the past too and would love
> to see it land.  Bigger picture, this also comes up in (server) container
> environments, see e.g.:
>
> https://docs.openshift.com/container-platform/3.3/admin_
> guide/idling_applications.html
>
> There's going to be a long slog getting apps to actually make use
> of this, but I suspect if it gets wrapped up nicely in some "framework"
> libraries for C/C++, and be bound in the language ecosystems like golang
> we could see a fair amount of adoption on the order of a year or two.
>
> However, while I understand why it feels natural to tie this to epoll,
> as the maintainer of glib2 which is used by a *lot* of things; I'm not
> sure we're going to port to epoll anytime soon.
>
> Why not just make this a prctl()?  It's not like it's really any less racy
> to do:
>
> prctl(PR_SET_IDLE)
> epoll()
>
> and this also allows:
>
> prctl(PR_SET_IDLE)
> poll()
>
> And as this is most often just going to be an optional hint it's easier to
> e.g. just ignore EINVAL
> from the prctl().
>
This solves the issue of epoll_pwait() already having the maximum number of
arguments (6). But what if you want multiple epoll_wait()s in multiple
threads?

[-- Attachment #2: Type: text/html, Size: 2266 bytes --]

  parent reply	other threads:[~2017-11-01 19:05 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-01  5:32 Shawn Landden
2017-11-01 14:04 ` Matthew Wilcox
2017-11-01 15:16 ` Colin Walters
2017-11-01 15:22   ` Colin Walters
2017-11-03  9:22     ` peter enderborg
2017-11-01 19:02   ` Shawn Landden
2017-11-01 19:37     ` Colin Walters
2017-11-01 19:43       ` Shawn Landden
2017-11-01 20:54       ` Shawn Landden
2017-11-02 15:24       ` Shawn Paul Landden
2017-11-01 19:05   ` Shawn Landden [this message]
2017-11-01 22:10 ` Tetsuo Handa
2017-11-02  7:36   ` Shawn Landden
2017-11-02 15:45 ` Michal Hocko
2017-11-03  6:35 ` [RFC v2] prctl: prctl(PR_SET_IDLE, PR_IDLE_MODE_KILLME), for stateless idle loops Shawn Landden
2017-11-03  9:09   ` Michal Hocko
2017-11-18  4:45     ` Shawn Landden
2017-11-19  4:19       ` Matthew Wilcox
2017-11-20  8:35       ` Michal Hocko
2017-11-21  4:48         ` Shawn Landden
2017-11-21  7:05           ` Michal Hocko
2017-11-18 20:33     ` Shawn Landden
2017-11-21  4:49   ` [RFC v3] It is common for services to be stateless around their main event loop. If a process sets PR_SET_IDLE to PR_IDLE_MODE_KILLME then it signals to the kernel that epoll_wait() and friends may not complete, and the kernel may send SIGKILL if resources get tight Shawn Landden
2017-11-21  4:56     ` Shawn Landden
2017-11-21  5:16     ` [RFC v4] " Shawn Landden
2017-11-21  5:26       ` Shawn Landden
2017-11-21  9:14       ` Thomas Gleixner
2017-11-22 10:29   ` [RFC v2] prctl: prctl(PR_SET_IDLE, PR_IDLE_MODE_KILLME), for stateless idle loops peter enderborg

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='CA+49okqRFoRUPvgFsOvYv7Y=fjS55vphw=WYN1bvFm0tcBYv4g@mail.gmail.com' \
    --to=slandden@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=walters@verbum.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