我的目标是针对故意缓慢的文件系统运行测试,以测试混乱存储场景中的性能指标。在同样的意义上,有一些方法可以限制容器中的 cgroups 的内存和 cpu,我考虑过是否存在我可以施加的 io 限制。
- 有没有办法将简单的文件系统挂载到故意减慢的目录?
- 或者,有没有办法通过发出命令行操作来使容器上的 docker 容器限制磁盘操作 qoutas(不是命令行操作部分在这里很重要 - 因为如果我在 docker 容器上运行它,它将是对我来说是在 Kubernetes 内部开始的)。
我的目标是针对故意缓慢的文件系统运行测试,以测试混乱存储场景中的性能指标。在同样的意义上,有一些方法可以限制容器中的 cgroups 的内存和 cpu,我考虑过是否存在我可以施加的 io 限制。
FUSE提供了一条途径。我在https://github.com/fntlnz/fuse-example.git克隆了这个例子,并在一个战略位置添加了一个sleep()
调用:fuse-example.c
21 if (strcmp(path, filepath) == 0) {
22 stbuf->st_mode = S_IFREG | 0777;
23 stbuf->st_nlink = 1;
24 stbuf->st_size = strlen(filecontent);
25 sleep(1); // Right here
26 return 0;
27 }
然后我安装了它:
./bin/fuse-example -d -s -f /tmp/example
试了一下:
% cd /tmp/example
% time cat file
I'm the content of the only file available there
cat file 0.00s user 0.00s system 0% cpu 1.008 total
%
虽然需要一些编码,但此方法的一个优点是您可以完全控制文件系统的几乎所有显着属性和质量。