我正在尝试了解如何cgroup
在 Ubuntucgroup
上工作,但似乎在 Ubuntu 13.04 中不起作用。我正在使用这个问题的答案如何永久设置给定进程的 cpu 限制。cpulimit 和 nice 不起作用
这些是我所做的:
安装cgroup
:
sudo apt-get install cgroup-bin
Run Code Online (Sandbox Code Playgroud)重启
使cgroup
您的用户(过程的所有者):
sudo cgcreate -a ipeacocks -g cpu:ipeacocks
Run Code Online (Sandbox Code Playgroud)运行命令:
echo 100 > /sys/fs/cgroup/cpu/ipeacocks/cpu.shares
Run Code Online (Sandbox Code Playgroud)和命令:
cgexec -g cpu:ipeacocks stress --cpu 4
Run Code Online (Sandbox Code Playgroud)和输出:
cgroup change of group failed
Run Code Online (Sandbox Code Playgroud)
为什么?我做错了什么?
我想使用cgroup
.
到目前为止,我已经完成了以下工作:
我安装了一些软件包:
sudo apt-get install cgroup-bin cgroup-lite cgroup-tools cgroupfs-mount libcgroup1
Run Code Online (Sandbox Code Playgroud)然后我创建了/etc/cgconfig.conf
包含以下内容的文件:
mount {
cpuset = /cgroup/cpuset;
cpu = /cgroup/cpu;
cpuacct = /cgroup/cpuacct;
memory = /cgroup/memory;
devices = /cgroup/devices;
freezer = /cgroup/freezer;
net_cls = /cgroup/net_cls;
ns = /cgroup/ns;
blkio = /cgroup/blkio;
}
group limitcpu{
cpu {
cpu.shares = 400;
}
}
group limitmem{
memory {
memory.limit_in_bytes = 512m;
}
}
group limitio{
blkio {
blkio.throttle.read_bps_device = "252:0 2097152";
}
}
group browsers{
cpu {
cpu.shares = …
Run Code Online (Sandbox Code Playgroud)我正在尝试测试 cgroup,在我设置它之后,我偶然发现了那个错误。这就是我所做的:
我运行了命令:
sudo cgcreate -t test:grp -a sleax -g memory,cpu:grp
echo '10000000'> /sys/fs/cgroup/memory/grp/memory.limit_in_bytes
Run Code Online (Sandbox Code Playgroud)
然后我去用用户测试试试:
test@sleax-PC:~$ cgexec stress -t 20 -c 99 -i 99
cgroup change of group failed
Run Code Online (Sandbox Code Playgroud)
这就是我得到的错误。为什么?我设置-t test:grp
所以测试能够写入PID。
将 Ubuntu 21.04 升级到 21.10 后,我遇到了这个问题:Chromium/Firefox 无法启动。错误(在终端中看到)是:
$ firefox
cannot attach cgroup program: Operation not permitted
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在资源有限的 Ubuntu 14.04 桌面系统上配置 cgroup 的一致方法。
我想做什么:
我了解 cgroup 配置,以及如何使用 cgexec 为特定组启动进程。问题是下一步。
我已经构建了一个有效的 /etc/cgconfig.conf 文件,我能够使用 cgconfigparser 成功解析和激活该文件以获取配置的 cgroup。然而,这是据我所知。
我曾尝试使用 cgmanager,但该服务似乎也没有从 /etc/cgconfig.conf 配置。一般来说,我很难找到有关如何在 Ubuntu 桌面系统上配置和使用 cgroup 的信息。
那么,有人能指出我正确的方向吗?我需要安装什么服务,它遵循什么配置文件?
需要明确的是:我不是在寻找容器。它是在单个专用系统上构建资源处理。
非常感谢 :)
我安装了 Ubuntu 16.04.6 LTS。
之前我已经从其存储库将 Docker 安装为docker.io
包。
昨天我用 LXD 安装了 LXC,我想它们与 Docker 共存存在一些问题。
LXC正常工作:
Run Code Online (Sandbox Code Playgroud)$ lxc exec ubuntu-test -- su --login ubuntu-test ~ #
现在,当我尝试启动 docker 容器时,docker run
出现错误:
Run Code Online (Sandbox Code Playgroud)docker: Error response from daemon: cgroups: cannot find cgroup mount destination: unknown.
如何通过启动 Docker 容器来解决此问题?
如果可能,请建议同时安装 Docker 和 LXC/LXD 的解决方案。
一些调试信息:
$ mount | grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (rw,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/cpu,cpuacct type …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Ubuntu 20.04.3 在树莓派集群上设置 kubernetes 集群。在许多可用的在线指南中,其中提到的步骤之一如下:
编辑/boot/firmware/cmdline.txt
并添加cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 swapaccount=1
在末尾。
上面提到的步骤没有任何解释。因此,为了检查我当前的配置(不应用上述启动配置),我运行/proc/cgroups
它给出了以下输出:
#subsys_name hierarchy num_cgroups enabled
cpuset 8 1 1
cpu 4 43 1
cpuacct 4 43 1
blkio 7 43 1
memory 0 51 0
devices 10 43 1
freezer 3 2 1
net_cls 2 1 1
perf_event 5 1 1
net_prio 2 1 1
pids 6 48 1
rdma 9 1 1
Run Code Online (Sandbox Code Playgroud)
由于需要禁用交换,我检查过它已经被禁用。因此我有以下问题:
cpuset
已启用的输出,因为已启用列的值为 1。我对么?如果是的话,是否需要明确设置cgroup_enable=cpuset
?memory
我相信它未启用。我对么?如果是这样,那么 …我安装了 ubuntu 21.10。我通过运行确认我正在使用 cgroup v2 mount
,这显示cgrup2 on /sys/fs/cgroup type cgroup2
.
当我想使用cgcreate
fromcgroup-tools
创建一个新组时cpu
:
sudo cgcreate -g cpu:newgroup # or
sudo cgcreate -g all:newgroup
Run Code Online (Sandbox Code Playgroud)
它失败并出现错误:
cgcreate: libcgroup initialization failed: Cgroup is not mounted
Run Code Online (Sandbox Code Playgroud)
我有几个问题:
cgroup-tools
适用于 cgroup v1 吗?我最近将一个版本从 12.04 升级到 14.04,发现我的 cgconfig.conf 文件在启动时不再被读取。
该文件似乎是正确的,因为我可以显式加载它
sudo cgconfigparser -l /etc/cgconfig.conf
Run Code Online (Sandbox Code Playgroud)
但这不会在重新启动时自动发生,这意味着在启动时运行的其他脚本会失败(因为它们依赖 cgexec 和 cgconfig.conf 中定义的组)。
我需要做些什么才能自动使用该文件?(即安装一些包)我必须以某种方式将此文件转换为其他文件吗?
这曾经在升级前正常工作,所以我对可能出现的问题感到困惑。
我认为应该对此负责的“cgroup-lite”包也已安装。
提前致谢。
在运行Ubuntu 14.04.5 LTS的主机中,我有一个名为ci的用户,该用户可以创建一个同样运行Ubuntu 14.04.5 LTS的启动非特权 lxc 容器。用户的 subid 范围为200000-231071。这样一个容器的配置文件是:
# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.include = /usr/share/lxc/config/ubuntu.userns.conf
lxc.arch = x86_64
# Nested
lxc.mount.auto = cgroup
lxc.aa_profile = lxc-container-default-with-nesting
# Container specific configuration
lxc.id_map = u 0 200000 65536
lxc.id_map = u 100000 265536 65536
lxc.id_map = g 0 200000 65536
lxc.id_map = g 100000 265536 65536
lxc.rootfs = /home/ci/.local/share/lxc/ci/rootfs
lxc.utsname = ci
# Network configuration
lxc.network.type = veth
lxc.network.flags = up …
Run Code Online (Sandbox Code Playgroud) 我刚刚将我的 Ubuntu 16 更新到 18.04.1 LTS,重新启动后它无法启动(完全没有响应)。我试过在安全模式下启动并且工作正常,但我看到 上有一个错误cgmanager
,特别是:
Failed to start Cgroup management daemon. See 'systemctl status cgmanager.service' for details.
Run Code Online (Sandbox Code Playgroud)
重启好像不行。当我检查 cgmanager 日志(在新贵时)时,我看到的唯一消息是:
initctl: Method "NotifyCGroupManagerAddress" with signature "s" on interface "com.ubuntu.Upstart0_6" doesn't exist
Run Code Online (Sandbox Code Playgroud)
我不熟悉 upstart 过程,所以我的第一个猜测是 cgmanager 未能使用其余软件包进行更新。在冒险之前,我想征求专家的意见。