- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道当启用 cgroup 时,在 Mesos 上细粒度模式下 Spark 的行为会是什么。
一个问题如下:当我在没有 cgroups 的情况下使用 Mesos+spark 时,它已经表明实际的 spark 执行程序进程使用的内存至少比它向 Mesos promise 的要多使用 10%。启用 cgroups 时,它会杀死 Spark 执行程序吗?
其次,文件缓存是如何处理的? Spark 严重依赖文件缓存。 file-cache 是否计入 Mesos 的内存量?可能不会,但我们可以影响它吗?因此,例如,理想情况下我希望 Spark 总共使用 8GB,其中 5GB 应该用于 java 进程——假设 spark 运行良好并且不会增长超过 5GB——3GB 应该用作文件缓存(最大).
我希望有人有这方面的经验,因为为了自己测试这些东西,我将不得不通过我们的集群系统管理员的大量支持请求,因为 cgroups 一度依赖于 root 凭据 - 我讨厌不问别人也是白费力气。
最佳答案
要回答您的第一个问题,您似乎混淆了 cgroups 的工作方式。执行者根本不会(而且它确实如此,正如我可以确认的那样)能够分配比 cgroups 允许的更多的内存。所以 Mesos 实际上不会充当进程 killer 或任何东西*。但是,某些类型的程序确实会因为无法分配更多内存而中断,这取决于程序是否退出,或者是否能够正常运行,但可能内存和/或性能较低。
对于您的第二个问题,似乎没有任何配置设置可以影响实际的 cgroup 内存量。执行程序内存设置与 Spark 从 Mesos 获取的内容之间似乎存在一对一的映射。但是,我确实认为有一个隐藏因素,因为我可以看到 Spark 要求大约 5.8GB,但实际上我将执行程序内存设置为 5GB。 (一旦我能在源代码中找到这个大约 15% 的隐藏因素,我将更新票证。)
更新,您需要的设置是 spark.mesos.executor.memoryOverhead
。您可以给出一个以兆字节为单位的数字,该数字将添加到执行程序内存中作为将用作 Mesos 资源的总内存,从而作为 cgroup 内存限制。
*=Update2,实际上 cgroups 默认情况下会杀死超出控制组限制的进程。我可以确认 /cgroups/memory/x/
中的 memory.oom_control
设置为“0”(这违反直觉已启用)。然而,就 Spark 而言,正是上述 10-15% 的开销提供了足够的回旋余地,不会遇到 OOM。
关于apache-spark - 将 cgroups 用于 Spark 时 Mesos 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37730715/
我在 上做了以下两件事Ubuntu 14 和 SUSE Linux Enterprise Server 11 (x86_64) 安装 libcgroup 的地方,使用 root: cgcreate -
我是 cgroup 的新手。我想使用 cgroup 将 Qemu 绑定(bind)到某些 CPU。我正在使用我自己编译的内核 3.11.0+ 在 Ubuntu 12.04.3 上工作。 以下是我的命令
昨天我在 cgroups 内存 Controller 上遇到了一个有趣的情况。我一直认为cgroups报告的内存是进程的总内存消耗,但似乎不是这样。 我编写了以下 Java 程序用于测试: impor
我们使用cgroup限制程序使用更多资源。但是,当内存超过 cgroup 的限制时,它会杀死进程。为什么 cgroup 的内存子系统在进程允许内存超过 cgroup 限制时使用 oom-killer
我已经配置了如下的logstash配置来读取spring boot生成的日志以推送到 Elasticsearch ,但是即使logstash成功启动也没有创建索引, 配置文件: input {
cgroup driver的配置在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf Environment="KUBELET_CGROUP_A
我是 docker 新手,我插入我的 PI3 来测试一些东西,但我已经面临一个错误,我自己想不通。 所以我全新安装了 raspbian 和 docker。 这是我的安装日志 然后我尝试经典的 hell
前言 docker 使用cgrqup控制资源,K8S 里面也有limit(使用上限) docker通过cgroup来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使
我试图在kubernetes机器中设置centos,kubelets启动给了我这个错误。 Failed to get kubelets cgroup: cpu and memory cgroup hi
我正在测试 mesos cgroups 隔离。查看抛出什么样的错误。我用马拉松跑了下面的 shell 程序。已分配 1 MB 内存和 1 个 CPU。 #!/bin/sh temp=a while
我最近开始学习 docker,似乎大部分繁重的工作都是由 Linux 内核完成的,使用命名空间和 cgroup。 我发现一些令人困惑的事情是: 命名空间和 cgroup 有什么区别?他们解决了哪些不同
docker cgroup 资源监控的详解 1.cgroup术语解析: ?
我试图通过使用cgroup blkio Controller 来控制I/O 带宽。 Cgroup 已成功设置和挂载,即调用 grep cgroup/proc/mounts 返回: .... cgrou
如果我运行这个命令: su -l otheruser -c 'strace /usr/lib/systemd/systemd --user 2> /tmp/su.err' 失败了: Failed to
我知道如何使用 cgroups(分配内存、cpu 使用...)和 slurm(提交、暂停/停止工作)。我想知道 cgroups 如何与 slurm 一起工作。当我向 slurm 提交作业时,我可以在哪
我正在寻找编写一个自定义的 Mesos 执行器,它允许为我的 Rails 应用程序请求 1CPU(1024 个共享),然后在前面“插入”nginx。在这个过程中,我实际上想使用相同的共享 1024 c
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
我有一些 cgroups 管理的服务(实际上在 docker 中运行)。为了公平地安排一些需要资源的任务,容器化服务需要知道它的确切(尽可能)资源使用情况。我决定从 cgroups 中读取这些指标。
基本上,通常用于通知文件系统更改的 inotify 在 cgroup 虚拟文件系统中不起作用。 本质上,我想要一种在 cgroup 中的进程死亡或 fork 时获得类似于 inotify 的通知的方法
我试图理解 Hadoop 中的 cgroups,但无法完全理解。它们与根据配置规则为每个队列分配资源的调度程序有何不同?我的理解是,调度程序似乎更多地与内存相关,因为组与 CPU 相关。我的理解正确吗
我是一名优秀的程序员,十分优秀!