LXC文档说: 在创build第一个容器之前,您可能应该注销并重新login,或者重新启动计算机,以确保将用户放置在正确的cgroup中。 有人可以解释为什么这是需要运行的东西: lxc-usernsexec -mb:0:100000:1 — bash 我在/etc/subgid和/etc/subuid有适当的映射。 但是这个命令只是说在我重启之前拒绝了权限。 什么是正确的cgroups代表? 编辑 在安装LXC之前: jml@somehost:~$ cat /proc/self/cgroup 2:name=systemd:/user/1002.user/123.session 安装LXC并重新启动后: jml@somehost:~$ cat /proc/self/cgroup 11:hugetlb:/user/1002.user/5.session 10:perf_event:/user/1002.user/5.session 9:blkio:/user/1002.user/5.session 8:freezer:/user/1002.user/5.session 7:devices:/user/1002.user/5.session 6:memory:/user/1002.user/5.session 5:cpuacct:/user/1002.user/5.session 4:cpu:/user/1002.user/5.session 3:cpuset:/user/1002.user/5.session 2:name=systemd:/user/1002.user/5.session 请注意,我所属的组别没有差异。 我注意到的唯一的变化是那些cgroups 。 现在让这些cgroups影响在命名空间中映射用户的能力?
我想用cgroups来限制linux中的资源 http://en.wikipedia.org/wiki/Cgroups 如果碰到一个限制,我怎么能通知。 例如,如果我将进程限制为2个演出或ram,如果我没有主动监视它,我将如何知道它何时到达?
我一直在研究如何沙盒进程,我碰到了cgroups,看起来很有希望。 我并不是特别喜欢使用虚拟化或strace,因为我希望程序运行得尽可能快。 我也意识到SELinux / AppArmor,但我正在寻找一些不需要内核修补的东西,如果可能的话。 我知道cgroups可以用来限制cpu / mem的使用和文件系统的访问,但它可以用来防止打开套接字或绑定到端口的进程? 或者,有什么我可以用cgroups来限制networking访问? 能够分别限制每个将是真棒。 再次感谢!
我正在寻找一种方法来透明地冻结(暂停)一个进程,然后解冻。 这可以通过SIGSTOP ,但是SIGSTOP会导致通知父(通过从waitpid返回),这会导致bash将交互式进程置于后台(该方法的问题将在此链接中进行更详细的描述)。 cgroup子系统有办法通过写入/sys/fs/cgroup/freezer/文件来完成这个任务 ,但是只能在cgroup级别应用 – 也就是说,一次只能冻结整个进程/线程组。 我想可以通过安排将每个进程放置在自己的cgroup中来解决这个问题,但是这似乎是一个相当麻烦的问题,而且自从systemd等之后可能会很危险。 已经在为自己的目的使用cgroups 。 我非常接近编写一个内核模块,将底层的freeze_task API暴露给用户空间,但是如果可能,我真的很想避免这样做!
systemd在/system.slice/process-name.service cgroup中启动一个进程。 我想在不同的cgroup中启动这个过程。 我可以在ExecStart选项中使用cgexec来做到这一点,但有没有更好的办法?
我有一个Debian挤压内核(linux-image-2.6.32-5-openvz-amd64),根据Doku应该支持cgroups。 当我查看内核configuration时,它确实(或者需要其他一些内核configuration?) # 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 而且,根据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 但是,系统仍然没有cgroup的支持! cgroup文件系统无法挂载,因为文件系统types甚至不知道系统: # mount -t cgroup none /cgroup mount: unknown filesystem type 'cgroup' 和: # […]
相关: 使subprocess的整体内存使用率 有没有一种方式让非特权用户或root用户允许非特权用户创build一个systemd作用域(或由systemdpipe理的其他控制组),以便该作用域的内存使用量是有限的,并且该限制可由用户? 或者,为什么这不能达到上述效果: $ systemd-run –scope –user –unit=limit-test.scope bash Running as unit limit-test.scope. $ systemctl show –user limit-test.scope |grep Mem MemoryAccounting=no MemoryLimit=18446744073709551615 $ systemctl set-property –user limit-test.scope MemoryAccounting=yes $ systemctl set-property –user limit-test.scope MemoryLimit=100M $ systemctl show –user limit-test.scope |grep Mem MemoryAccounting=yes MemoryLimit=104857600 $ python >>> a = [1]*1000000000 # happily eats 7.4G of […]
OS版本信息: [root@localhost system]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) test.slice的configuration如下: [root@localhost system]# cat test.slice [Unit] Description=Test Slice Documentation=man:systemd.special(7) DefaultDependencies=no Before=slices.target Wants=-.slice After=-.slice [Slice] CPUAccounting=on CPUShares=1024 我创build了另一个文件(称为testhigh.slice),并给它CPU份额= 128。当我启动CPU饥饿的进程在任何时候,我看到CPU按比例划分,如预期。 但是 ,似乎没有办法实际上将一个切片的CPU限制到例如10%的恒定值。 CPUQuota选项无法被systemd识别: Apr 23 21:34:00 localhost.localdomain systemd[1]: [/usr/lib/systemd/system/test.slice:22] Unknown lvalue 'CPUQuota' in section 'Slice' 原则上,能够精确分配资源将是惊人的,但现在我无法得到这个工作。 请帮忙; 如果可能的话,我想从systemd框架中获得一个解决scheme。
我们使用来自Penguin Computing的Scyld发行版运行Beowulf集群,看起来cgroups是在头节点上configuration的,而不是在计算节点上configuration的。 我试图configurationSlurm使用proctrack/cgroup插件,但它不能在计算节点上工作。 例如,我可以列出头节点上的cgroup,但不能在计算节点上列出: $ bpsh -1 systemd-cgls ├─1 /usr/lib/systemd/systemd –switched-root –system –deserialize 21 ├─user.slice … $ bpsh 1 systemd-cgls Failed to create bus connection: No such file or directory $ 如果我查看cgroup系统的安装点,它将安装在头节点上,而不是安装在计算节点上。 计算节点在该位置只有一个空目录。 $ bpsh -1 findmnt /sys/fs/cgroup TARGET SOURCE FSTYPE OPTIONS /sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,mode=755 $ bpsh 1 findmnt /sys/fs/cgroup $ bpsh 1 ls […]
在cgroups中,每个子系统似乎都有一个名为“cgroup.clone_children”的选项 ,允许您指定是否将父cgroup的设置inheritance到子cgroup中。 但是我还没有find任何证据certificate它有效。 我希望使用此function,通过使用层次结构来更容易地pipe理cgroups,以复制所有组共有的设置,并只调整子组cgroups中的次要设置。 任何人有一个想法,如果我想要做什么可以做?