问题标签 [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 投票
0 回答
2486 浏览

cgroups - 子进程不共享父 cgroup

我是使用 cgroup 的新手。我在 CentOS 64 上使用 libcgroup 管理 cgroup。我设法创建了一些 cgroup,例如

可以说,我有一个父进程125672及其子进程33117, 33403, 33404, 33880, 34663

我想要的是移动父进程125672及其现有子进程33117, 33403, 33404, 33880, 34663以及?,?,?cgroupsblkio:/testcpu:/test. 实现这一目标的正确方法是什么?

我努力了

但是cgroup.procsandtasks文件只包含父进程ID。

这是否意味着子进程不在父母cgroup中?如果不是那么我应该怎么做。

更新

我发现cgclassify如果我这样做,而不是使用

那么所有未来的子进程也最终在/cgroup/blkio/test/cgroup.procs

0 投票
0 回答
135 浏览

php - Cgroup 在 LAMP 中不工作

我在 ubuntu 14.04 上运行 LAMP 系统。我有一个使用 php 的 rss 提要,它每 1 小时运行一次,MySQL 存储数据。

问题是当我的 RSS 提要工作时,Apache 以 100% 运行而 MySQL 以 100% 运行,所以我的网站不能被普通用户使用。

我尝试了各种选项,例如 Nice,但没有奏效。所以我尝试了 cgroup,它也不适合我。这是我到目前为止所做的

1)安装的cgroup:

2) 重启

3)为您的用户创建一个 cgroup(因为 apache 在用户 www-data 下运行,如顶部所示):

4)运行命令:

5)运行命令:

但是当没有其他进程运行时,甚至当 MySQL 等其他进程同时运行时,我的 Apache 进程仍然显示 100%。

当我运行命令时

但在顶部,Apache 运行在不同的 PID 下,如 1564,并且上述命令中显示的 PID 不同(3001)。

我确定我犯了一些错误。我究竟做错了什么

0 投票
1 回答
1017 浏览

linux - cgroups 运行良好,直到重新加载配置(挂起挂载)

我在这个问题上徘徊了很长时间 - cgroups 只是不想在再次重新加载配置文件时工作(挂起挂载),每次都必须重新启动才能使更改生效。

这是我的步骤:

(1.)操作系统的全新启动。(2.)cgsnapshot -s

(3.) cgclear(4.)cgsnapshot -s

(5.) cgconfigparser -l /etc/cgconfig.conf(6.)cgsnapshot -s

(7.)bash 脚本/etc/rc.d/rc.cgred start

现在一切正常,但是当我这样做时(相同的配置):

(8.) cgclear (9.)cgconfigparser -l /etc/cgconfig.conf

它永远挂起,当我使用 strace 时,它​​停在:

mount("cgroup", "/cgroup/cpu_mem_blkio", "cgroup", 0, "cpu,cpuacct,blkio,memory") = ? ERESTARTNOINTR(待重新启动)

有人可以指出我有什么问题吗?如何在不重新启动的情况下添加新组?这是 cgroups 的正常行为吗?

我什至尝试从这里添加这个补丁:

仍在测试,但看起来一样。

0 投票
2 回答
2805 浏览

android - adb shell top 在前台显示我的应用程序,但实际上它在后台

我有一些绑定到某个进程的服务的 Android 应用程序。

我发现adb shell top -n 1返回:

即使我的应用程序保持在后台,为什么还要top PCY告诉'fg'ae 前台?

有人可以传播这个问题吗?

这是我的 Manifest.xml:


编辑 1

我什至停止了“设置”中的通知但仍在process=":myService前台

编辑 2

来源:_

来自 其他问题的答案

对于 PCY 来说,大部分是未受过教育的,有点随机的,在黑暗中刺伤——

PCY -- Policy -- 确定应用程序应如何被 Android 的内存管理器处理

FG -- Foreground -- 进程被认为是前台进程,不应被杀死以释放内存

BG -- Background -- 进程被认为是后台进程(不在前台主动运行,可能会被杀死以释放内存)

0 投票
0 回答
211 浏览

linux - Debian 上的 root cgroup 进程行为是什么?

我正在研究 docker 如何与 Debian 上的主机操作系统共享资源。在 docker 之外运行的进程将在根 cgroup 中运行。所以归结为根 cgroup 和 docker 父 cgroup “docker”之间如何共享资源。

对于红帽,行为在此处列出:https ://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/process_behavior.html

但是,在使用 Debian 进行测试时,我看不到这种行为。当我在根 cgroup 下运行多个进程时,我看到以下内容:

每个 cgroup 中的 1 个进程:

2根cgroup中的进程:

我找不到任何说明 Debian 的这种行为的文档。我看到正确的行为了吗?为什么它与 Red Hat 不同?

0 投票
0 回答
894 浏览

linux - 使用 cgroups 配置 jstorm 时使用 cgconfigparser 挂载 Cgroup 失败

我正在尝试使用 cgconfigparser 加载 /etc/cgconfig.conf 来配置 jstorm 的 cgroup 属性。

我的操作系统是 ubuntu 14.04,用户名是“whaty”,我已经安装了 libcgroup1、cgroup-bin、cgroup-lite。/etc 中没有 cgconfig.conf。所以我手动创建它。

这是我的 cgconfig.conf

我尝试使用以下命令加载此配置: sudo cgconfigparser -l /etc/cgconfig.conf 结果显示: cgconfigparser; 加载 /etc/cgconfig.conf 时出错:Cgroup 挂载失败

这是我的 /proc/cgroups:

这是我的 cgroup 挂载:

这是 cgconfigparser 的 strace:

似乎某些资源已被占用且繁忙。我的配置有什么问题?

0 投票
2 回答
979 浏览

linux - 将内存分配给其他进程在linux中无法使用的进程

为了限制特定进程的内存资源,我们可以使用 ulimit 和 cgroup。

我想了解,如果使用 cgroup,我已经分配了大约 700 MB 的内存给进程 A,在具有 1 GB RAM 的系统上,而其他一些进程说 B,需要大约 400 MB 的内存。在这种情况下会发生什么?

  1. 如果进程 A 分配了约 750 MB 的内存,但只使用了 200 MB 的内存,那么进程 B 是否可以使用分配给 A 的内存?
  2. 如果没有,那么如何实现“将固定数量的内存分配给其他进程无法使用的进程”的场景?

编辑

是否可以为进程锁定物理内存?还是只能锁定虚拟机,使其他进程无法访问它?

有一个多媒体应用程序必须保持活动状态并且可以在内存方面使用最大的系统资源,我需要实现这一点。

谢谢。

0 投票
1 回答
1118 浏览

java - 使用 cgexec 与 cgroup.procs 使用 cgroups 进行内存记帐

昨天我在使用 cgroups 内存控制器时遇到了一个有趣的情况。我一直认为cgroups报告的内存是进程的总内存消耗,但似乎并非如此。

我编写了以下 Java 程序进行测试:

使用 运行上述程序时,内存使用情况与将 JVM 的 PID 写入cgroup 的文件cgexec时有很大不同。似乎 cgroup 在将进程放入 cgroup后会报告进程的内存使用情况。echocgroup.procs

cgroup 如何占内存?似乎在使用时cgexec,JVM 的消耗被考虑在内。另一方面,当在 cgroup 之外启动 JVM 并稍后通过将 PID 写入cgroup.procs文件将其移动到其中时,报告的内存消耗memory.usage_in_bytes保持为零,直到我按 enter 并且消耗1024 * 1024 * 4按预期上升。

此外,例如,报告的内存消耗与报告的内存消耗cgroups并不完全相同top

编辑:创建了以下 C 程序并将其用于测试。我看到了同样的结果。如果使用cgclassify,则内存利用率保持为 0 直到回车。另一方面,当使用 时cgexec,在按回车之前内存利用率 > 0。

0 投票
1 回答
374 浏览

cpu - 如何在 cgroups 的一个目录上再挂载两个子系统?

我在大学学习计算机工程。在我的学习过程中,我遇到了一些问题。

我想在一个目录上挂载两个子系统。

我尝试如下

mount -t cgroup -o cpu,cpuset cpu_and_cpuset /cgroup/cpu_and_cpuset

此命令在 redhat 手册页中有指导。

红帽手册页链接

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/sec-Creating_a_Hierarchy_and_Attaching_Subsystems.html

在我的 linux 中发生错误。

错误信息是

mount: cpu_and_cpuset 已经挂载或 /cgroup/cpu_and_cpuset 忙

但我没有安装任何子系统。
并且 /cgroup/cpu_and_cpuset 是之前创建的。
为了进行故障排除,我尝试卸载所有 cgroups 子系统。
我重试了这个命令。但结果是一样的。

挂载单个子系统时,没有问题。
如果这些子系统挂载在每个目录,并设置适当的属性,我们可以组成一个看起来像两个子系统挂载在一个目录上的环境。
但这对我来说不是一个正确的答案。

我的命令有什么问题?
这个错误有什么解决办法吗?

0 投票
1 回答
360 浏览

mesos - 达到限制时,Mesos cgroups 隔离不会杀死任务

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

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

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