Received: by 10.213.65.68 with SMTP id h4csp2083062imn; Thu, 5 Apr 2018 08:40:52 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+t9RugpItofPzsWxozLOFzRJFjD2DSDF8RLKhWJiaS1MY3K4oWn3BbGLKa0lGHsYsf7Zzc X-Received: by 2002:a17:902:aa46:: with SMTP id c6-v6mr22924027plr.154.1522942851963; Thu, 05 Apr 2018 08:40:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522942851; cv=none; d=google.com; s=arc-20160816; b=0aKDW3gTftpV8MVXjHnEuhl8IMhxysTSA+qG+hElPWKCMPPI53asadUqhesy7HJEae N1YZ8yoBngOcWEgApJuwcfY9cAkTRIXIJmvoSJSufL7GzDNIIfd43K13hXigcQ/AXVlv uLmDaiHXakw0Z92fXZ+S060agRMH7fuMl+3PgBjw5+mXmfSFxvFQyHBGLYg2wLSYIW3Q lgWY8n0rU3FgB+BkNHc/f0HDRRtbn+W1aeIKhA6gbxlPTshUxM14YvXaUhPjX26QwiKL 2HiMAUESjnxtn0XfJzM6e3xL6RMeOugCYKqOBI7xinJXxcek/2zivQW/Gm3D2QXDkln8 0i4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=3efZvUupSA4cvb+QePecYr6k5Wbuhj6aqHb5uChRxPw=; b=ADLqwKrk6f/kke5hvp5+sY8ka+4vv06w1NsFzV9Y43JIZRRaQ/yLABKVi1woYv4nRh loTlkVBXnBfz6mcl1KfuprAgJOUENZ7Y0OyDEpMdqBDxz1jJh/mWq4ChqCX0RKHDfsMT eSmzn5QIZY+9p8mQPIgXJM0HIS2dP1eP1ouqPIHk6DfuRPIpT+ndPfR57hCBJvZE70il bKq8J8JV5QxizPE0YNkijrpzMumJuJwbxJC288hksAgk55B5zkGJp2jeZQBv9ml2bHgq BJItXlU4PDhq7myJJ+g39vBQ5vzxlD5z0gXRoh/3UEIFzpYr4OfLg7J93DjgMjdo94/4 ZCvw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f32-v6si8925481plf.415.2018.04.05.08.40.07; Thu, 05 Apr 2018 08:40:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751367AbeDEPcp (ORCPT + 99 others); Thu, 5 Apr 2018 11:32:45 -0400 Received: from mx2.suse.de ([195.135.220.15]:54985 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750835AbeDEPco (ORCPT ); Thu, 5 Apr 2018 11:32:44 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id A3A1FAF9C; Thu, 5 Apr 2018 15:32:42 +0000 (UTC) Date: Thu, 5 Apr 2018 17:32:40 +0200 From: Michal Hocko To: Matthew Wilcox Cc: Joel Fernandes , Steven Rostedt , Zhaoyang Huang , Ingo Molnar , LKML , kernel-patch-test@lists.linaro.org, Andrew Morton , "open list:MEMORY MANAGEMENT" , Vlastimil Babka Subject: Re: [PATCH v1] kernel/trace:check the val against the available mem Message-ID: <20180405153240.GO6312@dhcp22.suse.cz> References: <20180404062340.GD6312@dhcp22.suse.cz> <20180404101149.08f6f881@gandalf.local.home> <20180404142329.GI6312@dhcp22.suse.cz> <20180404114730.65118279@gandalf.local.home> <20180405025841.GA9301@bombadil.infradead.org> <20180405142258.GA28128@bombadil.infradead.org> <20180405142749.GL6312@dhcp22.suse.cz> <20180405151359.GB28128@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180405151359.GB28128@bombadil.infradead.org> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu 05-04-18 08:13:59, Matthew Wilcox wrote: > On Thu, Apr 05, 2018 at 04:27:49PM +0200, Michal Hocko wrote: > > On Thu 05-04-18 07:22:58, Matthew Wilcox wrote: > > > On Wed, Apr 04, 2018 at 09:12:52PM -0700, Joel Fernandes wrote: > > > > On Wed, Apr 4, 2018 at 7:58 PM, Matthew Wilcox wrote: > > > > > I still don't get why you want RETRY_MAYFAIL. You know that tries > > > > > *harder* to allocate memory than plain GFP_KERNEL does, right? And > > > > > that seems like the exact opposite of what you want. > > Argh. The comment confused me. OK, now I've read the source and > understand that GFP_KERNEL | __GFP_RETRY_MAYFAIL tries exactly as hard > as GFP_KERNEL *except* that it won't cause OOM itself. But any other > simultaneous GFP_KERNEL allocation without __GFP_RETRY_MAYFAIL will > cause an OOM. (And that's why we're having a conversation) Well, I can udnerstand how this can be confusing. The all confusion boils down to the small-never-fails semantic we have. So all reclaim modificators (__GFP_NOFAIL, __GFP_RETRY_MAYFAIL, __GFP_NORETRY) only modify the _default_ behavior. > That's a problem because we have places in the kernel that call > kv[zm]alloc(very_large_size, GFP_KERNEL), and that will turn into vmalloc, > which will do the exact same thing, only it will trigger OOM all by itself > (assuming the largest free chunk of address space in the vmalloc area > is larger than the amount of free memory). well, hardcoded GFP_KERNEL from vmalloc guts is yet another, ehm, herritage that you are not so proud of. > I considered an alloc_page_array(), but that doesn't fit well with the > design of the ring buffer code. We could have: > > struct page *alloc_page_list_node(int nid, gfp_t gfp_mask, unsigned long nr); > > and link the allocated pages together through page->lru. > > We could also have a GFP flag that says to only succeed if we're further > above the existing watermark than normal. __GFP_LOW (==ALLOC_LOW), > if you like. That would give us the desired behaviour of trying all of > the reclaim methods that GFP_KERNEL would, but not being able to exhaust > all the memory that GFP_KERNEL allocations would take. Well, I would be really careful with yet another gfp mask. They are so incredibly hard to define properly and then people kinda tend to screw your best intentions with their usecases ;) Failing on low wmark is very close to __GFP_NORETRY or even __GFP_NOWAIT, btw. So let's try to not overthink this... -- Michal Hocko SUSE Labs