问题标签 [cgroups]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
27892 浏览

android - 安卓进程调度

我试图更好地理解,以便在创建 android 应用程序/服务时确定潜在互操作性问题对可靠性的影响。我想弄清楚如何确定进程优先级。服务和活动之间的优先级差异,以及调度程序是否以不同方式处理它们的优先级。基本上,我试图深入了解活动或服务被来自不同应用程序(甚至是 linux 内核)的流氓进程饿死的可能性有多大。

有没有人有任何你可以推荐的好链接...我的搜索还没有出现太多。

谢谢!

编辑:我关心的是处理器时间切片/调度,而不是内存资源(内存资源在 android 文档中有很好的描述。)再次感谢!

0 投票
1 回答
461 浏览

linux - Linux 上的 CFS 优先级调度程序

如何避免孩子继承父母的 cgroup?

在我的系统中,我有一些 cgroup 层次结构,其中一个进程在某个特定的 cgroup 下运行,它产生了一些进程,而子进程默认在同一个 cgroup 下运行,但我不希望它继承父 cgroup。有没有办法通过使用一些API来做到这一点?

0 投票
1 回答
1682 浏览

linux - linux cpuset 不工作

我在使用 cpuset 时遇到了麻烦,如果你能帮助我,那就太好了。我已经定义了两个 cpuset 组:“cpuset_0”只有一个任务,“cpuset_1”用于我系统中的所有其他任务。“cpuset_0”具有 cpus="0"、cpu_exclusive="1" 并且只有一个任务分配给它。并且“cpuset_1”具有 cpus="1-3"、cpu_exclusive="0" 以及我可以从根 cpuset 作为根移动的所有任务。两个 cpuset 都有 mems="0"。问题是由于某种原因,我看到分配给“cpuset_1”的任务在独占 cpu“cpuset_0”上运行

例如运行ps H -eo tid,psr,cgroup,cmd 给了我:

2199 0 6:cpuset:/cpuset_1?5:freeze /usr/lib/chromium-browser/chromium-browser

在不应在 cpu 0 上运行的其他进程中。

顺便说一句:我正在运行内核版本 3.2.0

0 投票
0 回答
856 浏览

mpi - 如何将 cgroup 用于 MPI 程序

由于 MPI 进程是由 mpirun/mpiexec 调用的,而不是由资源管理器或调度程序(torque/maui)调用的,那么如何使用 cgroup 来隔离每个 MPI 进程的内存和 cpuset 使用情况,注意我们不能修改 MPI 库(openmpi /mpich2),但是可以修改资源管理器和调度器,谢谢。

0 投票
1 回答
4663 浏览

linux - 没有 chroot 的 LXC

有没有办法使用 LXC 进行资源管理,使用进程组而不创建容器?我正在开发一个在沙箱中运行任意代码的服务,对此我只对硬件资源管理感兴趣。我不想要任何 chrooting;我只希望这些进程组能够访问主文件系统。

有人告诉我 lxc 是轻量级的,但是我看到的所有示例都为每个 lxc 进程创建了一个新容器(即具有完整操作系统的目录)。我真的不明白这比任何其他 VM 解决方案要轻得多。

那么有没有什么方法可以使用 LXC 来控制和管理多个进程组,而无需为每个进程组创建单独的容器?

0 投票
2 回答
1618 浏览

linux - cgroups 隔离(分离组进程)

我有一个关于 cgroups 的问题,特别是考虑到隔离。

维基百科指出,您可以使用 cgroups 来隔离组,以便“组有单独的命名空间,因此他们看不到彼此的进程、网络连接或文件”。

我已经知道,如何在组之间共享或划分内存或 cpu,但想知道,组或用户如何只能看到他们自己的进程(例如必须在 cgrules.conf 和 cgconfig.conf 中的内容)。

例子:

当指定组的用户在他的控制台中输入 ps(或 ps -aux)时,应该只列出他的进程,而不是其他用户/组的进程(如 ps -u)。我知道我可以做一个快速而肮脏的编程方法来完成这样的事情,但我想知道它如何与 cgroups 一起工作。

非常感谢您的专业知识!

0 投票
2 回答
586 浏览

linux - Hadoop:将 cgroups 用于 TaskTracker 任务

cgroups是否可以通过将 TaskTracker 生成的每个进程分配给特定 cgroup 的方式来配置Hadoop?

我想使用cgroups. 可以将 cgroup 分配给 TaskTracker,但如果作业造成严重破坏,TaskTracker 也可能会被 杀死,oom-killer因为它们在同一个组中。

假设我的机器上有 8GB 内存。我想为 DataNode 和系统实用程序保留 1.5GB,并让 Hadoop TaskTracker 使用 6.5GB 内存。现在我使用流式 API 开始一个作业,生成 4 个映射器和 2 个减速器(理论上每个都可以使用 1GB RAM),它们占用的内存超出了允许的范围。现在cgroup将达到内存限制,并且 oom-killer 开始终止作业。我宁愿为每个 Map 和 Reduce 任务使用一个 cgroup,例如一个cgroup限制为 1GB 内存的 cgroup。

这是一个真实的或更理论上的问题吗?真的会oom-killer杀死 Hadoop TaskTracker 还是会先杀死分叉的进程?如果后者在大多数情况下是正确的,我的想法可能会奏效。如果不是 - 一个糟糕的工作仍然会杀死所有集群机器上的 TaskTracker 并需要手动重新启动。

使用 cgroups 时还有什么需要注意的吗?

0 投票
1 回答
323 浏览

virtualization - 如何动态设置cpuset.cpus?

我一直在尝试在某些特定的 cpu 内核上运行 VM。现在问题是我可以使用 virt-install 设置 cpuset,这将反映在 VM 的 XML 中,它将定义亲和力。但是 cpuset.cpus 呢?那是直接从父母那里继承的。启动VM时有什么方法可以设置它吗?我的意思是,当我发出命令 virt-install 时,有没有可以动态设置 cpuset.cpus 的选项?

0 投票
1 回答
296 浏览

virtualization - cpuset.cpu_exclusive 在 libvirt 中没有给出想要的结果

因此,基本上 cpuset.cpu_excluvie 标志限制处理器仅运行特定 cpuset 中存在的进程。现在,我有一个具有 3 个 cpu 的虚拟机,并且我启动了三个虚拟机实例,为每个实例设置了一个 cpu。这意味着,我的三个实例有一个专用的 CPU,而我的主机只有三个 CPU。我无法理解的是我如何能够在系统上工作?我在某个地方有隐藏的 CPU 吗?!还是排他性属性不是排他性的?

0 投票
1 回答
3090 浏览

linux - cgroup 中的层次结构支持有什么作用?

cgroup有 2 个内存控制选项:

  • memory.use_hierarchy = 1: 使用层次结构
  • memory.use_hierarchy = 0:使用平面层次结构,根据这个答案

两者有什么区别?我想,层次就是层次,这里的“扁平”是什么意思?

编辑:我在这里阅读了 cgroup 文档,解释了分层支持:

在上图中,启用分层记帐后,e 的所有内存使用量都计入其祖先,直到启用了 memory.use_hierarchy 的根(即 c 和根)。如果祖先之一超过其限制,则回收算法从祖先中的任务和祖先的子代中回收。

  • 这是什么意思accounted to its ancestors up until the root
  • 祖先怎么能超过它的极限,因为它的孩子的能力被分配给祖先的能力?
  • 为什么任务在祖先和孩子中都被回收?我认为任务只分配给孩子,这些任务自动属于祖先。即“WWW 浏览”有 20% 的容量;它的孩子是分别有15%和5%的“教授”和“学生”。最大值永远不能超过 20%。为什么文件中有一个案例说:

如果祖先之一超过其限制,则回收算法从祖先中的任务和祖先的子代中回收。