3

我正在测试 mesos cgroups 隔离。看看会抛出什么样的错误。我用马拉松运行了下面的shell程序。分配了 1 MB 内存和 1 个 CPU。

 #!/bin/sh

temp=a
while :
do
    temp=$temp$temp
    echo ${#temp}
    sleep 1
done

单个字符占用 1B 空间,因此一旦临时字符串的长度达到约 1 MB,上述程序需要抛出异常。但是这些任务似乎被随机杀死。该任务有时会在长度为 1048576 或 2097152 或 4194304 时被终止。理想情况下,由于 1MB 是长度为524288时它应该停止的限制。

附加信息 - Slave 使用 --isolation='cgroups/cpu,cgroups/mem' Mesos 版本运行 - 0.25

4

1 回答 1

1

您看到的差异可以用以下方式解释:

  • 脚本占用的内存量不是完全确定的,因为它取决于 shell 解释器的实现以及系统共享库的大小(即加载到程序驻留集中的那些库的部分)。
  • Mesos 中的一个 1 MB 任务伴随着 32 MB 给执行者。由于执行程序需要的空间略小于 32 MB,因此您的任务将拥有略多于 1 MB 的空间。
于 2016-11-17T18:02:36.233 回答