Messages in this thread | | | From | kamezawa.hiroyu@jp ... | Date | Sat, 19 Jul 2008 08:05:07 +0900 (JST) | Subject | Re: Re: [RFC] How to handle the rules engine for cgroups |
| |
----- Original Message ----- >On Fri, Jul 18, 2008 at 2:52 AM, KAMEZAWA Hiroyuki ><kamezawa.hiroyu@jp.fujitsu.com> wrote: >> >> For example, create a new file under memory cgroup >> == >> /opt/memory_cgroup/group_A/notify_at_memory_reach_limit >> == >> And a user watches the file by inotify. >> The kernel modify modified-time of notify_at_memory_reach_limit file and ca ll >> fs/notify_user.c::notify_change() against this inode. He can catchthe event >> by inotify. >> (I think he can also catch removal of this file, etc...) >> > >We've been doing something like this to handle OOMs in userspace, with >pretty good success. The approach that we used so far was a custom >control file tied to a wait queue, that gets woken when a cgroup >triggers OOM, but it's a bit hacky. I've been considering some kind of >more generic approach that could be reused by different subsystems for >other notifications, maybe using eventfd or maybe netlink. > Hmm, eventfd is AIO's one ? Anyway I agree we need something generic. (hopefully, reuse existing one.)
>inotify would be an option too, but that seems like it might be >forcing ourselves into filesystem semantics too much. > At quick glance, Inotify's good points are
- can be used for any file. for example, even changes in "tasks" file can be cathced if it modify modified-time. - It can be queued. - It supports ONESHOT, NONBLOCK, etc... - All memory allocation is done by the waiter (the user).
But yes, we cannot notify other events than "there is some change".
Thanks, -Kame >Paul
| |