Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp816154imm; Fri, 22 Jun 2018 05:53:17 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJDKqcvbF1eraYjU5WcHlnceI2X9/0yAJgVNGZYGTANi3UnlrezjOENhWeloDKRTb23UiKJ X-Received: by 2002:a62:4255:: with SMTP id p82-v6mr1623851pfa.227.1529671997476; Fri, 22 Jun 2018 05:53:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529671997; cv=none; d=google.com; s=arc-20160816; b=kI637Rq8nVELu8mOx4cIX6X013MRehM6cJMd/DgxErjfB6WB6jMnqhtuUepheA0pxT MjkK8WF1SzB+GM3pZvG4QgpESV/jYQ7xOpEuUlvZosrDOzx5X23gUpoBpIfxmiOzMxii Y2hmifJVEKbwLfAeqvCfzIkxGtvzt5qDEBUe4UvVk1/RQxeKa2Ch0xuvxCeRLJCIrdf4 ncnIu1ClPHiVeLafYoZshA9RkttTj+n8eKMoW1M3tY28k8Ctgb0sPZVzUPK0P+M5jUKm hkyxiJ1Z5zd5K5fqCM9WiWomfK2KgdkB9fx1AU4rkUgh1m076f1BqpwLsH3rN7IhFyJ8 Awfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date :arc-authentication-results; bh=NjdL1QZQ8VObf+MLpsOx/tJP87w/vIzbdQicZaB92QA=; b=0i5y8KSy7R+YMkPdnAxtZwRLFAJw93TEuT59uS5ly7O2hJXYDEacMGpKIBJjZqmmi0 cF8XvP0FagZinOHKdiHNn5uUl/trzc4/9yYnzfcfISbV2CYLs3RQmu7mFrzArwpoQscA rhoy2r6qZSjCgbzQB+eV1WYTzdLiTYk7EmNz/KKxUql55Ajvbr7/gKnul6dJAkdETT0L nGaPZXA0edxq1niV7iccgud5VjgryCWHO6UBqaV+BwJn+zyj0AZVxNgObgDwdD+A1ptd JEr0peRIeVVHUen0S8shP2GPSgC6o2jD1RwQ4OZJ81eh8rUtyb0mSYM1yhg+VOpFpGA/ rsDQ== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d6-v6si5974452pgn.493.2018.06.22.05.52.57; Fri, 22 Jun 2018 05:53:17 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752650AbeFVMwL (ORCPT + 99 others); Fri, 22 Jun 2018 08:52:11 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:53932 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751345AbeFVMwK (ORCPT ); Fri, 22 Jun 2018 08:52:10 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 11466406C757; Fri, 22 Jun 2018 12:52:10 +0000 (UTC) Received: from file01.intranet.prod.int.rdu2.redhat.com (file01.intranet.prod.int.rdu2.redhat.com [10.11.5.7]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F008F2026D6B; Fri, 22 Jun 2018 12:52:09 +0000 (UTC) Received: from file01.intranet.prod.int.rdu2.redhat.com (localhost [127.0.0.1]) by file01.intranet.prod.int.rdu2.redhat.com (8.14.4/8.14.4) with ESMTP id w5MCq9Kh012494; Fri, 22 Jun 2018 08:52:09 -0400 Received: from localhost (mpatocka@localhost) by file01.intranet.prod.int.rdu2.redhat.com (8.14.4/8.14.4/Submit) with ESMTP id w5MCq9aJ012490; Fri, 22 Jun 2018 08:52:09 -0400 X-Authentication-Warning: file01.intranet.prod.int.rdu2.redhat.com: mpatocka owned process doing -bs Date: Fri, 22 Jun 2018 08:52:09 -0400 (EDT) From: Mikulas Patocka X-X-Sender: mpatocka@file01.intranet.prod.int.rdu2.redhat.com To: Michal Hocko cc: jing xia , Mike Snitzer , agk@redhat.com, dm-devel@redhat.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: dm bufio: Reduce dm_bufio_lock contention In-Reply-To: <20180622090935.GT10465@dhcp22.suse.cz> Message-ID: References: <20180615073201.GB24039@dhcp22.suse.cz> <20180615115547.GH24039@dhcp22.suse.cz> <20180615130925.GI24039@dhcp22.suse.cz> <20180619104312.GD13685@dhcp22.suse.cz> <20180622090151.GS10465@dhcp22.suse.cz> <20180622090935.GT10465@dhcp22.suse.cz> User-Agent: Alpine 2.02 (LRH 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Fri, 22 Jun 2018 12:52:10 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Fri, 22 Jun 2018 12:52:10 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'mpatocka@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 22 Jun 2018, Michal Hocko wrote: > On Fri 22-06-18 11:01:51, Michal Hocko wrote: > > On Thu 21-06-18 21:17:24, Mikulas Patocka wrote: > [...] > > > What about this patch? If __GFP_NORETRY and __GFP_FS is not set (i.e. the > > > request comes from a block device driver or a filesystem), we should not > > > sleep. > > > > Why? How are you going to audit all the callers that the behavior makes > > sense and moreover how are you going to ensure that future usage will > > still make sense. The more subtle side effects gfp flags have the harder > > they are to maintain. > > So just as an excercise. Try to explain the above semantic to users. We > currently have the following. > > * __GFP_NORETRY: The VM implementation will try only very lightweight > * memory direct reclaim to get some memory under memory pressure (thus > * it can sleep). It will avoid disruptive actions like OOM killer. The > * caller must handle the failure which is quite likely to happen under > * heavy memory pressure. The flag is suitable when failure can easily be > * handled at small cost, such as reduced throughput > > * __GFP_FS can call down to the low-level FS. Clearing the flag avoids the > * allocator recursing into the filesystem which might already be holding > * locks. > > So how are you going to explain gfp & (__GFP_NORETRY | ~__GFP_FS)? What > is the actual semantic without explaining the whole reclaim or force > users to look into the code to understand that? What about GFP_NOIO | > __GFP_NORETRY? What does it mean to that "should not sleep". Do all > shrinkers have to follow that as well? My reasoning was that there is broken code that uses __GFP_NORETRY and assumes that it can't fail - so conditioning the change on !__GFP_FS would minimize the diruption to the broken code. Anyway - if you want to test only on __GFP_NORETRY (and fix those 16 broken cases that assume that __GFP_NORETRY can't fail), I'm OK with that. Mikulas Index: linux-2.6/mm/vmscan.c =================================================================== --- linux-2.6.orig/mm/vmscan.c +++ linux-2.6/mm/vmscan.c @@ -2674,6 +2674,7 @@ static bool shrink_node(pg_data_t *pgdat * the LRU too quickly. */ if (!sc->hibernation_mode && !current_is_kswapd() && + !(sc->gfp_mask & __GFP_NORETRY) && current_may_throttle() && pgdat_memcg_congested(pgdat, root)) wait_iff_congested(BLK_RW_ASYNC, HZ/10);