From: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: Aleksa Sarai <cyphar-gVpy/LI/lHzQT0dZR+AlfA@public.gmane.org>
Cc: lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org,
richard-/L3Ra7n9ekc@public.gmane.org,
fweisbec-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v2 2/2] cgroups: add an nproc subsystem
Date: Mon, 2 Mar 2015 10:22:05 -0500 [thread overview]
Message-ID: <20150302152205.GC17694@htj.duckdns.org> (raw)
In-Reply-To: <1425010639-16492-3-git-send-email-cyphar-gVpy/LI/lHzQT0dZR+AlfA@public.gmane.org>
Hello,
On Fri, Feb 27, 2015 at 03:17:19PM +1100, Aleksa Sarai wrote:
> +config CGROUP_NPROC
> + bool "Process number limiting on cgroups"
> + depends on PAGE_COUNTER
> + help
> + This options enables the setting of process number limits in the scope
> + of a cgroup. Any attempt to fork more processes than is allowed in the
> + cgroup will fail. This allows for more basic resource limitation that
> + applies to a cgroup, similar to RLIMIT_NPROC (except that instead of
> + applying to a process tree it applies to a cgroup).
Please reflect the rationale from this discussion thread in the commit
message and help text. Also, I'd much prefer to name it pids
controller after the resource it's controlling.
> +struct nproc {
> + struct page_counter proc_counter;
I don't think it's a good idea to use page_counter outside memcg.
This is pretty much an implementation detail of memcg. The only
reason that file is out there is because of the wacky tcp controller
which is somewhat part of memcg (and to be replaced by proper kmemcg).
Either use plain atomic_t or percpu_counter with controlled batch
value (e.g. upto 10% deviation allowed from the target or sth). Given
that fork/exit is pretty heavy path, just plain atomic_t is prolly
enough.
> +static int nproc_can_attach(struct cgroup_subsys_state *css,
> + struct cgroup_taskset *tset)
> +{
> + struct nproc *nproc = css_nproc(css);
> + unsigned long num_tasks = 0;
> + struct task_struct *task;
> +
> + cgroup_taskset_for_each(task, tset)
> + num_tasks++;
> +
> + return nproc_add_procs(nproc, num_tasks);
> +}
can_attach() can't fail in the unified hierarchy. Circumvention of
configuration by moving processes to children is prevented through
hierarchical limit enforcement.
> +static int nproc_write_limit(struct cgroup_subsys_state *css,
> + struct cftype *cft, u64 val)
> +{
> + struct nproc *nproc = css_nproc(css);
> +
> + return page_counter_limit(&nproc->proc_counter, val);
> +}
Please make it handle "max".
> +static u64 nproc_read_limit(struct cgroup_subsys_state *css,
> + struct cftype *cft)
> +{
> + struct nproc *nproc = css_nproc(css);
> +
> + return nproc->proc_counter.limit;
> +}
Ditto when reading back.
> +static u64 nproc_read_max_limit(struct cgroup_subsys_state *css,
> + struct cftype *cft)
> +{
> + return PAGE_COUNTER_MAX;
> +}
And drop this file.
> +static u64 nproc_read_usage(struct cgroup_subsys_state *css,
> + struct cftype *cft)
> +{
> + struct nproc *nproc = css_nproc(css);
> +
> + return page_counter_read(&nproc->proc_counter);
> +}
> +
> +static struct cftype files[] = {
> + {
> + .name = "limit",
> + .write_u64 = nproc_write_limit,
> + .read_u64 = nproc_read_limit,
> + },
pids.max
> + {
> + .name = "max_limit",
> + .read_u64 = nproc_read_max_limit,
> + },
> + {
> + .name = "usage",
> + .read_u64 = nproc_read_usage,
> + },
pids.current
Thanks.
--
tejun
next prev parent reply other threads:[~2015-03-02 15:22 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-23 3:08 [PATCH RFC 0/2] add nproc cgroup subsystem Aleksa Sarai
2015-02-23 3:08 ` [PATCH RFC 1/2] cgroups: allow a cgroup subsystem to reject a fork Aleksa Sarai
2015-02-23 14:49 ` Peter Zijlstra
2015-02-23 3:08 ` [PATCH RFC 2/2] cgroups: add an nproc subsystem Aleksa Sarai
2015-02-27 11:49 ` [PATCH RFC 0/2] add nproc cgroup subsystem Tejun Heo
[not found] ` <20150227114940.GB3964-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-02-27 13:46 ` Richard Weinberger
[not found] ` <54F07525.4050100-/L3Ra7n9ekc@public.gmane.org>
2015-02-27 13:52 ` Tejun Heo
2015-02-27 16:42 ` Austin S Hemmelgarn
[not found] ` <54F09E62.8000007-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-02-27 17:06 ` Tejun Heo
[not found] ` <20150227170640.GK3964-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-02-27 17:25 ` Tim Hockin
2015-02-27 17:45 ` Tejun Heo
[not found] ` <20150227174503.GM3964-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-02-27 17:56 ` Tejun Heo
2015-02-27 21:45 ` Tim Hockin
2015-02-27 21:49 ` Tejun Heo
[not found] ` <CAAAKZwsCc8BtFx58KMFpRTohU81oCBeGVOPGMJrjJt9q5upKfQ@mail.gmail.com>
2015-02-28 16:57 ` Tejun Heo
[not found] ` <20150228165706.GS3964-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-02-28 22:26 ` Tim Hockin
[not found] ` <CAAAKZwv=idxvrffHx2QyW=PGH4k42ckq-VLJGQrXkeQ6NmByRQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-02-28 22:50 ` Tejun Heo
[not found] ` <20150228225036.GA4597-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-03-01 4:46 ` Tim Hockin
2015-02-28 23:11 ` Johannes Weiner
2015-02-27 18:49 ` Austin S Hemmelgarn
[not found] ` <54F0BC51.4050506-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-02-27 19:35 ` Tejun Heo
2015-02-28 9:26 ` Aleksa Sarai
[not found] ` <CAOviyajSOY6kTiwTA+APf9VGT=Ui=0QQH6KUqwaxHB3ahuJk2g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-02-28 11:59 ` Tejun Heo
[not found] ` <CAAAKZws45c3PhFQMGrm_K+OZV+KOyGV9sXTakHcTfNP1kHxzOQ@mail.gmail.com>
[not found] ` <CAAAKZws45c3PhFQMGrm_K+OZV+KOyGV9sXTakHcTfNP1kHxzOQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-02-28 16:43 ` Tejun Heo
2015-03-02 13:13 ` Austin S Hemmelgarn
[not found] ` <54F461F3.3030903-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-02 13:31 ` Aleksa Sarai
[not found] ` <CAOviyahKJthwLTND51HhaRNB_KJC60T7HFHjdqPZf3pQmAUAhw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-02 13:54 ` Tejun Heo
2015-03-02 13:49 ` Tejun Heo
2015-02-27 17:12 ` Tim Hockin
[not found] ` <CAO_RewbeTbMuqVG5wsui_gHwrdgqjF0KLk6yr5a3bb76VOkofg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-02-27 17:15 ` Tejun Heo
2015-03-04 20:23 ` [PATCH v3 0/2] cgroup: add pids subsystem Aleksa Sarai
2015-03-04 20:23 ` [PATCH v3 1/2] cgroups: allow a cgroup subsystem to reject a fork Aleksa Sarai
2015-03-04 20:23 ` [PATCH v3 2/2] cgroups: add a pids subsystem Aleksa Sarai
2015-03-05 8:39 ` Aleksa Sarai
2015-03-05 14:37 ` Marian Marinov
[not found] ` <1424660891-12719-1-git-send-email-cyphar-gVpy/LI/lHzQT0dZR+AlfA@public.gmane.org>
2015-02-27 4:17 ` [RFC PATCH v2 0/2] add nproc cgroup subsystem Aleksa Sarai
[not found] ` <1425010639-16492-1-git-send-email-cyphar-gVpy/LI/lHzQT0dZR+AlfA@public.gmane.org>
2015-02-27 4:17 ` [PATCH v2 1/2] cgroups: allow a cgroup subsystem to reject a fork Aleksa Sarai
[not found] ` <1425010639-16492-2-git-send-email-cyphar-gVpy/LI/lHzQT0dZR+AlfA@public.gmane.org>
2015-03-09 3:06 ` Tejun Heo
[not found] ` <CAOviyaip7Faz98YWzGoTaXGYVb72sfD+ZL4Xa89reU9+=43jFA@mail.gmail.com>
[not found] ` <20150309065902.GP13283@htj.duckdns.org>
[not found] ` <20150309065902.GP13283-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-03-10 8:19 ` Aleksa Sarai
[not found] ` <CAOviyaj3mf66ho15WrD8qB=ECxKWYTAkWodxWaFVMWeZG4d0FQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-10 12:47 ` Tejun Heo
[not found] ` <20150310124701.GB28730-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-03-10 14:51 ` Aleksa Sarai
[not found] ` <CAOviyai7yJrbGb+uYpK35tw7R-KM0jWQ-BmhpyTqnRFJsVYdUA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-10 15:17 ` Tejun Heo
2015-03-11 5:16 ` Aleksa Sarai
2015-03-11 11:46 ` Tejun Heo
2015-03-11 23:47 ` Aleksa Sarai
[not found] ` <CAOviyaj55Yqahz75Gy5=yjFteeKFp7746=80-Ufww2E62Ads_Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-12 1:25 ` Tejun Heo
2015-02-27 4:17 ` [PATCH v2 2/2] cgroups: add an nproc subsystem Aleksa Sarai
[not found] ` <1425010639-16492-3-git-send-email-cyphar-gVpy/LI/lHzQT0dZR+AlfA@public.gmane.org>
2015-03-02 15:22 ` Tejun Heo [this message]
[not found] ` <20150302152205.GC17694-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-03-09 1:49 ` Zefan Li
[not found] ` <54FCFC39.6050900-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2015-03-09 2:34 ` Tejun Heo
2015-03-06 1:45 ` [PATCH v4 0/2] cgroup: add pids subsystem Aleksa Sarai
2015-03-06 1:45 ` [PATCH v4 1/2] cgroups: allow a cgroup subsystem to reject a fork Aleksa Sarai
[not found] ` <1425606357-6337-1-git-send-email-cyphar-gVpy/LI/lHzQT0dZR+AlfA@public.gmane.org>
2015-03-06 1:45 ` [PATCH v4 2/2] cgroups: add a pids subsystem Aleksa Sarai
[not found] ` <1425606357-6337-3-git-send-email-cyphar-gVpy/LI/lHzQT0dZR+AlfA@public.gmane.org>
2015-03-09 3:34 ` Tejun Heo
[not found] ` <20150309033405.GE13283-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2015-03-09 3:39 ` Tejun Heo
2015-03-09 18:58 ` Austin S Hemmelgarn
[not found] ` <54FDED43.4050908-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-09 19:51 ` Tejun Heo
2015-03-10 8:10 ` Aleksa Sarai
2015-03-10 11:32 ` Austin S Hemmelgarn
[not found] ` <54FED651.6040100-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-10 12:31 ` Aleksa Sarai
[not found] ` <CAOviyagpCNcAN4hdhsxffdpE+yDmw+NXx+FikTe64GJ1hQeXhQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-03-11 15:13 ` Austin S Hemmelgarn
[not found] ` <55005BAC.9060405-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-12 2:28 ` Aleksa Sarai
2015-03-12 15:35 ` Austin S Hemmelgarn
2015-03-12 3:47 ` Tejun Heo
2015-03-09 3:08 ` [PATCH v4 0/2] cgroup: add " 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=20150302152205.GC17694@htj.duckdns.org \
--to=tj-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=cyphar-gVpy/LI/lHzQT0dZR+AlfA@public.gmane.org \
--cc=fweisbec-Re5JQEeQqe8AvxtiuMwx3w@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=richard-/L3Ra7n9ekc@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