2.13. 通知 API の使用

cgroup の通知 API により、ユーザースペースアプリケーションは cgroup のステータス変更についての通知を受信することができます。現在、通知 API は Out of Memory (OOM) 制御ファイルのモニタリングのみをサポートしています: memory.oom_control。通知ハンドラーを作成するには、以下の手順にしたがって、C プログラムを作成します。
  1. eventfd() 関数を使用して、イベント通知のファイル記述子を作成します。詳しくは、eventfd(2) の man ページを参照してください。
  2. memory.oom_control ファイルをモニタリングするには、open() 関数を使用して開きます。詳しくは open(2) の man ページを参照してください。
  3. モニタリングする memory.oom_control ファイルの cgroup の cgroup.event_control ファイルに以下の引数を書き込むには、write() 関数を使用します。
    <event_file_descriptor> <OOM_control_file_descriptor>
    ここで、
    • cgroup.event_control ファイルを開くには、event_file_descriptor を使用します。
    • 適切な memory.oom_control ファイルを開くには、OOM_control_file_descriptor を使用します。
    ファイルへの書き込みについての詳しい情報は、write(1) の man ページを参照してください。
上記のプログラムが起動すると、モニタリング対象の cgroup 内の OOM 状態が通知されます。OOM 通知は、root 以外の cgroup でしか機能しない点に注意してください。
memory.oom_control の調節可能なパラメーターについての詳しい情報は、「memory」 を参照してください。OOM 制御の通知設定についての詳しい情報は、例3.3「OOM の制御と通知」 を参照してください。