如何使Docker触发更高的CPU频率

时间:2017-12-06 14:50:56

标签: docker windows-10 cpu-usage

好的,所以我的标题可能实际上并没有链接到可能的解决方案,但这是我的问题。 我正在我的windows 10 kaby-lake(2个物理内核,4个虚拟内核)笔记本电脑中的docker容器中运行Python 3 Jupyter笔记本。 我注意到从那里进行繁重的计算时,我在任务监视器中看到的CPU使用率非常低(~15%)。 在进行每个进程的详细信息时,VBoxHeadless.exe实际上使用了处理器的24%,这与docker stats命令相匹配,从而产生97-100%的CPU使用率,因此从单核操作点来看是有意义的。视图。 Result of docker stats CPU usage of Docker/VBoxHeadless 我的实际问题是,即使在线程上填充了CPU时间,windows(我猜)并不认为它实际上对加速CPU有用,因此它运行在1.7GHz(其他应用程序处于高位)性能模式,我通常达到计算机能够达到的最大3.5GHz。 CPU monitor 因此,如何从docker本身或Windows 10内部引出更高的时钟速度(标称2.7GHz或最大3.5GHZ)(考虑到它们可能会使我的单线程速度加倍)?

2 个答案:

答案 0 :(得分:0)

您需要配置运行docker的docker机器。如果您尚未创建自定义的,则名为“default”的默认docker机器只能访问一个cpu。

您可以通过运行以下命令检查此docker-machine的所有配置:

docker-machine inspect default

您需要清除此默认计算机并重新创建它:

docker-machine rm default
docker-machine create -d virtualbox --virtualbox-disk-size "400000" --virtualbox-cpu-count "2" --virtualbox-memory "2048" default

您可以运行以下命令检查机器的所有可用配置选项:

docker-machine create --help

答案 1 :(得分:0)

定义CPU份额可以帮助您,但不完全正确。

CPU限制基于份额,因为这些份额是一个进程与另一个进程相比处理时间之间的权重。如果CPU处于空闲状态,则该进程将使用所有可用资源。如果第二个进程需要CPU,则将根据权重共享可用的CPU时间。 例如--cpu-shares参数定义0-768之间的共享。如果容器定义了768的份额,而另一个容器定义了256的份额,则第一个容器将拥有50%的份额,而另一个容器拥有25%的可用份额。

第一个容器下方将获得75%的份额。第二个容器将限制在25%。

docker run -d --name p1 --cpuset-cpus 0 --cpu-shares 768 image_name
docker run -d --name p2 --cpuset-cpus 0 --cpu-shares 256 image_name
sleep 5
docker stats --no-stream
docker rm -f p1 p2

重要的是要注意,如果没有其他进程正在运行,进程可以拥有100%的份额,无论定义的权重如何。