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

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

您需要configuration运行docker的泊坞窗机器。 如果你还没有创build一个自定义的,那么名为“default”的默认docker计算机只能访问一个cpu。

您可以运行以下命令来检查该docker-machine的所有configuration:

 docker-machine inspect default 

您需要清除此默认机器并重新创build它:

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

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

 docker-machine create --help 

定义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%的份额,不pipe定义的权重如何。