2017-08-17 79 views
2

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

在Mac上,我遇到了巨大的CPU使用,所以我读了osxfs的performance tuning guide。该指南提到了cacheddelegated音量模式。

delegated描述说:

: (允许延迟之前在容器上更新显示在主机)

对于cached

容器的观点是权威[...]提供委托配置的所有保证,以及围绕vi的一些额外保证容器执行写操作的可靠性。因此,缓存通常会提高读取繁重工作负载的性能,代价是主机和容器之间存在一些暂时的不一致。

相较于设置不cached提高性能?从容器的角度来看,“读取繁重的工作负载”是什么?

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

回答

1

好吧,所以我做了一些测试,这里是我的结果。设置:

  • 的MacBook Air 11" ,早期的2014
  • MACOS 10.12.6
  • 多克尔17.06.0-CE-mac19(18663)
  • 手表任务轮询〜1000个文件

在主机中吃掉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又名。 consistent:152.0%hyperkit + 68.9%com.docker.osxfs = 220.9%

功能,聪明的我没有看到任何差别(!)。在容器外更换文件时,三种情况下,手表几乎立即都会收到更改。所以我现在要使用delegated模式。

+0

很好的阅读,因为我有完全相同的设置,但完全无法让Grunt观看任何变化:/我在这个约5小时以来... – MrUpsidown

+1

@MrUpsidown在Mac上这工作超出了-box afair(不管我采取的三种设置中的哪一种......这只是关于CPU使用率优化)。但是,我的Windows同事必须运行一个名为'docker-volume-watcher'的工具,否则Docker环境中的聪明咕噜声根本不会收到任何更改。 – qqilihq

+0

我的Grunt安装出现问题。现在有了这个固定的,我也使用委托模式(为Magento 2安装我的自定义主题文件夹),因为它绝对是最快的方法。 – MrUpsidown