Docker卷与Grunt文件监视

时间:2017-08-17 14:23:54

标签: macos docker gruntjs watch

我正在将一个带有Grunt文件监视的现有项目移植到Docker开发容器中。源文件被绑定挂载到容器中,Grunt监视文件的更改(这可能是优化的,但我目前关注的是:只需在Docker中使用当前设置)。

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

delegated的说明:

  

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

cached

  

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

哪个设置相比cached 提高效果?从容器的角度来看,“阅读繁重的工作量”是什么?

简而言之:在使用文件监视的开发环境中,降低CPU使用率的最佳设置是什么? cacheddelegated

1 个答案:

答案 0 :(得分:2)

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

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

主机中占用CPU周期的罪魁祸首是 @Html.ActionLink("Generate Document", "Create", "Documents", new { TemplateId = item.ID, LoanId = item.LoanId }, new {@Class="LinkClass" , data_theid=item.ID}) //on change $("#LoanId").change(function () { // get value var theloanID = $("#LoanId").val(); // Loop all links $(".LinkClass").each(function() { // this is coming from data-theid at your link var theid = $(this).data("theid"); // the new href, the original action/id?loanid=value var theHref = "@Url.Action("Generate Document", "Create", "Documents")/"+theid+"?LoanId=theloanID"; //Update href Attribute $(this).attr("href", theHref); }); }); hyperkit。以下百分比值是五个样本的CPU使用中值:

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

功能方面我没有注意到任何差异。当更改容器外的文件时,在三种情况的每一种情况下,手表几乎会立即拾取更改。所以我现在要使用consistent模式。