我在DigitalOcean上安装了Debian 8.5,内核版本为3.16.7-ckt25-2 我正在尝试为Docker启用cgroups内存控制器。 我在/ etc / default / grub中添加cgroup_enable=memory swapaccount=1到GRUB_CMDLINE_LINUX_DEFAULT ,运行update-grub,重启服务器,但是不起作用。 mount | grep cgroup | grep mem输出 mount | grep cgroup | grep mem 当它显示如下所示的内容时, mount | grep cgroup | grep mem什么都不显示: cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) 在AWS上使用相同的内核版本正常工作。
在CentOS 7中,我如何为所有的systemd cgroup设置默认的memory.swappiness? 我可以通过ControlGroupAttribute选项为每个cgroup执行此操作,但是我想覆盖所有cgroup的默认值60。
我试图限制虚拟机使用的所有内存到一个特定的值。 在Ubuntu服务器上,设置“libvirt-qemu”限制解决了这个问题。 但是在CentOS中,它创build了libvirt / qemu / virtual-machine-name,看起来像是不可能为虚拟机设置全局内存限制; 而是唯一的方法是更改在qemu目录下创build的限制虚拟机的内存。 是否可以设置全局cgroup内存限制? 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; } group mynamekvm { perm { admin { uid = root; gid = root; } task { #uid of qemu […]
这是我的最后一个顶部的信息之前,它stucks: top – 18:26:10 up 238 days, 5:43, 3 users, load average: 1782.01, 1824.47, 1680.36 Tasks: 1938 total, 1 running, 1937 sleeping, 0 stopped, 0 zombie Cpu(s): 2.4%us, 3.0%sy, 0.0%ni, 0.0%id, 94.5%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 65923016k total, 65698400k used, 224616k free, 13828k buffers Swap: 33030136k total, 17799704k used, 15230432k free, 157316k cached 正如你所看到的,因为我已经启动了大约2000个执行hadoop get命令的进程,所以%wa非常高。 […]
我在Docker容器中运行一些进程,并使用这个容器的内存限制。 有时Docker容器中的某些进程被OOM杀手杀死。 我在syslog文件中看到: beam.smp invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=0 beam.smp cpuset=/ mems_allowed=0 CPU: 0 PID: 20908 Comm: beam.smp Not tainted 3.13.0-36-generic #63~precise1-Ubuntu Hardware name: Xen HVM domU, BIOS 4.2.amazon 05/23/2014 ffff880192ca6c00 ffff880117ebfbe8 ffffffff817557fe 0000000000000007 ffff8800ea1e9800 ffff880117ebfc38 ffffffff8174b5b9 ffff880100000000 000000d08137dd08 ffff880117ebfc38 ffff88010c05e000 0000000000000000 Call Trace: [<ffffffff817557fe>] dump_stack+0x46/0x58 [<ffffffff8174b5b9>] dump_header+0x7e/0xbd [<ffffffff8174b64f>] oom_kill_process.part.5+0x57/0x2d4 [<ffffffff81075295>] ? has_ns_capability_noaudit+0x15/0x20 [<ffffffff8115b709>] ? […]
我正在尝试解决我正在尝试部署基于这个问题的IFB镜像相关的问题: Tc:入口pipe制和ifb镜像 我的理论是,由于入口stream量被redirect到/经由ifb被出口规则控制,所以我应该能够通过组合tc和Linux控制组net_cls控制器来限制入口带宽,其可以用分类标记分组。 然而它不工作。 我从理论上说,由于数据包是从入口开始的,即使它们被当作出口,它们也不会被标记。 但是,我能想到的唯一方法就是testing这个包,看看这个包是否在那里。 不知道如何做到这一点。 我想可能tcpdump可以但不知道相关的标志。 如果有人对我的大问题有什么想法,我会很感激的! 干杯!
我想在容器运行时更改docker lxc / cgroup设置。 举个例子,如果我这样启动一个容器: docker run –lxc-conf="lxc.cgroup.cpuset.cpus = 0" … 如何在不停止和启动容器的情况下将设置调整为“lxc.cgroup.cpuset.cpus = 1”。
我在Ubuntu 12.04上使用了docker 1.4.0和lxc-1.0.6以及cgroup-lite-1.1.5。 我有3个硬盘( /dev/[sdb-sdd] ),我从3个不同的容器中写入。 他们只有一个XFS分区,分别安装在/ mnt / vol [1-3]中。 我用Docker启动容器(使用lxc exec-driver): docker run –rm=true -v /mnt/vol1:/mnt -ti stackbrew/ubuntu:trusty /bin/bash 当我从三个并发容器中进行dd时: dd if=/dev/zero of=/mnt/testfile bs=4M count=250 oflag=direct 我观察到分配给他们的bps单位的公平分配,即使这些设备是不同的(当然)。 如果我执行一个容器,我观察到60 MB / s(这些是真正的旧磁盘)。 如果我执行两个容器,我会看到三个30 MB / s和20 MB / s。 没有我在调度器,权重和节stream阀方面尝试似乎有所作为。 任何想法为什么?
cgrulesengd不能将pid移动到任务文件,而像deamon一样运行,如果我重新启动cgrulesengd,所有的pid都被正确地移动到任务文件,但是新的pid没有。 所以,如果我以你好用户的身份login,然后从根目录cgrulesengd -n -d,用户hello和他的所有进程运行到/ cgrup / mem / hello / tasks文件。 但是当我注销并login时,用户hello不再受cgrulesengd影响。 这是我的testing文件。 #!/bin/bash USER='hello' cgdelete memory:${USER}/ cgclear /etc/rc.d/rc.cgred stop umount /cgroup/mem rm -fr /cgroup/mem/ mkdir /cgroup/mem mount -t cgroup -o memory mem /cgroup/mem mkdir /cgroup/mem/${USER} chown root:root /cgroup/mem/${USER}/* chown ${USER}:root /cgroup/mem/${USER}/tasks echo 100M > /cgroup/mem/${USER}/memory.limit_in_bytes echo 100M > /cgroup/mem/${USER}/memory.memsw.limit_in_bytes [ ! -f '/etc/cgrules.conf_orig' ] […]
是否有可能限制一个Oracle实例只能使用cgroups消耗的资源(I / O,CPU和内存)? (没有容器或虚拟化) 我想这样做的原因是因为我想在两个不同的oracle实例上重复运行性能testing,同时它们位于同一个物理服务器上,我希望保持结果尽可能一致。 如果有可能,那是最好的办法吗? 谢谢。