我正在将一个带有Grunt文件监视的现有项目移植到Docker开发容器中。源文件被绑定挂载到容器中,Grunt监视文件的更改(这可能是优化的,但我目前关注的是:只需在Docker中使用当前设置)。
在Mac上,我遇到了巨大的CPU使用率,所以我读了osxfs的performance tuning guide。该指南提到了cached
和delegated
音量模式。
delegated
的说明:
容器的视图具有权威性 (允许在容器更新出现在主机之前的延迟)
cached
:
[...]提供委派配置的所有保证,以及围绕容器执行的写入可见性的一些额外保证。因此,缓存通常会提高读取繁重工作负载的性能,但代价是主机和容器之间存在一些暂时的不一致。
与哪个设置相比cached
提高效果?从容器的角度来看,“阅读繁重的工作量”是什么?
简而言之:在使用文件监视的开发环境中,降低CPU使用率的最佳设置是什么? cached
或delegated
?
答案 0 :(得分:2)
好的,所以我做了一些测试,这是我的结果。设置:
主机中占用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
模式。