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:
  1. Using the eventfd() function, create a file descriptor for event notifications. For more information, refer to the eventfd(2) man page.
  2. To monitor the memory.oom_control file, open it using the open() function. For more information, refer to the open(2) man page.
  3. Use the write() function to write the following arguments to the cgroup.event_control file of the cgroup whose memory.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 the write(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”.