在 Fri, 13 Apr 2012 22:49:54 +0800,Michal Hocko 写道: > [CC linux-mm] > > Hi, > > On Fri 13-04-12 18:00:10, gaoqiang wrote: >> >> >> I put a single process into a cgroup and set memory.limit_in_bytes >> to 100M,and memory.memsw.limit_in_bytes to 1G. >> >> howevery,the process was oom-killed before mem+swap hit 1G. I tried >> many times,and it was killed randomly when memory+swap >> >> exceed 100M but less than 1G. what is the matter ? > > could you be more specific about your kernel version, workload and could > you provide us with GROUP/memory.stat snapshots taken during your test? > > One reason for oom might be that you are hitting the hard limit (you > cannot get over even if memsw limit says more) and you cannot swap out > any pages (e.g. they are mlocked or under writeback). > many thanks. The system is a vmware virtual machine,running centos6.2 with kernel 2.6.32-220.7.1.el6.x86_64. the attachments are memory.stat, the test program and the /var/log/message of the oom. the workload is nearly 0,with searal sshd and bash program running. I just did the following command when testing: ./t # this program will pause at the "getchar()" line and in another terminal,run : cgclear service cgconfig restart mkdir /cgroup/memory/test cd /cgroup/memory/test echo 100m > memory.limit_in_bytes echo 1G > memory.memsw.limit_in_bytes echo 'pid' > tasks # then continue the t command -- 使用 Opera 革命性的电子邮件客户程序: http://www.opera.com/mail/