##docker中oceanbase-ce 容器占用cpu100% 使用cgroup限制cpu使用上限
top - 16:30:22 up 36 min, 1 user, load average: 7.34, 10.62, 8.99
Tasks: 400 total, 1 running, 399 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.5 us, 1.3 sy, 0.0 ni, 94.9 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 25977.1 total, 10481.9 free, 12087.6 used, 3407.6 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 13603.8 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND16055 yym 20 0 9088776 5.1g 106264 S 100 20.2 6:15.66 observer
oceanbase-ce 的observer占用100%cpu,手动修改docker容器cpu资源使用上限
##ubuntu20 docker使用是cgroup驱动是cgroupfs
##cgroup挂载点如下
yym@ubuntu20:~$ mount | grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755,inode64)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
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/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/misc type cgroup (rw,nosuid,nodev,noexec,relatime,misc)
yym@ubuntu20:~$ docker info | grep "Cgroup Driver"Cgroup Driver: cgroupfs
##ubuntu20 下 Docker 容器的 cgroup 限制文件目录/sys/fs/cgroup/<控制器>/docker/<容器ID>
cd /sys/fs/cgroup/cpu/docker/cd619119e81f9d499b74a80b9e16a94ce1db8ffbb2e98c82b12e6271172f743e
echo 100000 > cpu.cfs_period_us # 假设周期为100ms
echo 50000 > cpu.cfs_quota_us # 配额为周期的一半,即50%
yym@ubuntu20:/sys/fs/cgroup/cpu/docker/cd619119e81f9d499b74a80b9e16a94ce1db8ffbb2e98c82b12e6271172f743e$ cd /sys/fs/cgroup/cpu/docker/cd619119e81f9d499b74a80b9e16a94ce1db8ffbb2e98c82b12e6271172f743e
yym@ubuntu20:/sys/fs/cgroup/cpu/docker/cd619119e81f9d499b74a80b9e16a94ce1db8ffbb2e98c82b12e6271172f743e$ echo 100000 > cpu.cfs_period_us
-bash: cpu.cfs_period_us: Permission denied
yym@ubuntu20:/sys/fs/cgroup/cpu/docker/cd619119e81f9d499b74a80b9e16a94ce1db8ffbb2e98c82b12e6271172f743e$ su root
Password:
root@ubuntu20:/sys/fs/cgroup/cpu/docker/cd619119e81f9d499b74a80b9e16a94ce1db8ffbb2e98c82b12e6271172f743e# echo 100000 > cpu.cfs_period_us
root@ubuntu20:/sys/fs/cgroup/cpu/docker/cd619119e81f9d499b74a80b9e16a94ce1db8ffbb2e98c82b12e6271172f743e# echo 50000 > cpu.cfs_quota_us
root@ubuntu20:/sys/fs/cgroup/cpu/docker/cd619119e81f9d499b74a80b9e16a94ce1db8ffbb2e98c82b12e6271172f743e# exit
##改完之后oceanbase-ce 的observer进程使用cpu下降到50左右
top - 16:38:55 up 45 min, 1 user, load average: 6.29, 6.63, 7.50
Tasks: 400 total, 2 running, 398 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.3 us, 1.0 sy, 0.0 ni, 95.5 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 25977.1 total, 10215.8 free, 12279.1 used, 3482.1 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 13412.2 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND16055 yym 20 0 9090312 5.1g 106680 S 49.0 20.3 12:08.20 observer
##ubuntu22 下使用cgroup2 统一挂载点,Cgroup Driver: systemd
yym@ubantu22:/sys/fs/cgroup/system.slice/docker-e282c2cc4479a8ac7a6ec0b228cc6586d52593aae3c3cb7c5b3429384c2c8800.scope$ mount | grep cgroup
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
yym@ubantu22:/sys/fs/cgroup/system.slice/docker-e282c2cc4479a8ac7a6ec0b228cc6586d52593aae3c3cb7c5b3429384c2c8800.scope$ docker info | grep "Cgroup Driver"Cgroup Driver: systemd
yym@ubantu22:/sys/fs/cgroup/system.slice/docker-e282c2cc4479a8ac7a6ec0b228cc6586d52593aae3c3cb7c5b3429384c2c8800.scope$ su root
Password:
root@ubantu22:/sys/fs/cgroup/system.slice/docker-e282c2cc4479a8ac7a6ec0b228cc6586d52593aae3c3cb7c5b3429384c2c8800.scope# ##echo 50 > cpu.weight
root@ubantu22:/sys/fs/cgroup/system.slice/docker-e282c2cc4479a8ac7a6ec0b228cc6586d52593aae3c3cb7c5b3429384c2c8800.scope# echo 50000 100000 > cpu.max