Docker卷与Grunt文件观看

我正在使用Grunt文件监视器将现有项目移植到Docker开发容器。 源文件被绑定到容器中,Grunt监视文件的变化(这可能是优化的,但我目前的担心是:只需要在Docker中使用当前的设置)。

在Mac上,我遇到了巨大的CPU使用,所以我阅读了osxfs的性能调优指南 。 该指南提到了cacheddelegated音量模式。

delegated的描述说:

容器的视图是权威的(允许容器上的更新在主机上出现之前的延迟)

对于cached

提供委托configuration的所有保证,以及围绕容器执行写操作的可见性的一些额外保证。 因此,caching通常会提高读取繁重工作负载的性能,代价是主机和容器之间存在一些暂时的不一致。

相比之下, cached 提高了性能? 从容器的angular度来看,“读取繁重的工作量”是什么?

长话短说:对于使用文件监视的开发环境,减lessCPU使用率的最佳设置是什么? cacheddelegated

好吧,我做了一些testing,这是我的结果。 build立:

  • MacBook Air 11“,2014年初
  • macOS 10.12.6
  • Docker 17.06.0-ce-mac19(18663)
  • 观看约1,000个文件的任务轮询

在主机中hyperkit CPU周期的罪魁祸首是hyperkitcom.docker.osxfs 。 以下百分比值是五个样本的CPU使用率中位数:

  • delegated :18.7%hyperkit + 0.0%com.docker.osxfs = 18.7%
  • cached :24.3%hyperkit + 0.1%com.docker.osxfs = 24.4%
  • default aka。 consistent :152.0%hyperkit + 68.9%com.docker.osxfs = 220.9 %(!)

function方面,我没有注意到任何区别。 当在容器外面改变文件时,三种情况中的每一种情况都立即由手表拾取变化。 所以我现在要使用delegated模式。