Messages in this thread | | | From | Vaibhav Nagarnaik <> | Date | Mon, 30 May 2011 16:54:01 -0700 | Subject | Re: [PATCH] trace: Set oom_score_adj to maximum for ring buffer allocating process |
| |
On Sun, May 29, 2011 at 11:23 PM, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > (2011/05/28 10:50), Steven Rostedt wrote: >> On Fri, 2011-05-27 at 17:44 -0700, Vaibhav Nagarnaik wrote: >> >>> That said, I am open to changing it if Steven and you think using >>> oom_killer_disabled is a better solution. >> >> My biggest concern is that we are setting policy in the kernel. If you >> are concerned about this, why not just have the process that is going to >> increase the size of the ring buffer adjust its own oom policy >> with /proc/<pid>/oom_score_adj ? Only a privilege process can increase >> the size of the ring buffer so it's not like we are worried about any >> normal user task upping the ring buffer to kill other processes. > > I like Steven's approach. > > Because even if we apply Vaibhav's patch, we still have a oom issue. > because when oom-killer killed echo commands, it doesn't shrink ring > buffer. it only just die. So, the kernel is still under extreme memory > shortage. Any admins operation may invoke next oom-killer.
The ring buffer allocation is done synchronously with the echo command. When a process is picked by the OOM killer, it has a fatal signal pending. Any further allocations by the process in that scenario will return with a failure. The ring buffer allocation code can handle this scenario very well and give up all the previously allocated memory.
Vaibhav Nagarnaik
| |