假设一台物理机上跑了3个容器,启动的时候分配的cpu share是一样的,那如果在一个容器满负载,而另外两个空闲的情况下,那单个容器有可能跑满物理机的CPU吗,还是说撑死只能跑到30%?
人生最曼妙的风景,竟是内心的淡定与从容!
如果docker跑的是python進程,單進程可以跑滿單核(受限於GIL),其實看進程列表就知道不同於vagrant,docker的進程本身是融匯在系統進程裡面的。
看你的進程
docker-proxy -proto tcp
能佔多少CPU
哦你用了share,那這個進程就被綁死在這個核上了。 又及,你用top看能看到這個進程是100%,不過這個100%是這個核上的100% 如果跑滿3核就是300%
啟動時即使你給每個容器分配了相同的cpu share。在其他兩個容器空閒的情況下,剩下的容器依然可以把整個核跑滿。
cpu share給我的感覺是限制了該容器cpu使用率的下限。如果你想限制cpu使用率的上限,就需要自己透過cgroup去修改該容器的設定。
是個有意思的問題,應該要做個實驗試試。
誰來做實驗嘛,寫個循環把處理器佔滿?
如果docker跑的是python進程,單進程可以跑滿單核(受限於GIL),其實看進程列表就知道不同於vagrant,docker的進程本身是融匯在系統進程裡面的。
看你的進程
能佔多少CPU
哦你用了share,那這個進程就被綁死在這個核上了。
又及,你用top看能看到這個進程是100%,不過這個100%是這個核上的100%
如果跑滿3核就是300%
啟動時即使你給每個容器分配了相同的cpu share。在其他兩個容器空閒的情況下,剩下的容器依然可以把整個核跑滿。
cpu share給我的感覺是限制了該容器cpu使用率的下限。如果你想限制cpu使用率的上限,就需要自己透過cgroup去修改該容器的設定。
是個有意思的問題,應該要做個實驗試試。
誰來做實驗嘛,寫個循環把處理器佔滿?