01 | 认识容器:容器的基本操作和实现原理
07 | Load Average:加了CPU Cgroup限制,为什么我的容器还是很慢?
11 | 容器文件系统:我在容器中读写文件怎么变慢了?
作者回复: @姜姜
好问题!
如果dirty page的数目超过dirty_background_ratio/dirty_background_bytes对应的页面数,会有一个kernel thread把dirty page写入磁盘,这样不会阻塞当前的write()。这个kernel thread会一直刷到dirty pages小于dirty_background_ratio/dirty_background_bytes对应的页面才停止工作。
作者回复: @威
很好的问题。 perf看到的函数占比是采样比例,有可能是函数调用的次数多。而ftrace可以看到单个函数的调用时间。
这里的时间值是wall-clock time
作者回复: @Geek8819
这个例子中后来是把dirty_bytes值设置小了,让它对write()操作产生了影响。只是这个影响产生的9ms等待时间要远远高于我们之前看到的200us。这样只是说明,200us的延时不是dirty_bytes的配置引起的。
echo 8192 > /proc/sys/vm/dirty_bytes
echo 4096 > /proc/sys/vm/dirty_background_bytes
作者回复: 你指的是ftrace和perf? 在宿主机上运行的。
作者回复: (1) 这里的可用内存可以理解为"free" 命令输出的"available" 内存。
(2) 是等于 dirty pages 的内存 / 节点可用内存 *100%
(3) /proc/sys/vm/dirty_*, 在容器和宿主机上是一样的,这个值没有namespace.
作者回复: 有测试数据吗? :-)