docker容器资源控制cgroup

命名空间

六种 namespace

 

资源配额[cgroups]

mount -t cgroup

cd /sys/fs/cgroup/

cd memory/

默认是没有限制

 

现在更改内存使用

free  -m

mount -t cgroup

bc

1024*200*1024   算出200M

 

mkdir x1

cd x1

echo  209715200 > memory.limit_in_bytes

cat tasks   写入需要控制的pid

 

cd /dev/shm

dd if=/dev/zero of=bigfile bs=1M count=100

这里使用内存就会减少100M

这样不会和其他进程共享内存

yum install -y  libcgroup

yum search cgroup

cgexec -g memory:x1 dd of=/dev/zero  of=bigfile bs=1M count=1--

采用memory中x1子控制器

rm -fr bigfile 取消控制

表示超出限制就不会生成

 

cgroup

mount -t cgroup

[root@foundation11 ~]# mount -c cgroup
mount: cgroup is already mounted or /sys/fs/cgroup/memory busy
       cgroup is already mounted on /sys/fs/cgroup/systemd
       cgroup is already mounted on /sys/fs/cgroup/blkio
       cgroup is already mounted on /sys/fs/cgroup/net_cls,net_prio
       cgroup is already mounted on /sys/fs/cgroup/perf_event
       cgroup is already mounted on /sys/fs/cgroup/cpuset
       cgroup is already mounted on /sys/fs/cgroup/hugetlb
       cgroup is already mounted on /sys/fs/cgroup/cpu,cpuacct
       cgroup is already mounted on /sys/fs/cgroup/devices
       cgroup is already mounted on /sys/fs/cgroup/pids
       cgroup is already mounted on /sys/fs/cgroup/freezer
       cgroup is already mounted on /sys/fs/cgroup/memory

[root@foundation11 ~]# mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)

 

cd /sys/fs/cgroup/cpu

mkdir x1

cd x1

[root@foundation11 cpu]# cd x1/
[root@foundation11 x1]# ls
cgroup.clone_children  cpu.cfs_quota_us
cgroup.event_control   cpu.rt_period_us
cgroup.procs           cpu.rt_runtime_us
cpuacct.stat           cpu.shares
cpuacct.usage          cpu.stat
cpuacct.usage_percpu   notify_on_release
cpu.cfs_period_us      tasks

 

在一个周期里面

dd if=/dev/zero  of=/dev/null &

top  ;按1 查看cpu

找到pid

echo     > tasks

[root@foundation11 x1]# ls
cgroup.clone_children  cpuacct.stat          cpu.cfs_period_us  cpu.rt_runtime_us  notify_on_release
cgroup.event_control   cpuacct.usage         cpu.cfs_quota_us   cpu.shares         tasks
cgroup.procs           cpuacct.usage_percpu  cpu.rt_period_us   cpu.stat
[root@foundation11 x1]# pwd
/sys/fs/cgroup/cpu/x1

就可以限制cpu

 docker run --it   --name vm1 --cpu-quota=50000 ubuntu

[root@foundation11 ~]# docker run -it --name vm1 --cpu-quota=50000 ubuntu
root@5973b076bd53:/# dd if=/dev/zero of=/dev/null

44089023+0 records out
22573579776 bytes (23 GB) copied, 65.2087 s, 346 MB/s

 

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

6496 root      20   0    4368    360    280 R  50.0  0.0   0:05.54 dd

 

控制写入速度

 

docker run -it --rm --privileged=true ubuntu   超户登入

fdisk -l

cat /proc/partitions

docker run -it --rm  --device-write-bps  /dev/sda:30MB ubuntu

dd if=/dev/zero of=file bs=1M count=300 oflag=direct

仅支持直连IO  不过文件系统缓存

[root@foundation11 ~]# docker run -it --rm  --device-write-bps  /dev/sda:30MB  ubuntu
root@9a511e976eb3:/# dd if=/dev/zero of=file bs=1M count=300 oflag=direct
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 9.92418 s, 31.7 MB/s

 

/sys/fs/cgroup/freezer/docker

docker pause/unpause 也是对cgoup进行操作

 

 

安装lxcfs

yum install lxcfs-2.0.5-3.el7.centos.x86_64.rpm -y

lxcfs /var/lib/lxcfs/ &

出现问题

fuse: mountpoint is not empty

删掉原有文件/var/lib/lxcfs/    lxcfs /var/lib/lxcfs/ &

docker run -it --name vm1 -m 200m -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo -v /var/lib/lxcfs/proc/stat:/proc/stat -v /var/lib/lxcfs/proc/swaps:/proc/swaps -v /var/lib/lxcfs/proc/uptime:/proc/uptime ubuntu

free -m

root@bac00272ffe3:/# free -m
             total       used       free     shared    buffers     cached
Mem:           200          2        197        299          0          0
-/+ buffers/cache:          2        197
Swap:          200          0        200

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值