Docker volume with Grunt file watch

Docker volume with Grunt file watch

我正在将带有 Grunt 文件监视的现有项目移植到 Docker 开发容器。源文件被绑定安装到容器中,Grunt 监视文件的变化(这可能会被优化,但我目前关心的是:简单地让当前设置在 Docker 内工作)。

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

delegated 的描述是:

the container’s view is authoritative (permit delays before updates on the container appear in the host)

对于cached

[…] provides all the guarantees of the delegated configuration, and some additional guarantees around the visibility of writes performed by containers. As such, cached typically improves the performance of read-heavy workloads, at the cost of some temporary inconsistency between the host and the container.

相比,哪个设置cached提高了性能? "read-heavy workloads"是从容器的角度看的吗?

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

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

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

占用主机中 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 模式。