2.13. Using the Notification API
The cgroups notification API allows user space applications to receive notifications about the changing status of a cgroup. Currently, the notification API only supports monitoring of the Out of Memory (OOM) control file:
memory.oom_control
. To create a notification handler, write a C program using the following instructions:
- Using the
eventfd()
function, create a file descriptor for event notifications. For more information, refer to theeventfd(2)
man page. - To monitor the
memory.oom_control
file, open it using theopen()
function. For more information, refer to theopen(2)
man page. - Use the
write()
function to write the following arguments to thecgroup.event_control
file of the cgroup whosememory.oom_control
file you are monitoring:<event_file_descriptor> <OOM_control_file_descriptor>
where:- event_file_descriptor is used to open the
cgroup.event_control
file, - and OOM_control_file_descriptor is used to open the respective
memory.oom_control
file.
For more information on writing to a file, refer to thewrite(1)
man page.
When the above program is started, it will be notified of any OOM situation in the cgroup it is monitoring. Note that OOM notifications only work in non-root cgroups.
For more information on the
memory.oom_control
tunable parameter, refer to Section 3.7, “memory”. For more information on configuring notifications for OOM control, refer to Example 3.3, “OOM Control and Notifications”.