Docker的資源限制實戰篇


             Docker的資源限制實戰篇

                                      作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

 

 

 

一.資源限制概述

  默認情況下,容器沒有資源限制,可以使用系統所有資源。docker 通過 docker run 配置容器的內存,cpu, 磁盤io使用量。

  其中許多功能都要求您的內核支持Linux功能。 要檢查支持,可以使用docker info命令。 如果內核中禁用了某項功能,您可能會在輸出結尾處看到警告,如"WARNING: No swap limit support"。

  對於Linux 主機,如果沒有足夠的內容來執行重要的系統任務,將會拋出OOM或者Out of Memory Exception(內存溢出、內存泄漏、內存異常), 隨后系統會開始殺死進程以釋放內存。每個進程都有可能被kill,包括Dockerd和其它的應用程序。如果重要的系統進程被Kill,會導致整個系統宕機。

  內存資源限制:     產生OOM異常時,Docker嘗試通過調整Docker守護程序上的OOM優先級來減輕這些風險,以便它比系統上的其他進程更不可能被殺死。 容器上的OOM優先級未調整,這使得單個容器被殺死的可能性比Docker守護程序或其他系統進程被殺死的可能性更大,不推薦通過在守護程序或容器上手動設置
--oom-score-adj為極端負數,或通過在容器上設置--oom-kill-disable來繞過這些安全措施。     Docker 可以強制執行硬性內存限制,即只允許容器使用給定的內存大小。     Docker 也可以執行非硬性內存限制,即容器可以使用盡可能多的內存,除非內核檢測到主機上的內存不夠用了。   
  CPU資源限制:     一個宿主機,有幾十個核心的CPU,CPU為可壓縮資源,但是有成百上千的進程,那么這么多進程怎么執行的?     實時優先級:
0-99       非實時優先級(nice):-20-19,對應100-139的進程優先級Linux kernel進程的調度基於CFS(Completely Fair Scheduler),完全公平調度     CPU密集型的場景:
      優先級越低越好,計算密集型任務的特點是要進行大量的計算,消耗CPU資源,比如計算圓周率、對視頻進行高清解碼等等,全靠CPU的運算能力     IO密集型的場景:
      優先級值調高點,涉及到網絡、磁盤IO的任務都是IO密集型任務,這類任務的特點是CPU消耗很少,任務的大部分時間都在等待IO操作完成(因為IO的速度遠遠低於CPU和內存的速度),比如Web應用,高並發,數據量大的動態網站來說,數據庫應該為IO密集型。   博主推薦閱讀:     https:
//docs.docker.com/config/containers/resource_constraints/

 

二.限制容器對內存的訪問實戰案例

內存限制參數:
    -m or --memory=:
      容器可以使用的最大內存量,如果您設置此選項,則允許的最小值為4m (4兆字節)。
    --memory-swap *:
      容器可以使用的交換分區大小,要在設置物理內存限制的前提才能設置交換分區的限制。該參數咱們可以忽略掉,因為在K8S 1.8.3版本中(https://github.com/kubernetes/kubernetes/blob/release-1.8/CHANGELOG-1.8.md),如果你的服務器開啟了swap分區就會報錯,而且生產環境並不建議使用swap分區,它可能會導致你的服務響應會很慢,但你檢查了所有配置均是正常的,這會讓你查無可查,禁用swap分區從你我做起。
    --memory-swappiness:
      設置容器使用交換分區的傾向性,值越高表示越傾向於使用swap分區,范圍為0-100,0為能不用就不用,100為能用就用
    --kernel-memory:
      容器可以使用的最大內核內存量,最小為4m,由於內核內存與用戶空間內存隔離,因此無法與用戶空間內存直接交換,因此內核內存不足的容器可能會阻塞宿主主機資源,這會對主機和其他容器產生副作用。生產環境中盡量不要使用這個參數,如果內存不足的情況下就直接向領導申請加內存就好。
    --memory-reservation:
      允許您指定小於--memory的軟限制,當Docker檢測到主機上的爭用或內存不足時會激活該限制,如果使用--memory-reservation,則必須將其設置為低於--memory才能使其優先。 因為它是軟限制,所以不能保證容器不超過限制。
    --oom-kill-disable:
      默認情況下,發生OOM時,kernel會殺死容器內進程,但是可以使用--oom-kill-disable參數,可以禁止oom發生在指定的容器上,即 僅在已設置-m /  -  memory選項的容器上禁用OOM,如果-m 參數未配置,產生OOM時,主機為了釋放內存還會殺死系統進程

  swap限制:
    --memory-swap:
      只有在設置了 --memory 后才會有意義。使用Swap,可以讓容器將超出限制部分的內存置換到磁盤上。WARNING:經常將內存交換到磁盤的應用程序會降低性能
      不同的設置會產生不同的效果:
        --memory-swap:
          值為正數, 那么--memory和--memory-swap都必須要設置,--memory-swap表示你能使用的內存和swap分區大小的總和,例如: --memory=300m, --memory-swap=1g, 那么該容器能夠使用 300m 內存和 700m swap,即--memory是實際物理內存大小值不變,而實際的計算方式為(--memory-swap)-(--memory)=容器可用swap
        --memory-swap:
          如果設置為0,則忽略該設置,並將該值視為未設置,即未設置交換分區。
        --memory-swap:
          如果等於--memory的值,並且--memory設置為正整數,容器無權訪問swap即也沒有設置交換分區
        --memory-swap:
          如果設置為unset,如果宿主機開啟了swap,則實際容器的swap值為2x( --memory),即兩倍於物理內存大小,但是並不准確。
        --memory-swap:
          如果設置為-1,如果宿主機開啟了swap,則容器可以使用主機上swap的最大空間。

1>.下載專門用於測試資源限制的鏡像(https://hub.docker.com/r/lorel/docker-stress-ng)

[root@docker101.yinzhengjie.org.cn ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-haproxy      v1.8.20             1858fe05d96f        5 days ago          606MB
registry            latest              708bc6af7e5e        5 days ago          25.8MB
tomcat-app01        v0.1                bf45c22f2d5b        5 days ago          983MB
tomcat-base         8.5.50              9ff79f369094        7 days ago          968MB
jdk-base            1.8.0_231           0f63a97ddc85        7 days ago          953MB
centos-base         7.6.1810            b4931fd9ace2        7 days ago          551MB
centos              centos7.6.1810      f1cb7c7d58b7        10 months ago       202MB
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# docker image pull lorel/docker-stress-ng
Using default tag: latest
latest: Pulling from lorel/docker-stress-ng
Image docker.io/lorel/docker-stress-ng:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
c52e3ed763ff: Pull complete 
a3ed95caeb02: Pull complete 
7f831269c70e: Pull complete 
Digest: sha256:c8776b750869e274b340f8e8eb9a7d8fb2472edd5b25ff5b7d55728bca681322
Status: Downloaded newer image for lorel/docker-stress-ng:latest
docker.io/lorel/docker-stress-ng:latest
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
centos-haproxy           v1.8.20             1858fe05d96f        5 days ago          606MB
registry                 latest              708bc6af7e5e        5 days ago          25.8MB
tomcat-app01             v0.1                bf45c22f2d5b        5 days ago          983MB
tomcat-base              8.5.50              9ff79f369094        7 days ago          968MB
jdk-base                 1.8.0_231           0f63a97ddc85        7 days ago          953MB
centos-base              7.6.1810            b4931fd9ace2        7 days ago          551MB
centos                   centos7.6.1810      f1cb7c7d58b7        10 months ago       202MB
lorel/docker-stress-ng   latest              1ae56ccafe55        3 years ago         8.1MB
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# docker image pull lorel/docker-stress-ng

2>.未限制容器內存

[root@docker101.yinzhengjie.org.cn ~]# lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 158
Model name:            Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
Stepping:              10
CPU MHz:               2207.997
BogoMIPS:              4415.99
Virtualization:        VT-x
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              9216K
NUMA node0 CPU(s):     0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr ss
e sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt arat spec_ctrl intel_stibp flush_l1d arch_capabilities[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
centos-haproxy           v1.8.20             1858fe05d96f        5 days ago          606MB
registry                 latest              708bc6af7e5e        5 days ago          25.8MB
tomcat-app01             v0.1                bf45c22f2d5b        5 days ago          983MB
tomcat-base              8.5.50              9ff79f369094        7 days ago          968MB
jdk-base                 1.8.0_231           0f63a97ddc85        7 days ago          953MB
centos-base              7.6.1810            b4931fd9ace2        7 days ago          551MB
centos                   centos7.6.1810      f1cb7c7d58b7        10 months ago       202MB
lorel/docker-stress-ng   latest              1ae56ccafe55        3 years ago         8.1MB
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# docker container run -it --rm lorel/docker-stress-ng --vm 2 --vm-bytes 128M
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 2 vm

3>.硬限制內存

[root@docker101.yinzhengjie.org.cn ~]# lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 158
Model name:            Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
Stepping:              10
CPU MHz:               2207.997
BogoMIPS:              4415.99
Virtualization:        VT-x
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              9216K
NUMA node0 CPU(s):     0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2
 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt arat spec_ctrl intel_stibp flush_l1d arch_capabilities[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# docker run -it -m 128M --rm lorel/docker-stress-ng --vm 2 --vm-bytes 128M
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 2 vm

[root@docker101.yinzhengjie.org.cn ~]# docker container ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS               NAMES
934a595104be        lorel/docker-stress-ng   "/usr/bin/stress-ng …"   29 minutes ago      Up 29 minutes                           cool_boyd
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# ls /sys/fs/cgroup/memory/docker/934a595104beb2cb986bcf1601c0fc36d9463131cc167b4df8cc31ff74ed34ec/
cgroup.clone_children  memory.kmem.limit_in_bytes          memory.kmem.tcp.usage_in_bytes  memory.memsw.max_usage_in_bytes  memory.soft_limit_in_bytes  tasks
cgroup.event_control   memory.kmem.max_usage_in_bytes      memory.kmem.usage_in_bytes      memory.memsw.usage_in_bytes      memory.stat
cgroup.procs           memory.kmem.slabinfo                memory.limit_in_bytes           memory.move_charge_at_immigrate  memory.swappiness
memory.failcnt         memory.kmem.tcp.failcnt             memory.max_usage_in_bytes       memory.numa_stat                 memory.usage_in_bytes
memory.force_empty     memory.kmem.tcp.limit_in_bytes      memory.memsw.failcnt            memory.oom_control               memory.use_hierarchy
memory.kmem.failcnt    memory.kmem.tcp.max_usage_in_bytes  memory.memsw.limit_in_bytes     memory.pressure_level            notify_on_release
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# cat /sys/fs/cgroup/memory/docker/934a595104beb2cb986bcf1601c0fc36d9463131cc167b4df8cc31ff74ed34ec/memory.limit_in_bytes 
134217728
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# echo "134217728/1024/1024" | bc
128
[root@docker101.yinzhengjie.org.cn ~]# 

4>.使用cgroup動態擴容內存(溫馨提示:資源限制只能改大不能改小喲~)

[root@docker101.yinzhengjie.org.cn ~]# docker container ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS            
934a595104be        lorel/docker-stress-ng   "/usr/bin/stress-ng …"   5 seconds ago       Up 5 seconds     
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# ls /sys/fs/cgroup/memory/docker/934a595104beb2cb986bcf1601c0fc36d9463131cc167b4df8cc31ff74ed34ec/
cgroup.clone_children memory.kmem.tcp.max_usage_in_bytes memory.oom_control cgroup.event_control memory.kmem.tcp.usage_in_bytes memory.pressure_level cgroup.procs memory.kmem.usage_in_bytes memory.soft_limit_in_bytes memory.failcnt memory.limit_in_bytes memory.stat memory.force_empty memory.max_usage_in_bytes memory.swappiness memory.kmem.failcnt memory.memsw.failcnt memory.usage_in_bytes memory.kmem.limit_in_bytes memory.memsw.limit_in_bytes memory.use_hierarchy memory.kmem.max_usage_in_bytes memory.memsw.max_usage_in_bytes notify_on_release memory.kmem.slabinfo memory.memsw.usage_in_bytes tasks memory.kmem.tcp.failcnt memory.move_charge_at_immigrate memory.kmem.tcp.limit_in_bytes memory.numa_stat [root@docker101.yinzhengjie.org.cn ~]# [root@docker101.yinzhengjie.org.cn ~]# cat /sys/fs/cgroup/memory/docker/934a595104beb2cb986bcf1601c0fc36d9463131cc167b4df8cc31ff74ed34ec/memory.limit_in_bytes
134217728 [root@docker101.yinzhengjie.org.cn ~]# [root@docker101.yinzhengjie.org.cn ~]# [root@docker101.yinzhengjie.org.cn ~]# cat /sys/fs/cgroup/memory/docker/934a595104beb2cb986bcf1601c0fc36d9463131cc167b4df8cc31ff74ed34ec/memory.limit_in_bytes
134217728 [root@docker101.yinzhengjie.org.cn ~]# [root@docker101.yinzhengjie.org.cn ~]# echo "256*1024*1024" | bc 268435456 [root@docker101.yinzhengjie.org.cn ~]# [root@docker101.yinzhengjie.org.cn ~]# echo 268435456 > /sys/fs/cgroup/memory/docker/934a595104beb2cb986bcf1601c0fc36d9463131cc167b4df8cc31ff74ed34ec/memory.limit_in_bytes
[root@docker101.yinzhengjie.org.cn ~]# [root@docker101.yinzhengjie.org.cn ~]# cat /sys/fs/cgroup/memory/docker/934a595104beb2cb986bcf1601c0fc36d9463131cc167b4df8cc31ff74ed34ec/memory.limit_in_bytes
268435456 [root@docker101.yinzhengjie.org.cn ~]# [root@docker101.yinzhengjie.org.cn ~]#

5>.軟限制內存

[root@docker101.yinzhengjie.org.cn ~]# docker run -it -m 128M --memory-reservation 64m --rm lorel/docker-stress-ng --vm 2 --vm-bytes 128M
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 2 vm

6>.關閉一個容器的oom機制(開啟該功能宿主機無論占用多少內存都不會去強行kill該容器,此方式生產環境並不推薦使用,了解即可)

[root@docker101.yinzhengjie.org.cn ~]# docker run -it -m 128M --oom-kill-disable --rm lorel/docker-stress-ng --vm 2 --vm-bytes 128M
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 2 vm

 

三.限制容器對CPU的訪問實戰案例

[root@docker101.yinzhengjie.org.cn ~]# cat /sys/block/sda/queue/scheduler               #查看磁盤調度算法
noop [deadline] cfq 
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# cat /sys/block/sda/queue/scheduler                   #查看磁盤調度算法
  默認情況下,每個容器對主機CPU周期的訪問權限是不受限制的,但是我們可以設置各種約束來限制給定容器訪問主機的CPU周期,大多數用戶使用的是默認的CFS調度方式,在Docker 1.13及更高版本中,還可以配置實時優先級。

  CPU限制參數:
    --cpus=:
      指定容器可以使用多少可用CPU資源。例如,如果主機有兩個CPU,並且您設置了--cpus =“1.5”,那么該容器將保證最多可以訪問一個半的CPU。這相當於設置--cpu-period =“100000”和--cpu-quota =“150000”。在Docker 1.13和更高版本中可用。     --cpu-period:
      設置CPU CFS調度程序周期,它與--cpu-quota一起使用,,默認為100微妙,范圍從 100ms~1s,即[1000, 1000000]     --cpu-quota:
      在容器上添加CPU CFS配額,也就是cpu-quota / cpu-period的值,通常使用--cpus設置此值     --cpuset-cpus:
      主要用於指定容器運行的CPU編號,也就是我們所謂的綁核。
    --cpuset-mem:
      設置使用哪個cpu的內存,僅對非統一內存訪問(NUMA)架構有效,而我們一般使用的是X86_64架構的CPU,因此一般情況下我們不會做這個限制。     
--cpu-shares:
      主要用於cfs中調度的相對權重,cpushare值越高的,將會分得更多的時間片,默認的時間片1024,最大262144,一般情況下我們在生產環境中不會去設置該參數。

1>.未限制CPU核心數

[root@docker101.yinzhengjie.org.cn ~]# lscpu | grep "^CPU(s)"
CPU(s):                8
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# docker run -it -m 128M --rm lorel/docker-stress-ng --cpu 4 --vm 4
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 4 cpu, 4 vm
stress-ng: error: [14] stress-ng-vm: fork failed: errno=12: (Out of memory)

2>.限制容器CPU

[root@docker101.yinzhengjie.org.cn ~]# lscpu | grep "^CPU(s)"
CPU(s):                8
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# docker run -it -m 128M --cpus 2 --rm lorel/docker-stress-ng --cpu 4 --vm 4
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 4 cpu, 4 vm
stress-ng: error: [14] stress-ng-vm: fork failed: errno=12: (Out of memory)

3>.將容器運行在指定的CPU核心上

[root@docker101.yinzhengjie.org.cn ~]# lscpu | grep "^CPU(s)"            #可用查看當前服務器可用的CPU核心數
CPU(s):                8
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# lscpu | grep  "On-line"            #可用查看當前服務器可用的CPU編號
On-line CPU(s) list:   0-7
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# docker run -it -m 128M --cpus 2 --cpuset-cpus 1,4 --rm lorel/docker-stress-ng --cpu 4 --vm 4
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 4 cpu, 4 vm
stress-ng: error: [11] stress-ng-vm: fork failed: errno=12: (Out of memory)

4>.動態修改容器運行在指定的CPU核心上

[root@docker101.yinzhengjie.org.cn ~]# ls /sys/fs/cgroup/cpuset/docker/818e686e5932bbac2dd525c39c655bdd55135bfc3127297ef0ca813f05e7f77a/
cgroup.clone_children  cgroup.procs          cpuset.cpus            cpuset.effective_mems  cpuset.mem_hardwall    cpuset.memory_pressure     cpuset.memory_spread_slab  cpuset.sched_load_balance        notify_on_release
cgroup.event_control   cpuset.cpu_exclusive  cpuset.effective_cpus  cpuset.mem_exclusive   cpuset.memory_migrate  cpuset.memory_spread_page  cpuset.mems                cpuset.sched_relax_domain_level  tasks
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# ls /sys/fs/cgroup/cpuset/docker/818e686e5932bbac2dd525c39c655bdd55135bfc3127297ef0ca813f05e7f77a/cpuset.cpus 
/sys/fs/cgroup/cpuset/docker/818e686e5932bbac2dd525c39c655bdd55135bfc3127297ef0ca813f05e7f77a/cpuset.cpus
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# cat /sys/fs/cgroup/cpuset/docker/818e686e5932bbac2dd525c39c655bdd55135bfc3127297ef0ca813f05e7f77a/cpuset.cpus 
1,4
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# echo "5,7" > /sys/fs/cgroup/cpuset/docker/818e686e5932bbac2dd525c39c655bdd55135bfc3127297ef0ca813f05e7f77a/cpuset.cpus 
[root@docker101.yinzhengjie.org.cn ~]# 
[root@docker101.yinzhengjie.org.cn ~]# cat /sys/fs/cgroup/cpuset/docker/818e686e5932bbac2dd525c39c655bdd55135bfc3127297ef0ca813f05e7f77a/cpuset.cpus 
5,7
[root@docker101.yinzhengjie.org.cn ~]# 

5>.基於cpu-shares對CPU進行切分使用(啟動兩個容器,一個“--cpu-shares”的值為500,另一個為1000,觀察效果,如下圖所示)

[root@docker101.yinzhengjie.org.cn ~]# docker run -it --cpu-shares 500 --name test01 --rm lorel/docker-stress-ng --cpu 4 --vm 4
 stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 4 cpu, 4 vm



[root@docker101.yinzhengjie.org.cn ~]# docker run -it --cpu-shares 1000 --name test02 --rm lorel/docker-stress-ng --cpu 4 --vm 4
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 4 cpu, 4 vm

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM