【问题标题】:Docker volume with Grunt file watch带有 Grunt 文件监视的 Docker 卷
【发布时间】:2018-01-26 00:38:52
【问题描述】:

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

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

delegated 的描述说:

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

对于cached

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

哪个设置相比cached提高性能?从容器的角度来看是“读取繁重的工作负载”吗?

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

【问题讨论】:

    标签: macos docker gruntjs watch


    【解决方案1】:

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

    • 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 模式。

    【讨论】:

    • 很高兴读到这一点,因为我有完全相同的设置,但完全无法让 Grunt 看到任何变化:/ 大约 5 小时以来我一直在做这个......
    • @MrUpsidown 在 Mac 上,这是开箱即用的事情(无论我采用了三个设置中的哪一个......这只是关于 CPU 使用率优化)。不过,我的 Windows 同事必须运行一个名为 'docker-volume-watcher' 的工具,否则 Docker 环境中的明智的 grunt 根本不会接受任何更改。
    • 我在安装 Grunt 时遇到问题。现在解决了这个问题,我也在使用委托模式(用于为 Magento 2 安装我的自定义主题文件夹),因为它绝对是最快的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多