在CentOS中,使用cgroups(control groups)可以限制、记录和隔离进程组的资源(CPU、内存、磁盘I/O等)
首先,确保已经安装了cgroup-tools。如果没有,请使用以下命令安装:
sudo yum install cgroup-tools
接下来,创建一个新的cgroup。例如,我们将创建一个名为my_cgroup的cgroup:
sudo cgcreate -g memory:/my_cgroup
这将创建一个名为my_cgroup的内存cgroup。
要设置cgroup的资源限制,您需要编辑相应的配置文件。在我们的例子中,我们将设置内存限制。编辑/sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes文件:
echo "100M" | sudo tee /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes
这将把my_cgroup的内存限制设置为100MB。
要将进程添加到cgroup,您需要知道进程的PID。使用ps或pgrep命令找到PID。例如,假设我们要将PID为12345的进程添加到my_cgroup:
echo 12345 | sudo tee /sys/fs/cgroup/memory/my_cgroup/cgroup.procs
现在,PID为12345的进程将在my_cgroup的限制下运行。
要调整cgroup中的ulimit,您需要在相应的cgroup配置文件中设置资源限制。例如,要调整文件描述符限制,您可以编辑/sys/fs/cgroup/memory/my_cgroup/memory.kmem.limit_in_bytes文件:
echo "2097152" | sudo tee /sys/fs/cgroup/memory/my_cgroup/memory.kmem.limit_in_bytes
这将把my_cgroup的文件描述符限制设置为2048。
要监控cgroup的资源使用情况,您可以使用cgget和cgexec命令。例如,要查看my_cgroup的内存使用情况,请运行:
sudo cgget -g memory:my_cgroup
要使用cgroup运行命令,请使用cgexec。例如,要在my_cgroup中运行top命令,请运行:
sudo cgexec -g memory:my_cgroup top
通过这些步骤,您可以在CentOS中使用cgroups调整ulimit。请注意,这些更改仅适用于在创建cgroup之后启动的进程。对于已经在运行的进程,您需要将它们移动到新的cgroup或重新启动它们。