标签: cgroups

cgroups隔离(分离组进程)

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

维基百科说,你可以使用cgroup来隔离组,这样就有了"组的独立命名空间,所以它们看不到彼此的进程,网络连接或文件".

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

例:

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

非常感谢您的专业知识!

linux isolation cgroups

5
推荐指数
1
解决办法
1474
查看次数

试图在debian wheezy和没有守护进程中使用cgroups

我正在尝试关注cgroups的指南,比如这个例子.我真的不确定要清楚地了解cgroups目前应该如何工作.但我确定一件事:我找到的所有指南都记录了/etc/cgconfig.conf和的用法/etc/cgrules.conf.这些文件都应该由两个守护进程,我认为应该被命名为加载cgredcgconfig.

在Debian Squeeze下,似乎这两个守护进程通过安装自动安装cgroup-bin.但是在Wheezy中,这些守护进程在包中不再存在:http://packages.debian.org/fr/wheezy/amd64/cgroup-bin/filelist.

我只是想创建某种共享托管解决方案,我想限制用户的RAM使用率.我被告知cgroups并想尝试它,但我不明白如何在Wheezy中使用该版本,我找不到任何文档来帮助我.

有人能告诉我该怎么办?那个包裹坏了吗?是否有一些全新(和未记录)的方式来配置cgroups?

debian cgroups

5
推荐指数
1
解决办法
6814
查看次数

如何为linux进程分配"内存优先级"?

我在一台小型OpenWRT路由器上运行,由于可用的RAM数量有限(32mb),无法避免交换.

大多数情况下,路由器不会执行任何其他操作,但有时会访问路由器上运行的postgresql数据库.由于tor不断运行,postgresql被完全换掉,前几次访问具有非常高的延迟,这很糟糕,因为它是一个交互使用的系统.

我已经为postgres分配了一个很好的-15值,而对于tor已经分配了+15,但它似乎并没有对内存管理造成太大影响.全局设置swappiness = 1也不会改变事情,因为无法避免交换,并且由于postgresql大部分时间都没有运行,所以无论如何都会将其换出.

有没有办法像Linux进程的内存优先级?我看了一下cgroup特定的swappiness,但是我发现的唯一描述是它影响了决策页面缓存与交换.

我正在寻找的是一个参数,告诉linux内核不要像其他进程一样将postgresql交换出来(但是我不想把整个过程搞得一团糟).或者指定swappiness = 80系统范围和swapiness = 1 for postgresql将postgresql保留在内存中,同时在需要时交换其他所有内容?

linux swap memory-management cgroups

5
推荐指数
1
解决办法
2225
查看次数

为Docker容器设置CPU的绝对限制

我正在尝试设置Docker容器CPU使用率的绝对限制.CPU共享概念(docker run -c <shares>)是相对的,但我想说的是"让这个容器每隔100毫秒使用最多20毫秒的CPU时间.我能找到的最接近的答案是使用和邮件列表中提示."一个人在使用时使用这些设置?cpu.cfs_quota_uscpu.cfs_period_usdocker run

我对LXC支持的Docker(例如pre0.9)或更高版本没有严格的要求,只需要查看正在使用的这些设置的示例 - 任何指向相关文档或有用博客的链接也非常受欢迎.我目前正在使用Ubuntu 12.04,在/sys/fs/cgroup/cpu/docker我看到这些选项:

$ ls /sys/fs/cgroup/cpu/docker
cgroup.clone_children  cpu.cfs_quota_us   cpu.stat
cgroup.event_control   cpu.rt_period_us   notify_on_release
cgroup.procs           cpu.rt_runtime_us  tasks
cpu.cfs_period_us      cpu.shares
Run Code Online (Sandbox Code Playgroud)

scheduler cpu-usage lxc cgroups docker

5
推荐指数
1
解决办法
8974
查看次数

echo $$> tasks在尝试使用cpuset时给出"设备上没有剩余空间"

我尝试了cpuset(7)手册中的示例并创建了一个cpuset Charlie.在Ubuntu 14.4 LTS和SLES 12上,我在尝试将当前进程放入cpuset时收到以下错误:

/dev/cpuset/Charlie# echo $$ > tasks

bash: echo: write error: No space left on device

有帮助吗?

cpu cgroups cpuset

5
推荐指数
1
解决办法
3700
查看次数

如何禁用linux中的oom杀手?

我目前的配置是:

> cat /proc/sys/vm/panic_on_oom
0
> cat /proc/sys/vm/oom_kill_allocating_task
0
> cat /proc/sys/vm/overcommit_memory
1
Run Code Online (Sandbox Code Playgroud)

但是当我执行任务时,无论如何都会被杀死.

> ./test/mem.sh
Killed
> dmesg | tail -2
[24281.788131] Memory cgroup out of memory: Kill process 10565 (bash) score 1001 or sacrifice child
[24281.788133] Killed process 10565 (bash) total-vm:12601088kB, anon-rss:5242544kB, file-rss:64kB
Run Code Online (Sandbox Code Playgroud)

更新

我的任务习惯于科学计算,这需要花费很多回忆,似乎overcommit_memory=1可能是最好的选择.

更新2

实际上,我正在研究一个数据分析项目,它花费的内存超过了16G,但我被要求限制它们5G.可能无法通过优化程序本身来实现此要求,因为项目使用了许多子命令,并且大多数子命令不包含类似Java XmsXmxJava 中的选项.

更新3

我的项目应该是一个过度的系统.正如a3f所言,似乎我的应用程序更喜欢xmalloc在mem分配失败时崩溃.

> cat /proc/sys/vm/overcommit_memory
2
> ./test/mem.sh
./test/mem.sh: xmalloc: .././subst.c:3542: cannot allocate 1073741825 bytes …
Run Code Online (Sandbox Code Playgroud)

linux cgroups docker

5
推荐指数
1
解决办法
1万
查看次数

Systemd cgroup 标志已通过,但 systemd 对管理 cgroup 的支持不可用 - Docker 错误

docker不久前安装在我的 aws linux 机器上,并将其用于kong测试目的,机器详细信息:Linux ip-172-31-10-102 4.9.70-22.55.amzn1.x86_64#1 SMPWed Dec 2023:36:28 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

今天,当我尝试在我的 docker 中运行普通的 hello-world 容器时,我遇到了以下错误。

[root@ip-172-31-10-102 ~]# docker run hello-world
systemd cgroup flag passed, but systemd support for managing cgroups is not 
available
docker: Error response from daemon: oci runtime error: systemd cgroup flag 
passed, but systemd support for managing cgroups is not available.
ERRO[0000] error waiting for container: context canceled
Run Code Online (Sandbox Code Playgroud)

我不确定这里的配置有什么问题,我可以看到 docker 信息和容器列出所有内容,但无法运行容器。我尝试重新安装 docker,但仍然看到相同的错误。

linux containers cgroups systemd docker

5
推荐指数
0
解决办法
1485
查看次数

不受信任的 Docker 容器会造成什么损害?

假设我在我的 Linux 机器上运行一个带有恶意软件的 docker 容器,可以造成什么损害?

在 CPU、内存、磁盘 I/O、网络 I/O、系统方面运行 Docker 的安全问题列表是什么?

我的第一个猜测(完成):

容器将能够消耗我的 CPU,因为无法限制容器可以使用的 CPU 百分比。

它还可以直接访问我的 Linux 内核,这可能也不是很好(如果没有被 SE Linux 锁定)。

它是否能够完全填满我的磁盘或将糟糕的东西注入内存?

linux security containers cgroups docker

5
推荐指数
1
解决办法
213
查看次数

Docker容器如何判断其内存是否有限?

我在cgget -n --values-only --variable memory.limit_in_bytes /Docker容器中使用,以查看允许使用的内存量docker run --memory=X.但是,我需要知道内存是否有限,上面的命令没有回答,因为在这种情况下它会给我一个很大的数字(9223372036854771712在我的测试中).

那么,有没有办法判断内存是否有限?我正在寻找不涉及docker run以特殊方式运行的解决方案,例如从主机安装文件(例如/var/...)或传递环境变量.

cgroups docker

4
推荐指数
1
解决办法
1375
查看次数

kubernetes pod 中的容器是否属于同一 cgroup?

在多容器 Kubernetes pod 中,容器是同一个 cgroup(连同 pod)的一部分还是为每个容器创建一个单独的 cgroup。

cgroups docker kubernetes docker-container kubernetes-pod

4
推荐指数
1
解决办法
376
查看次数