标签: cgroup

如何使用 cgroups 进行网络记账

我正在尝试获取进程组的网络统计信息。据我所知,Linux 上的复杂网络记帐通常是使用 netfilter/iptables 的记帐基础结构完成的。

因为我想为这样的群体继承遗产cgroups将是一个很好的匹配。

我最好的想法是让 iptables 匹配classid可以使用net_cls-controller设置的。

但似乎,iptables的只能设置通过这个值--set--class

那么:是否有一种很好的方法可以为 Linux 上的进程组获取(复杂而灵活的)网络记帐和日志记录?

networking linux accounting cgroup

7
推荐指数
1
解决办法
2089
查看次数

htop cgroup 列加宽

如何在 中查看文本CGROUP列的全长htop?我无法放大它。

htop-cgroup

linux htop cgroup

7
推荐指数
1
解决办法
1787
查看次数

如何为 systemd 用户切片设置 cgroup 限制?

我想限制每个用户对系统的使用。由于 Systemd 对 cgroups 有本机支持,我认为使用用户切片是可行的方法。

问题是:我不知道如何设置个人限制。我可以编辑 user.slice 单元文件以设置共同适用于所有用户切片的限制,但我没有看到对这些用户切片进行模板化的方法。

我可以通过创建一个 user-(uid).slice 单元文件来覆盖单个用户的这些设置,但我更愿意默认对所有用户应用限制。

是否可以设置默认限制?

编辑:经过一番探索后,我发现用户切片的单元文件是在 /run/systemd/system/ 中创建的。

[foo@bar Downloads]$ systemctl cat user-1000.slice
# /run/systemd/system/user-1000.slice
# Transient stub

# /run/systemd/system/user-1000.slice.d/50-After-systemd-logind\x2eservice.conf
[Unit]
After=systemd-logind.service
# /run/systemd/system/user-1000.slice.d/50-After-systemd-user-sessions\x2eservice.conf
[Unit]
After=systemd-user-sessions.service
# /run/systemd/system/user-1000.slice.d/50-Description.conf
[Unit]
Description=User Slice of foo
# /run/systemd/system/user-1000.slice.d/50-TasksMax.conf
[Slice]
TasksMax=infinity
Run Code Online (Sandbox Code Playgroud)

这些文件由 systemd 中的这段代码构建:https : //github.com/systemd/systemd/blob/401e33ed56f3cd3736bbab02ca6eb31aa592cf53/src/login/logind-dbus.c#L2928-L2998

这个文件的创建似乎被硬编码到 systemd 源代码中,并且不允许使用模板。

cgroup systemd

7
推荐指数
1
解决办法
8806
查看次数

cgroup 中报告的内存使用情况与 free 命令不同

为什么 free 命令报告的内存使用量与 cgroup 的内存使用量有很大不同?

$ free -b 
              total        used        free      shared  buff/cache   available
Mem:     2096914432   520863744  1112170496    35389440   463880192  1356828672
Swap:    2145382400           0  2145382400

$ cat /sys/fs/cgroup/memory/memory.usage_in_bytes 
857239552
Run Code Online (Sandbox Code Playgroud)

cgroups 的文档说 memory.usage_in_bytes 是一个“模糊值”。我猜这只是意味着它报告的估计值接近实际值。即使这是一个估计,我认为也不应该相差这么远。

我在 VirutalBox 虚拟机中运行 Linux Mint 18.2。

linux memory-usage cgroup

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

为什么 cgroups(blkio 服务字节)和 iotop 会产生不同的结果

我在 ubuntu 14.04 上使用 lxc 用户空间工具,我想在容器内执行一些压力测试和基准测试。我知道 free 和 htop 在容器中不能正常工作。

我在容器中使用 dd 和 bonnie++ 来强调它是 SSD 的硬盘。

现在在主机端,使用 iotop 我可以看到使用的读写 io 带宽,但在 cgroups 中我确实有不同的结果。cgroup 仅捕获一小部分服务字节,而 iotop 显示数百兆字节的带宽使用情况。

在 cgroups 中,我正在捕获此条目:/sys/fs/cgroup/lxc/disk_stress/blkio.throttle.io_service_bytes

任何想法为什么值不相等?哪一个是正确的?

linux hard-drive stress-testing lxc cgroup

6
推荐指数
1
解决办法
1603
查看次数

如何查看父进程和子进程之间的cgroups资源控制继承

以 systemd-cgls 中的层次结构为例:

\n\n
\xe2\x94\x94\xe2\x94\x80user.slice\n  \xe2\x94\x9c\xe2\x94\x80user-1000.slice\n  \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80user@1000.service\n  \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80init.scope\n  \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x803262 /lib/systemd/systemd --user\n  \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x803263 (sd-pam)  \n  \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80session-3.scope\n  \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x803260 sshd: user1 [priv]\n  \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x803362 sshd: user1@pts/1 \n  \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x803363 -bash\n  \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x803378 ssh-agent -s\n  \xe2\x94\x94\xe2\x94\x80user-0.slice\n    \xe2\x94\x9c\xe2\x94\x80session-1.scope\n    \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x803151 sshd: root@pts/0    \n    \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x803252 -bash\n    \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x803625 systemd-cgls\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我为 user.slice 设置限制,例如 5M 内存,Memory 行会清楚地报告它:

\n\n
systemctl status user.slice\n\xe2\x97\x8f user.slice\n   Loaded: loaded (/etc/systemd/system/user.slice; static; vendor preset: enabled)\n   Active: active since Mon 2016-08-22 11:32:13 CEST; 52min …
Run Code Online (Sandbox Code Playgroud)

resource-management cgroup systemd

6
推荐指数
0
解决办法
1540
查看次数

使用 cgroups 的优点/缺点是什么?

我管理着几个基于 Linux 的服务器,我们正在考虑将几个 JBoss 应用程序以及几个在 Apache 上运行的网站从具有 4 个内核的 RHEL 5.5(64 位)服务器迁移到具有24核。我的主管提到了使用 cgroups 来管理新服务器上的内存/CPU 分配的可能性。我自己做了一些阅读/研究,并且对 cgroups 的目的和它们可以做什么有很好的理解。

我的问题是,运行 cgroups 有什么好处,这是管理 JBoss 应用程序的有效方法吗?

linux jboss cgroup

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

KVM + cgroups:Dom0 进程最佳实践?

我正在从 Xen 过渡到 KVM,并将使用 Fedora 14。我计划使用 cgroups 为 VM 分配优先级。

我的问题如下:如果我将虚拟机放在不同的 cgroup 中,我是否也应该将所有其他 Domain-0(物理主机)进程放在单个 cgroup 中,然后分配较低的优先级?Xen 的类比是当 Dom0“VM”被调度时,所有的 Dom0 进程都是批量调度的,所以通过将它们全部放在同一个 cgroup 中,我将模拟这种行为。但是,由于 KVM 没有与 Xen 相同的 Dom0 IO 依赖性,我可以为 Dom0 cgroup 分配低优先级。

换句话说,所有后台 Dom0 进程(如 ntpd、yum 等)是否会与通过 cgroup 显式控制资源分配的 VM 竞争,从而导致性能下降?这里的最佳做法是什么?

process-priority cgroup kvm-virtualization

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

在 Linux 中激活 cgroup 需要什么

我有一个 Debian 挤压内核 (linux-image-2.6.32-5-openvz-amd64),根据 Doku 应该支持 cgroups。当我查看内核配置时,确实如此(或者是否需要其他一些内核配置?)

# zgrep -i cgroup /boot/config-2.6.32-5-openvz-amd64
# CONFIG_CGROUP_SCHED is not set
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_DEVICE=y
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
CONFIG_NET_CLS_CGROUP=y
Run Code Online (Sandbox Code Playgroud)

此外,根据http://wiki.debian.org/LXC,内核参数 cgroup_enable=memory 可能是必要的。我用它启动内核:

# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-2.6.32-5-openvz-amd64 root=UUID=6332fe39-7eaa-4519-b6c1-e05808284586 ro cgroup_enable=memory quiet console=ttyS0,57600n8
Run Code Online (Sandbox Code Playgroud)

但是,系统仍然没有cgroup支持!无法挂载 cgroup 文件系统,因为系统甚至不知道文件系统类型:

# mount -t cgroup none /cgroup
mount: unknown filesystem type 'cgroup'
Run Code Online (Sandbox Code Playgroud)

和:

# grep -i cgroup /proc/filesystems
#
Run Code Online (Sandbox Code Playgroud)

所以要么有错误,要么我错过了一些东西。谁能告诉我什么?是否缺少内核参数?内核配置?

linux-kernel lxc cgroup

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

cgroup v2 为空的控制器列表

我正在尝试了解 cgroups v2 是如何工作的。我这样做了:

mount -t cgroup2 none /mnt/cgroup2
Run Code Online (Sandbox Code Playgroud)

这给了我一个对象列表 /mnt/cgroup2

root@ubuntu-s-1vcpu-1gb-lon1-01:~# ls -la /mnt/cgroup2/
total 4
dr-xr-xr-x  5 root root    0 Sep  2 16:04 .
drwxr-xr-x  3 root root 4096 Sep  2 16:05 ..
-r--r--r--  1 root root    0 Sep  2 16:04 cgroup.controllers
-rw-r--r--  1 root root    0 Sep  2 16:04 cgroup.max.depth
-rw-r--r--  1 root root    0 Sep  2 16:04 cgroup.max.descendants
-rw-r--r--  1 root root    0 Sep  2 16:04 cgroup.procs
-r--r--r--  1 root root    0 Sep  2 16:04 cgroup.stat …
Run Code Online (Sandbox Code Playgroud)

linux cgroup

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