Open memory.oom_control for reading. Create a file descriptor for notification by doing eventfd(0, 0). Write "<fd of open()> <fd of eventfd()>" to cgroup.event_control.具体怎么使用,请举例子说明
时间: 2024-03-05 14:50:49 浏览: 122
以下是一个使用以上步骤实现cgroup内存限制的例子:
1. 创建一个新的cgroup组,例如mygroup:
```
$ sudo mkdir /sys/fs/cgroup/memory/mygroup
```
2. 设置该cgroup组的内存限制:
```
$ sudo sh -c "echo 100M > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes"
```
这里将mygroup组的内存限制设置为100MB。
3. 打开memory.oom_control文件,以便读取其中的内容:
```
$ sudo cat /sys/fs/cgroup/memory/mygroup/memory.oom_control
```
4. 使用Linux系统调用eventfd()创建一个用于通知的文件描述符:
```
$ sudo sh -c "echo 0 > /sys/fs/cgroup/memory/mygroup/cgroup.event_control"
$ sudo sh -c "echo 1 > /sys/fs/cgroup/memory/mygroup/cgroup.event_control"
```
这里使用eventfd(0, 0)创建一个用于通知的文件描述符,并将其写入cgroup.event_control文件中。
5. 将打开oom_control文件的文件描述符和eventfd创建的文件描述符写入cgroup.event_control文件中:
```
$ sudo sh -c "echo $(cat /sys/fs/cgroup/memory/mygroup/memory.oom_control) $(cat /sys/fs/cgroup/memory/mygroup/cgroup.event_control | cut -d: -f2) > /sys/fs/cgroup/memory/mygroup/cgroup.event_control"
```
这里将打开oom_control文件的文件描述符和eventfd创建的文件描述符写入cgroup.event_control文件中。
现在,当mygroup组中的进程占用的内存超过100MB时,将会触发oom事件,系统会使用eventfd通知cgroup,cgroup再通过oom_control文件中的设置,控制进程的oom行为。
阅读全文