2009-11-26 16:27:52

by Kirill A. Shutemov

[permalink] [raw]
Subject: [PATCH RFC v0 0/3] cgroup notifications API and memory thresholds

It's my first attempt to implement cgroup notifications API and memory
thresholds on top of it. The idea of API was proposed by Paul Menage.

It lacks some important features and need more testing, but I want publish
it as soon as possible to get feedback from community.

TODO:
- memory thresholds on root cgroup;
- memsw support;
- documentation.

Kirill A. Shutemov (3):
cgroup: implement eventfd-based generic API for notifications
res_counter: implement thresholds
memcg: implement memory thresholds

include/linux/cgroup.h | 8 ++
include/linux/res_counter.h | 44 +++++++++++
kernel/cgroup.c | 181 ++++++++++++++++++++++++++++++++++++++++++-
kernel/res_counter.c | 4 +
mm/memcontrol.c | 149 +++++++++++++++++++++++++++++++++++
5 files changed, 385 insertions(+), 1 deletions(-)


2009-11-26 16:28:03

by Kirill A. Shutemov

[permalink] [raw]
Subject: [PATCH RFC v0 1/3] cgroup: implement eventfd-based generic API for notifications

This patch introduces write-only file "cgroup.event_control" in every
cgroup.

To register new notification handler you need:
- create an eventfd;
- open a control file to be monitored. Callbacks register_event() and
unregister_event() must be defined for the control file;
- write "<event_fd> <control_fd> <args>" to cgroup.event_control.
Interpretation of args is defined by control file implementation;

eventfd will be woken up by control file implementation or when the
cgroup is removed.

To unregister notification handler just close eventfd.

Signed-off-by: Kirill A. Shutemov <[email protected]>

--
1.6.5.3

2009-11-26 16:28:04

by Kirill A. Shutemov

[permalink] [raw]
Subject: [PATCH RFC v0 2/3] res_counter: implement thresholds

It allows to setup two thresholds: one above current usage and one
below. Callback threshold_notifier() will be called if a threshold is
crossed.

Signed-off-by: Kirill A. Shutemov <[email protected]>

--
1.6.5.3

2009-11-26 16:28:34

by Kirill A. Shutemov

[permalink] [raw]
Subject: [PATCH RFC v0 3/3] memcg: implement memory thresholds

It allows to register multiple memory thresholds and gets notifications
when it crosses.

To register a threshold application need:
- create an eventfd;
- open file memory.usage_in_bytes of a cgroup
- write string "<event_fd> <memory.usage_in_bytes> <threshold>" to
cgroup.event_control.

Application will be notified through eventfd when memory usage crosses
threshold in any direction.

Signed-off-by: Kirill A. Shutemov <[email protected]>

--
1.6.5.3

2009-11-26 17:02:46

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH RFC v0 0/3] cgroup notifications API and memory thresholds

Kirill A. Shutemov wrote:
> It's my first attempt to implement cgroup notifications API and memory
> thresholds on top of it. The idea of API was proposed by Paul Menage.
>
> It lacks some important features and need more testing, but I want publish
> it as soon as possible to get feedback from community.
>
> TODO:
> - memory thresholds on root cgroup;
> - memsw support;
> - documentation.
>
Maybe it would be interesting to do that for the /cgroup/<name>/tasks by
sending in the event the number of tasks in the cgroup when it changes,
so it more easy to detect 0 process event and then remove the cgroup
directory, no ?

2009-11-26 17:03:09

by Balbir Singh

[permalink] [raw]
Subject: Re: [PATCH RFC v0 3/3] memcg: implement memory thresholds

On Thu, Nov 26, 2009 at 9:57 PM, Kirill A. Shutemov
<[email protected]> wrote:
> It allows to register multiple memory thresholds and gets notifications
> when it crosses.
>
> To register a threshold application need:
> - create an eventfd;
> - open file memory.usage_in_bytes of a cgroup
> - write string "<event_fd> <memory.usage_in_bytes> <threshold>" to
> ?cgroup.event_control.
>
> Application will be notified through eventfd when memory usage crosses
> threshold in any direction.
>
> Signed-off-by: Kirill A. Shutemov <[email protected]>
>

I don't see the patches attached or inlined in the emails that follow

Balbir

2009-11-26 17:11:48

by Kirill A. Shutemov

[permalink] [raw]
Subject: Re: [PATCH RFC v0 3/3] memcg: implement memory thresholds

On Thu, Nov 26, 2009 at 7:03 PM, Balbir Singh <[email protected]> wrote:
> On Thu, Nov 26, 2009 at 9:57 PM, Kirill A. Shutemov
> <[email protected]> wrote:
>> It allows to register multiple memory thresholds and gets notifications
>> when it crosses.
>>
>> To register a threshold application need:
>> - create an eventfd;
>> - open file memory.usage_in_bytes of a cgroup
>> - write string "<event_fd> <memory.usage_in_bytes> <threshold>" to
>>  cgroup.event_control.
>>
>> Application will be notified through eventfd when memory usage crosses
>> threshold in any direction.
>>
>> Signed-off-by: Kirill A. Shutemov <[email protected]>
>>
>
> I don't see the patches attached or inlined in the emails that follow

Sorry. Resent.

2009-11-26 18:38:26

by Kirill A. Shutemov

[permalink] [raw]
Subject: Re: [PATCH RFC v0 0/3] cgroup notifications API and memory thresholds

On Thu, Nov 26, 2009 at 7:02 PM, Daniel Lezcano <[email protected]> wrote:
> Kirill A. Shutemov wrote:
>>
>> It's my first attempt to implement cgroup notifications API and memory
>> thresholds on top of it. The idea of API was proposed by Paul Menage.
>>
>> It lacks some important features and need more testing, but I want publish
>> it as soon as possible to get feedback from community.
>>
>> TODO:
>>  - memory thresholds on root cgroup;
>>  - memsw support;
>>  - documentation.
>>
>
> Maybe it would be interesting to do that for the /cgroup/<name>/tasks by
> sending in the event the number of tasks in the cgroup when it changes, so
> it more easy to detect 0 process event and then remove the cgroup directory,
> no ?

I'll do it later.