Docker CPU資源限制
Docker使用cgroup實現CPU,記憶體和磁碟IO等系統資源的限制。
二:命令
--cpu-percent int 僅供Windows系統使用
--cpu-period int 限制 CPU CFS 的週期,範圍從 100ms~1s,即[1000, 1000000]
--cpu-quota int 限制 CPU CFS 配額,必須不小於1ms,即 >= 1000
-c, --cpu-shares int CPU 共享權值(相對權重)
--cpuset-cpus string 允許使用的 CPU 集,值可以為 0-3,0,1
--cpuset-mems string 只對 NUMA 系統有效三:命令說明
1.預設情況下,所有的容器得到同等比例的 CPU 週期。在有多個容器競爭 CPU 時我們可以設定每個容器能使用的 CPU 時間比例。這個比例叫作共享權值,通過-c或--cpu-shares設定。Docker 預設每個容器的權值為 1024。不設定或將其設定為 0,都將使用這個預設值。系統會根據每個容器的共享權值和所有容器共享權值和比例來給容器分配 CPU 時間。
假設有三個正在執行的容器,這三個容器中的任務都是 CPU 密集型的。第一個容器的 cpu 共享權值是 1024,其它兩個容器的 cpu 共享權值是 512。第一個容器將得到 50% 的 CPU 時間,而其它兩個容器就只能各得到 25% 的 CPU 時間了。如果再新增第四個 cpu 共享值為 1024 的容器,每個容器得到的 CPU 時間將重新計算。第一個容器的CPU 時間變為 33%,其它容器分得的 CPU 時間分別為 16.5%、16.5%、33%。
必須注意的是,這個比例只有在 CPU 密集型的任務執行時才有用。在四核的系統上,假設有四個單程式的容器,它們都能各自使用一個核的 100% CPU 時間,不管它們的 cpu 共享權值是多少。
在多核系統上,CPU 時間權值是在所有 CPU 核上計算的。即使某個容器的 CPU 時間限制少於 100%,它也能使用各個 CPU 核的 100% 時間。
2.docker提供了–cpu-period、–cpu-quota兩個引數控制容器可以分配到的CPU時鐘週期。–cpu-period是用來指定容器對CPU的使用要在多長時間內做一次重新分配,而–cpu-quota是用來指定在這個週期內,最多可以有多少時間用來跑這個容器。跟–cpu-shares不同的是這種配置是指定一個絕對值,而且沒有彈性在裡面,容器對CPU資源的使用絕對不會超過配置的值。
cpu-period和cpu-quota的單位為微秒(μs)。cpu-period的最小值為1000微秒,最大值為1秒(10^6 μs),預設值為0.1秒(100000 μs)。cpu-quota的值預設為-1,表示不做控制。
舉個例子,如果容器程式需要每1秒使用單個CPU的0.2秒時間,可以將cpu-period設定為1000000(即1秒),cpu-quota設定為200000(0.2秒)。當然,在多核情況下,如果允許容器程式需要完全佔用兩個CPU,則可以將cpu-period設定為100000(即0.1秒),cpu-quota設定為200000(0.2秒)
四:測試
agileek/cpuset-test 映象是一種用於測試CPU的image,功能就是將指定的CPU資源用滿。
docker pull agileek/cpuset-test
1. docker run -it --cpuset-cpus="1,3" agileek/cpuset /bin/bash
表示容器中的程式可以在cpu 1和cpu 3 上執行
2. docker run -it --cpuset-cpus="0-2" agileek/cpuset /bin/bash
表示容器中的程式可以在cpu 1,cpu 2,cpu 3 上執行
3. docker run -ti --rm --name mytest -c 1024 agileek/cpuset-test開啟一個新的埠,監控容器CPU佔用情況
mpstat -P ALL 5 10
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2145853/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker的資源限制Docker
- 如何使用 Docker 來限制 CPU、記憶體和 IO等資源?Docker記憶體
- 深入理解Kubernetes資源限制:CPU
- 容器技術之Docker資源限制Docker
- docker筆記34-容器資源需求、資源限制及HeapSterDocker筆記
- Docker系列09—Docker的系統資源限制及驗證Docker
- docker的資源控制(CPU、記憶體、IO)Docker記憶體
- jvm 可以限制cpu嗎JVM
- Flink - 合理利用 cpu 資源
- 如何設定Kubernetes資源限制
- Kubernetes資源請求與限制
- setrlimit函式限制程序資源MIT函式
- Docker-Java限制cpu和記憶體及淺析原始碼解決docker磁碟掛載失效問題DockerJava記憶體原始碼
- Kubernetes:容器資源需求與限制(約束)
- 在Docker中,如何控制容器佔用系統資源(CPU,記憶體)的份額?Docker記憶體
- Kubernetes中如何使用CPU請求和限制? - daniele
- 深入理解Kubernetes資源限制:記憶體記憶體
- Docker執行資源控制Docker
- Oracle的過載保護-資料庫資源限制Oracle資料庫
- 提升CPU等資源的利用率,減少CPU的空轉
- JVM 如何獲取當前容器的資源限制?JVM
- 白話 Linux 容器資源的隔離限制原理Linux
- 資源限制類問題的常用解決方案
- 使用nice,cpulimit和cgroups限制程式CPU使用率MIT
- 日本住宅IP的威力:突破地域限制,暢享日本資源
- Kubernetes筆記(四):詳解Namespace與資源限制ResourceQuota,LimitRange筆記namespaceMIT
- k8s--資源控制器限制配置詳解K8S
- k8s~為pod新增節點的資源限制K8S
- 在kubernetes裡使用AppArmor限制容器對資源的訪問APP
- 繞開Docker Hub下載限制:JFrog ArtifactoryDocker
- Docker進階-資源管理Swarm+PortainerDockerSwarmAI
- Docker 映象源Docker
- Docker 源配置Docker
- 028、限制容器對CPU的使用(2019-01-23 週三)
- solaris10使用projadd進行資源限制的新增(seminfo_*)
- K8s 生產最佳實踐-限制 NameSpace 資源用量K8Snamespace
- 核心是如何給容器中的程式分配CPU資源的?
- kubernetes和docker----2.學習Pod資源Docker
- Docker再遇公關危機,GitHub開發者吐槽Docker下載限制DockerGithub