Cgroup详解

$lssubsys -am
cpuset,cpu,cpuacct /sys/fs/cgroup/cpuset,cpu,cpuacct
blkio /sys/fs/cgroup/blkio
memory /sys/fs/cgroup/memory
devices /sys/fs/cgroup/devices
freezer /sys/fs/cgroup/freezer
net_cls,net_prio /sys/fs/cgroup/net_cls,net_prio
perf_event /sys/fs/cgroup/perf_event
hugetlb /sys/fs/cgroup/hugetlb
pids /sys/fs/cgroup/pids
net_cgroup /sys/fs/cgroup/net_cgroup

每一行是一个子系统和他对应的挂载信息,比如第一行,是说cpuset子系统是挂载在/sys/fs/cgroup/cpuset目录下,进入/sys/fs/cgroup/cpuset目录

$cd /sys/fs/cgroup/cpuset
$ls -rlt
total 0
drwxr-xr-x 39 root root 0 Aug  2 10:48 system.slice
-rw-r--r--  1 root root 0 Aug 18 08:48 cgroup.ns_readonly
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuset.mems
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuset.memory_pressure_enabled
-r--r--r--  1 root root 0 Aug 18 08:48 cpu.stat
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuset.sched_relax_domain_level
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuset.mem_exclusive
-r--r--r--  1 root root 0 Aug 18 08:48 cpuset.memory_pressure
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuset.cpus
-rw-r--r--  1 root root 0 Aug 18 08:48 cpu.rt_runtime_us
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuset.mem_hardwall
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuacct.usage
-rw-r--r--  1 root root 0 Aug 18 08:48 cpu.rt_period_us
-r--r--r--  1 root root 0 Aug 18 08:48 cpuacct.stat
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuset.memory_migrate
-rw-r--r--  1 root root 0 Aug 18 08:48 cgroup.clone_children
-rw-r--r--  1 root root 0 Aug 18 08:48 release_agent
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuset.memory_spread_page
-r--r--r--  1 root root 0 Aug 18 08:48 cpuacct.usage_percpu_sys
-rw-r--r--  1 root root 0 Aug 18 08:48 cpuset.sched_load_balance

每一行都是一个
自己也可以创建一个目录用来限制自己服务的cpu资源使用,比如创建一个my_task,并进入目录,发现已经有一些默认配置

$ls -rlt
total 0
-r--r--r-- 1 root root 0 Aug 18 08:55 memory.pressure
-r--r--r-- 1 root root 0 Aug 18 08:55 cpu.stat
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.sched_relax_domain_level
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.mems
-r--r--r-- 1 root root 0 Aug 18 08:55 cpuset.memory_pressure
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.mem_exclusive
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.cpus
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpu.rt_runtime_us
-rw-r--r-- 1 root root 0 Aug 18 08:55 cgroup.ns_readonly
-rw-r--r-- 1 root root 0 Aug 18 08:55 tasks
-rw-r--r-- 1 root root 0 Aug 18 08:55 notify_on_release
-r--r--r-- 1 root root 0 Aug 18 08:55 memory.health
-rw-r--r-- 1 root root 0 Aug 18 08:55 memory.blackbox
-r--r--r-- 1 root root 0 Aug 18 08:55 io.pressure
-r--r--r-- 1 root root 0 Aug 18 08:55 io.health
-rw-r--r-- 1 root root 0 Aug 18 08:55 io.blackbox
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpu.shares
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.trick_tasks
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.trick_exempt_tasks
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.trick_cpus
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.sched_load_balance
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.memory_spread_slab
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.memory_spread_page
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.memory_migrate
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.mem_hardwall
-r--r--r-- 1 root root 0 Aug 18 08:55 cpuset.effective_mems
-r--r--r-- 1 root root 0 Aug 18 08:55 cpuset.effective_cpus
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpuset.cpu_exclusive
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpu.rt_period_us
-r--r--r-- 1 root root 0 Aug 18 08:55 cpu.pressure
-r--r--r-- 1 root root 0 Aug 18 08:55 cpu.health
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpu.cfs_quota_us
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpu.cfs_period_us
-rw-r--r-- 1 root root 0 Aug 18 08:55 cpu.bvt_warp_ns

下面可以自己修改这些配置,cpu.cfs_quota_us的默认配置是-1,把它修改为4000

echo 40000 > /sys/fs/cgroup/cpuset/my_task/cpu.cfs_quota_us

然后把我们把这个限制应用到对应的进程

echo  {pid} > /sys/fs/cgroup/cpuset/my_task/tasks
## 或者是下面这种方式
echo  {pid} > /sys/fs/cgroup/cpuset/my_task/cgroup.procs

两种方式的区别是,下面的方式会将进程下的线程也一起写入tasks中,也会被限制

特殊的,如果是直接将pid写入/sys/fs/cgroup/cpuset/cgroup.procs,就相当于把该线程写入了根组,解除对他的限制

上面这个例子中,my_task就是一个“控制族群”,my_task/cpu.cfs_quota_us就是一个“子系统”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值