Articles of cgroup

cgclassify可以用于基于systemd的资源pipe理吗?

所以从redhat / centos 7开始,系统资源pipe理得到了很大的改进。 在redhat / centos 7之前,cgroup使用libcgroup软件包和守护进程(如cgred)运行。 以前,如果我想把一个进程转换成一个cgroup,我可以这样做: cgclassify -g cpu:some_cgroup <pid> 然而,在研究systemd的资源pipe理时,我发现文章指出libcgroup软件包已被弃用,并且大多数在redhat / centos 7上不起作用。 如果cgclassify仍然可以工作,我很困惑我将如何使用它来移动进程,因为实际上没有命名cgroups,而是片/范围/服务。 假设我有一个用uid 1111login的用户,我创build了一些限制systemd中的资源的规则,下面的命令不能将一个进程移动到他们的用户片: cgclassify -g cpu:user-1111.slice <pid> 有没有我在这里失踪的约定? 我也看到有一个systemd-run命令几乎可以做我想要的,但是没有办法将所有当前的环境variables都传递给它,甚至不需要担心cgclassify 。 你可以传递环境variables,但是实际上传递所有的variables,你必须为通过环境variables传递的每个variables传递一个条目。 任何人有任何想让cgclassify工作,甚至只是我可以采取的方法改变?

用nftablesreplacenet_cls

我正在使用net_cls cgroup来分类来自一个进程的数据包,然后用iptables对其进行修改。 从内核和systemd家伙看来,net_cls已经被弃用了,其他工具如nftables应该做同样的事情。 我检查了nftables,它看起来像我可以使用cgroups匹配(iptables的这个问题也可以工作),但我不清楚我的cgroup会是什么。 有没有人有什么cgroup是什么暗示? 我需要创build一个吗? 我可以利用systemd或现有的一个现有的?

cgexec不inheritanceLD_LIBRARY_PATH

我的/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; blkio = /cgroup/blkio; } # make sure this cgroup cannot run more than 100% group proc1 { perm { task { uid = jmichael; gid = hpcfadmins; } admin { uid […]

子设备上的cgroup节stream阀不起作用

我们在CentOS 7 (3.10.0-514.10.2.el7.x86_64)上运行带有devicemapper的Docker容器。 对于一些容器,通过指定父块设备,我们可以轻松地通过blkio.throttle.read_bps_device来限制读取,但是对于某些容器,它只是不起作用。 这是我们的lsblk : NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 32G 0 disk └─sda1 8:1 0 32G 0 part / sdb 8:16 0 100G 0 disk ├─data-docker_thin_tmeta 253:0 0 512M 0 lvm │ └─data-docker_thin 253:2 0 90G 0 lvm │ └─docker-8:1-151197496-c619…6ed 253:4 0 10G 0 dm ├─data-docker_thin_tdata 253:1 0 […]

cgconfig守护进程重启会在root cgroup中留下线程

我想问一下,我所观察到的行为的解释 是否正确 。 行为 :重新启动cgconfig守护进程后,进程具有正确的核心关系(由tasksetvalidation),但是线程最终与所有核心(在我们的例子中为0-35,也由tasksetvalidation)结束。 解释 :closurescgconfig守护进程卸载/ cgroup文件系统。 这将所有进程放入ROOT cgroup中。 当cgconfig重新启动时,它将正确的cgroup应用于进程,而不是线程。 证据 :我执行了下面的命令,找出谁在“孤立”核心上运行19: ps -eL -o "tid,pid,psr"| grep "19$" 只有一个非内核线程应该在那里运行,但我看到了很多。 例: 180978 180957 19 检查这个tid / pid,我看到这个线程: $ taskset -pc 180978 pid 180978's current affinity list: 0-35 而这个过程 $ taskset -pc 180957 pid 180957's current affinity list: 1,3-18,20-28,30,32,33,35 所以线程以某种方式结束与过程的不同亲和力。 此外,看下/ cgroup挂载产生这个过程: $ find /cgroup/cpuset -name […]

如何检测一个进程是否由于超过限制而被cgroup杀死?

我在/etc/cgconfig.conf中定义了一个全局cgroup,它限制了内存的数量。 每次用户运行一个命令时,我都会使用cgexec将进程及其subprocess添加到受控组。 有时候限制会引发并杀死用户进程。 如果退出代码不是0 ,我怎么知道这个进程是否由于某些内部逻辑而失败,或者是否已经被cgroup机制终止? 它运行在用户空间,所以我想避免parsing/var/log/syslog 。

CFS在cgroups硬限制

我最近搬到了KVM。 以前我在信用调度中使用了xen和cappingfunction。 我们可以在哪里设置一个VM的CPU上限。 我正在寻找一个类似的function来设置KVM虚拟机的硬性限制。 我最近发现cgroups有一个叫quota的概念,它让我们为kvm设置VM(进程)的硬限制。 我目前正在使用centos 6.我检查了cgroups,但是我只能看到提供cpu份额而不是配额的能力。即使libvirt也支持0.9.4版的这个function(根据网站),我目前使用的是libvirt 0.9.4但是当我使用命令设置cpu配额时,我得到无效的选项错误。 有人可以告诉我我缺less什么,我应该做些什么来启用cgroups中的function来设置硬限制。 谢谢 ! Sethu

Cgroups,限制每个用户的内存

是否有可能限制每个用户的内存使用量不是每个组? 这是我的configuration… /etc/cgconfig.conf mount { cpu = /cgroup/cpu_and_mem; cpuacct = /cgroup/cpu_and_mem; memory = /cgroup/cpu_and_mem; } group small { cpu { cpu.shares="100"; } cpuacct { cpuacct.usage="0"; } memory { memory.limit_in_bytes="200M"; memory.memsw.limit_in_bytes="200M"; } } /etc/cgrules.conf @guests cpu,cpuacct,memory small user1 cpu,cpuacct,memory small user2 cpu,cpuacct,memory small 现在我只看到一个选项来创build组small1和链接user1到该组,然后user2到small2等,如下所示: /etc/cgconfig.conf group small1 { cpu { cpu.shares="100"; … group small2 { cpu […]

Docker卷不一致的主机安装点

我有一个简单的设置,我绑定一个容器中的主机的文件夹。 docker run –rm -it -v /mnt:/mnt ubuntu:16.04 bash 然后我挂载一些其他的文件系统到主机的文件夹。 挂载点出现在容器端,但相应的挂载的文件系统没有。 sudo mkdir /mnt/a sudo mount /dev/sda /mnt/a 如果我启动一个预先安装在主机文件夹下的东西的容器,它们将是可见的。 我相信我错过了Linux cgroups的工作原理。 任何人都可以看到发生了什么? 我正在运行docker17.03.0-ce

我无法让cgroup blkio来扼杀子cgroup中进程的iops

我无法让cgroup blkio来扼杀子cgroup中进程的iops。 我正在使用CentOS 7,3.10.0-229。 我创build了cgroup /sys/fs/cgroup/blkio/user.slice/test1并执行 echo 8:32 10 > /sys/fs/cgroup/blkio/user.slice/test1/blkio.throttle.read_iops_device 同样对于write_iops_device。 8:32对应于/ dev / sdc处的HDD。 然后使用stress-ng在/ srv / hdd-c中读取和写入驱动器 cgexec -g blkio:user.slice/test1 stress-ng –temp-path /srv/hdd-c –hdd 15 -t 180 和 cgexec -g blkio:user.slice/test1 stress-ng –temp-path /srv/hdd-c –readahead 15 -t 180 我确认启动的30个进程正在使用ps eo pid,user,args,cgroup在blkio:user.slice / test1 cgroup中运行。 当我做iostat 5 ,sdc的tps数量是400到600,这与我在test1 cgroup之外运行时相同。 我得到相同的结果,如果我echo 8:32 10 > […]