Messages in this thread | | | From | Vaibhav Nagarnaik <> | Date | Thu, 9 Jun 2011 11:41:50 -0700 | Subject | Re: [PATCH v2] trace: Set __GFP_NORETRY flag for ring buffer allocating process |
| |
On Thu, 2011-06-09 at 20:37 +0900, KOSAKI Motohiro wrote: > Unfortunately, __GFP_NORETRY is racy and don't work as expected. > If free memory is not enough, the thread may start to reclaim and > another thread can steal the reclaimed memory. And thread0 don't retry. > > Then, thread0's alloc page may fail even though system have enough reclaimable > memory. > > thread0 thread1 > --------------------------------------------------------------- > alloc_pages() > get_page_from_freelist() -> fail > try_to_free_pages() > alloc_pages() > get_page_from_freelist() -> success > get_page_from_freelist() -> fail again > > I think this is mm issue, and afaik, Minchan and some developers are > working on fixing it. but _now_ your patch doesn't work.
Thanks. I was not aware of this condition. I discussed it with the mm- team and it seems this is a well known problem. Though it it is not that bad for order 0 allocations, which is what ring buffer uses.
Also, it happens in tight memory conditions, at which point allocating ring buffer might make it worse. I think providing the user a notification of this is better than just worsening the situation by allocating ring buffer.
On Thu, Jun 9, 2011 at 5:14 AM, Steven Rostedt <rostedt@goodmis.org> wrote: > > Have you seen this fail in practice?
Not in my normal test cases. I haven't stressed it though, but that doesn't make sense for this patch. The idea is that ring buffer should be able to allocate memory as long as it doesn't impact the system too much.
Vaibhav Nagarnaik -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |