cgroups.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Paul Turner <pjt-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Cc: Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
	Ingo Molnar <mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>,
	lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
	cgroups <cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	kernel-team <kernel-team-b10kYP2dOMg@public.gmane.org>,
	Linus Torvalds
	<torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
	Andrew Morton
	<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Subject: Re: [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy
Date: Tue, 18 Aug 2015 13:31:17 -0700	[thread overview]
Message-ID: <20150818203117.GC15739@mtj.duckdns.org> (raw)
In-Reply-To: <CAPM31R+5=4bGQo++PrYoFuS86_7JqhhQ0OtPvCYooAzJsvhb=w@mail.gmail.com>

Hello, Paul.

On Mon, Aug 17, 2015 at 09:03:30PM -0700, Paul Turner wrote:
> > 2) Control within an address-space.  For subsystems with fungible resources,
> > e.g. CPU, it can be useful for an address space to partition its own
> > threads.  Losing the capability to do this against the CPU controller would
> > be a large set-back for instance.  Occasionally, it is useful to share these
> > groupings between address spaces when processes are cooperative, but this is
> > less of a requirement.
> >
> > This is important to us.

Sure, let's build a proper interface for that.  Do you actually need
sub-hierarchy inside a process?  Can you describe your use case in
detail and why having hierarchical CPU cycle distribution is essential
for your use case?

> >> And that's one of the major fuck ups on cgroup's part that must be
> >> rectified.  Look at the interface being proposed there.  It's exposing
> >> direct hardware details w/o much abstraction which is fine for a
> >> system management interface but at the same time it's intended to be
> >> exposed to individual applications.
> >
> > FWIW this is something we've had no significant problems managing with
> > separate mount mounts and file system protections.  Yes, there are some
> > potential warts around atomicity; but we've not found them too onerous.

You guys control the whole stack.  Of course, you can get away with an
interface which are pretty messed up in terms of layering and
isolation; however, generic kernel interface cannot be designed
according to that standard.

> > What I don't quite follow here is the assumption that CAT should would be
> > necessarily exposed to individual applications? What's wrong with subsystems
> > that are primarily intended only for system management agents, we already
> > have several of these.

Why would you assume that threads of a process wouldn't want to
configure it ever?  How is this different from CPU affinity?

> >> This lack of distinction makes
> >> people skip the attention that they should be paying when they're
> >> designing interface exposed to individual programs.  Worse, this makes
> >> these things fly under the review scrutiny that public API accessible
> >> to applications usually receives.  Yet, that's what these things end
> >> up to be.  This just has to stop.  cgroups can't continue to be this
> >> ghetto shortcut to implementing half-assed APIs.
> >
> > I certainly don't disagree on this point :).  But as above, I don't quite
> > follow why an API being in cgroups must mean it's accessible to an
> > application controlled by that group.  This has certainly not been a
> > requirement for our use.

I don't follow what you're trying to way with the above paragraph.
Are you still talking about CAT?  If so, that use case isn't the only
one.  I'm pretty sure there are people who would want to configure
cache allocation at thread level.

> >> What we should be doing is pushing them into the same arena as any
> >> other publicly accessible API.  I don't think there can be a shortcut
> >> to this.
> >
> > Are you explicitly opposed to non-hierarchical partitions, however?  Cpuset
> > is [typically] an example of this, where the interface wants to control
> > unified properties across a set of processes.  Without necessarily being
> > usefully hierarchical.  (This is just to understand your core position, I'm
> > not proposing cpuset should shape *anything*.)

I'm having trouble following what you're trying to say.  FWIW, cpuset
is fully hierarchical.

> >> I don't think we want migration in sub-process hierarchy but in the
> >> off chance we do the naming can follow the same pid/program
> >> group/session id scheme, which, again, is a lot easier to deal with
> >> from applications.
> >
> > I don't have many objections with hand-off versus migration above, however,
> > I think that this is a big drawback.  Threads are expensive to create and
> > are often cached rather than released.  While migration may be expensive,
> > creating a more thread is more so.  The important to reconfigure a thread's
> > personality at run-time is important.

The core problem here is picking the hot path.  If cgroups as a whole
doesn't pick a position here, controllers have to assume that
migration might not be a very cold path which naturally leads to
overall designs and synchronization schemes which concede hot path
performance to accomodate migration.  We simply can't afford to do
that - we end up losing way more in way hotter paths for something
which may be marginally useful in some corner cases.

So, this is a trade-off we're consciously making.  If there are
common-enough use cases which require jumping across different cgroup
domains, we'll try to figure out a way to accomodate those but by
default migration is a very cold and expensive path.

> >> But those are relative to the current directory per operation and
> >> there's no way to define a transaction across multiple file
> >> operations.  There's no way to prevent a process from being migrated
> >> inbetween openat() and subsequent write().
> >
> > A forwarding /proc/thread_self/cgroup accessor, or similar, would be another
> > way to address some of these issues.

That sounds horrible to me.  What if the process wants to do RMW a
config?  What if the permissions are different after an intervening
migration?  What if the sub-hierarchy no longer exists or has been
replaced by a hierarchy with the same topology but actualy is a
different one?

> > I don't quite agree here.  Losing per-thread control within the cpu
> > controller is likely going to mean that much of it ends up being
> > reimplemented as some duplicate-in-appearance interface that gets us back to
> > where we are today.  I recognize that these controllers (cpu, cpuacct) are
> > square pegs in that per-process makes sense for most other sub-systems; but
> > unfortunately, their needs and use-cases are real / dependent on their
> > present form.

Let's build an API which actually looks and behaves like an API which
is properly isolated from what external agents may do to the process.
I can't see how that would be "back to where we are today".  All of
those are pretty critical attributes for a public kernel API and
utterly broken right now.

Thanks.

-- 
tejun

  reply	other threads:[~2015-08-18 20:31 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-03 22:41 [PATCHSET sched,cgroup] sched: Implement interface for cgroup unified hierarchy Tejun Heo
2015-08-03 22:41 ` [PATCH 1/3] cgroup: define controller file conventions Tejun Heo
2015-08-04  8:48   ` Peter Zijlstra
2015-08-04 14:53     ` Tejun Heo
     [not found]   ` <1438641689-14655-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2015-08-04  8:42     ` Peter Zijlstra
     [not found]       ` <20150804084257.GJ25159-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2015-08-04 14:51         ` Tejun Heo
2015-08-04 19:31     ` [PATCH v2 " Tejun Heo
     [not found]       ` <20150804193101.GI17598-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-05  0:39         ` Kamezawa Hiroyuki
2015-08-05  7:47           ` Michal Hocko
2015-08-06  2:30             ` Kamezawa Hiroyuki
     [not found]               ` <55C2C6B0.3080203-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2015-08-07 18:17                 ` Michal Hocko
2015-08-17 22:04                   ` Johannes Weiner
2015-08-17 21:34         ` Johannes Weiner
2015-08-03 22:41 ` [PATCH 2/3] sched: Misc preps for cgroup unified hierarchy interface Tejun Heo
2015-08-03 22:41 ` [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy Tejun Heo
2015-08-04  9:07   ` Peter Zijlstra
2015-08-04 15:10     ` Tejun Heo
     [not found]       ` <20150804151017.GD17598-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-05  9:10         ` Peter Zijlstra
     [not found]           ` <20150805091036.GT25159-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2015-08-05 14:31             ` Tejun Heo
     [not found]               ` <20150805143132.GK17598-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-17 20:35                 ` Tejun Heo
     [not found]               ` <CAPM31RJTf0v=2v90kN6-HM9xUGab_k++upO0Ym=irmfO9+BbFw@mail.gmail.com>
2015-08-18  4:03                 ` Paul Turner
2015-08-18 20:31                   ` Tejun Heo [this message]
2015-08-18 23:39                     ` Kamezawa Hiroyuki
2015-08-19 16:23                       ` Tejun Heo
     [not found]                     ` <20150818203117.GC15739-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-19  3:23                       ` Mike Galbraith
     [not found]                         ` <1439954620.3479.30.camel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-19 16:41                           ` Tejun Heo
2015-08-20  4:00                             ` Mike Galbraith
     [not found]                               ` <1440043259.3515.84.camel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-20  7:52                                 ` Tejun Heo
     [not found]                                   ` <20150820075232.GA27917-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-20  8:47                                     ` Mike Galbraith
2015-08-21 19:26                       ` Paul Turner
2015-08-22 18:29                         ` Tejun Heo
     [not found]                           ` <20150822182916.GE20768-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-24 15:47                             ` Austin S Hemmelgarn
2015-08-24 17:04                               ` Tejun Heo
     [not found]                                 ` <20150824170427.GA27262-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-24 19:18                                   ` Mike Galbraith
2015-08-24 20:00                                   ` Austin S Hemmelgarn
     [not found]                                     ` <55DB77F1.5080802-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-24 20:25                                       ` Tejun Heo
2015-08-24 21:00                                         ` Paul Turner
     [not found]                                           ` <CAPM31R+ckFO5vNG4L5+h-yokFaZQz6kHe5a+pkRCfbL0H+NjXg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-24 21:12                                             ` Tejun Heo
     [not found]                                               ` <20150824211238.GI28944-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-24 21:15                                                 ` Paul Turner
2015-08-24 20:54                                   ` Paul Turner
     [not found]                                     ` <CAPM31RJi07qs42YsH=4JQSbZ+J-zCLv8e7yELb3tF_qAZmLqRA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-24 21:02                                       ` Tejun Heo
2015-08-24 21:10                                         ` Paul Turner
     [not found]                                           ` <CAPM31R+i7BD8x9h_6wZVTa0zCB7XP0SGL5dSA-n6h9PTeAEhug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-24 21:17                                             ` Tejun Heo
     [not found]                                               ` <20150824211707.GJ28944-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-24 21:19                                                 ` Paul Turner
     [not found]                                                   ` <CAPM31R+vt1oAPCB-q6570RqZtJVBu5MH=gcQD2m9mjauStV7MA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-24 21:40                                                     ` Tejun Heo
2015-08-24 22:03                                                       ` Paul Turner
     [not found]                                                         ` <CAPM31R+Mnk=AL6h05eMMQvPEEfnjkB3iGb+oZj28jAQ9-ajOxA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-24 22:49                                                           ` Tejun Heo
     [not found]                                                             ` <20150824224936.GO28944-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-24 23:15                                                               ` Paul Turner
2015-08-25  2:36                                                                 ` Kamezawa Hiroyuki
     [not found]                                                                   ` <55DBD4A9.7080603-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2015-08-25 21:13                                                                     ` Tejun Heo
2015-08-25  9:24                                                                 ` Ingo Molnar
     [not found]                                                                   ` <20150825092441.GA24131-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-08-25 10:00                                                                     ` Peter Zijlstra
2015-08-25 19:18                                                                 ` Tejun Heo
2015-08-24 20:52                           ` Paul Turner
2015-08-24 21:36                             ` Tejun Heo
2015-08-24 21:58                               ` Paul Turner
     [not found]                                 ` <CAPM31RKCO-yxtVf+iUs8FOqk6uGSyixEXtx9zSzxQ1uOGtkDqQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-24 22:19                                   ` Tejun Heo
     [not found]                                     ` <20150824221935.GN28944-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-08-24 23:06                                       ` Paul Turner
     [not found]                                         ` <CAPM31RK08pC3g9qx+TEw6PQvtHk8idKE3OALQN8cFr_QOuT3FA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-25 21:02                                           ` Tejun Heo
     [not found]                                             ` <20150825210234.GE26785-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-09-02 17:03                                               ` Tejun Heo
2015-09-09 12:49                                               ` Paul Turner
     [not found]                                                 ` <CAPM31RJvrPL7S37=yhxMA5OGUFNUfPurTZ21nfH6eFRb15ZGtw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-12 14:40                                                   ` Tejun Heo
     [not found]                                                     ` <20150912144007.GA8942-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-09-17 14:35                                                       ` Peter Zijlstra
     [not found]                                                         ` <20150917143527.GJ3604-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2015-09-17 14:53                                                           ` Tejun Heo
2015-09-17 15:42                                                             ` Peter Zijlstra
2015-09-17 15:10                                                           ` Peter Zijlstra
     [not found]                                                             ` <20150917151049.GB11639-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2015-09-17 15:52                                                               ` Tejun Heo
     [not found]                                                                 ` <20150917155245.GF7205-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-09-17 15:53                                                                   ` Peter Zijlstra
2015-09-17 23:29                                                       ` Tejun Heo
2015-09-18 11:27                                                       ` Paul Turner
     [not found]                                                         ` <CAPM31RLAtuaDbE9+nvMvgMB8zaOpxVcriCyE9qqszNM3XXTo5Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-10-01 18:46                                                           ` Tejun Heo
2015-10-15 11:42                                                             ` Paul Turner
     [not found]                                                               ` <CAPM31RKx0vT-9VFN=XASYM4iv4U5ZGZW93XRtJd_7mOHwu76NA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-10-23 22:21                                                                 ` Tejun Heo
2015-10-24  4:36                                                                   ` Mike Galbraith
2015-10-25  2:18                                                                     ` Tejun Heo
     [not found]                                                                       ` <20151025021829.GA15471-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-10-25  3:43                                                                         ` Mike Galbraith
     [not found]                                                                           ` <1445744613.3180.60.camel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-10-27  3:16                                                                             ` Tejun Heo
     [not found]                                                                               ` <20151027031656.GA11962-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-10-27  5:42                                                                                 ` Mike Galbraith
     [not found]                                                                                   ` <1445924531.2909.79.camel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-10-27  5:46                                                                                     ` Tejun Heo
2015-10-27  5:56                                                                                       ` Mike Galbraith
     [not found]                                                                                         ` <1445925402.2909.86.camel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-10-27  6:00                                                                                           ` Tejun Heo
     [not found]                                                                                             ` <20151027060027.GA2888-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2015-10-27  6:08                                                                                               ` Mike Galbraith
2015-10-25  3:54                                                                       ` Linus Torvalds
     [not found]                                                                         ` <CA+55aFzMdG5VPA0ZvoFANj-H-7LHeu=JUvvqPykF_w5Nd0pnSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-10-25  9:33                                                                           ` Ingo Molnar
     [not found]                                                                             ` <20151025093331.GA4834-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-10-25 10:41                                                                               ` Theodore Ts'o
2015-10-25 10:47                                                                                 ` Florian Weimer
     [not found]                                                                                   ` <562CB328.3090906-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-10-25 11:58                                                                                     ` Theodore Ts'o
2015-10-25 13:17                                                                                       ` Florian Weimer
2015-10-25 13:40                                                                                         ` Getrandom wrapper Theodore Ts'o
2015-10-26 13:32                                                                                           ` Florian Weimer
2015-10-26 14:10                                                                                         ` [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy Peter Zijlstra
     [not found]   ` <1438641689-14655-4-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2015-08-04 19:32     ` [PATCH v2 " Tejun Heo

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=20150818203117.GC15739@mtj.duckdns.org \
    --to=tj-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
    --cc=kernel-team-b10kYP2dOMg@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org \
    --cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
    --cc=pjt-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.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;
as well as URLs for NNTP newsgroup(s).