Received: by 10.213.65.68 with SMTP id h4csp2057447imn; Thu, 5 Apr 2018 08:15:27 -0700 (PDT) X-Google-Smtp-Source: AIpwx49UHjJwbPSvc01DE/Om/bdxEyjdDB8a/eOdIqsSEGzr4KXlItaboRy1+RahuF/bFE1DHarV X-Received: by 10.99.114.12 with SMTP id n12mr11023667pgc.133.1522941327303; Thu, 05 Apr 2018 08:15:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522941327; cv=none; d=google.com; s=arc-20160816; b=Sm+wtxIZoZ7Nk/XO14pBdwEFcf17wSy7ZuUraeEPrC/SYyavzd6mWhWrKWYtlGoMlC FAqFR3vKPycYpKKyZUQ78KnGjARCtgIx2NSi0VOZzb/QBhYBrJ8xt5L/RxpcoECpeyrx b4K/xbXGAoQ8acom8aAG4IIC3I29Zw/VMC0ql0Kc14pcvXGri94NKbMAn4kt9m2p67M2 lwUgzfGRLfsufZbYGKhPveUHhVnLQPW97aW20WV8JkEh9bN0bEx92NQXLTzlLJT5lamZ iJKHEo1OMQWHnuHX3bggNqLC3/OIWhTSI8OEhE6csqMbcQxtLc8AT1qFE9U4OJLyJps0 AF/w== 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:dkim-signature:arc-authentication-results; bh=GD9CmJwgDaVWFo3lQEyTOMiqbFt9WiIb8vDPAqJzNwM=; b=fae1PSjiNb1IrS2l9dor8tmHFHt7lIvv8SrLhlD/TBWDQN88hiYB0GdyM4XHG36Opn sVAnVSocpccaXADb4rRVZ22MWqs0Amn2/F+HObIUh5BXL720QBQ/Wux3Wt+g5V0C2l5/ J0HizEqvlpkCa0xNEBM5XnXLefGNDFglJinUHAhz20dHCq76o2qUQCW7fDXf68QVsRpL wrNXOoRROCvPkt47j8vvsG4L2qPwMPsmsB+oTPzqQd7/LAMw2OtBWWsiTfiIvXBHSTVg vagbM7u2WDvoiPWXLUnfbVzSVzNcXxWliJ7zh+9og/QRVAd+j49FiUUi2sSa7ImvAmCI Glkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=eymvA7Iu; 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 z85si6193293pfk.194.2018.04.05.08.15.13; Thu, 05 Apr 2018 08:15:27 -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; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=eymvA7Iu; 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 S1751399AbeDEPOD (ORCPT + 99 others); Thu, 5 Apr 2018 11:14:03 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:46222 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751038AbeDEPOC (ORCPT ); Thu, 5 Apr 2018 11:14:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=GD9CmJwgDaVWFo3lQEyTOMiqbFt9WiIb8vDPAqJzNwM=; b=eymvA7IuSUj6Kp8J2p3wv/vvj xPjQL8KLFnPntwPo2W3NAJn/FMI6JndEV92qDbzhKNLgBpu3iqGd+z9JcAyVgJLMaCtIdhRRT12wH Kh1HB5Tca76aQV1rdDtgOgVxkH1CZsRvTY3sn41hl8l2OrZa6cpr80x5KrqhTUCazkDpXvs1pbMEu PRqRNvj8GUufJhjMQk7QRJ7U7giKiWhI0ZbNYywwcBIE4DoApZ4b7EejoJ+6OQGgxd7SJYq9tWzwO OMmLIvXhnZOIQW0L0L9ukxCdorBQcwqmjokP9qbTDAhMBJbVWlRa35KyPCxpeV8YlNs0YxWt0yalM M/2nTqU/Q==; Received: from willy by bombadil.infradead.org with local (Exim 4.90_1 #2 (Red Hat Linux)) id 1f46aN-0005Ol-6Q; Thu, 05 Apr 2018 15:13:59 +0000 Date: Thu, 5 Apr 2018 08:13:59 -0700 From: Matthew Wilcox To: Michal Hocko 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: <20180405151359.GB28128@bombadil.infradead.org> References: <20180403135607.GC5501@dhcp22.suse.cz> <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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180405142749.GL6312@dhcp22.suse.cz> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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) 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). 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.