📅  最后修改于: 2023-12-03 15:17:23.594000             🧑  作者: Mango
cgroups,即 Control groups,是 Linux 内核提供的一个机制,它可以限制和监控进程组(也就是所属 cgroup 的所有进程)的资源使用情况。cgroups 可以对进程组进行资源限制和监控,包括 CPU、内存、磁盘 I/O、网络带宽等,可以控制进程组的优先级、进程的调度等。
在一台服务器上运行多个应用程序时,为了防止某个应用程序的不当使用导致其他应用程序受到影响,需要对每个应用程序进行限制。例如,如果某个应用程序抢占了全部 CPU 资源,其他应用程序就无法执行,整个系统也会变得非常缓慢。
cgroups 可以限制各个应用程序的资源使用情况,以确保每个应用程序都能够获得足够的资源,从而提高整个系统的性能和稳定性。
以下是使用 cgroups 进行 CPU 和内存限制的示例:
首先,需要创建一个 cgroup,并将对应的进程加入到 cgroup 中:
mkdir /sys/fs/cgroup/cpu/limit
echo <pid> > /sys/fs/cgroup/cpu/limit/tasks
其中,<pid>
表示要加入到 cgroup 中的进程的 PID。
CPU 和内存限制都是使用 cgroup 中的 cpu
子系统和 memory
子系统来实现的。
设置 CPU 限制:
echo 100000 > /sys/fs/cgroup/cpu/limit/cpu.cfs_quota_us
以上命令将 CPU 限制设置为 100ms/秒。
设置内存限制:
echo 1073741824 > /sys/fs/cgroup/memory/limit/memory.limit_in_bytes
以上命令将内存限制设置为 1GB。
可以使用以下命令检查 cgroup 中的进程的 CPU 和内存使用情况:
cat /sys/fs/cgroup/cpu/limit/cpuacct.usage
cat /sys/fs/cgroup/memory/limit/memory.usage_in_bytes
以上两个命令分别用于检查 CPU 和内存使用情况。
cgroups 是 Linux 内核提供的一个非常有用的机制,可以用于限制和监控进程组的资源使用情况。在一台服务器上运行多个应用程序时,使用 cgroups 可以确保每个应用程序都能够获得足够的资源,提高整个系统的性能和稳定性。