From patchwork Tue Jul 3 14:25:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tetsuo Handa X-Patchwork-Id: 10504169 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5715660325 for ; Tue, 3 Jul 2018 14:26:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 436AA28700 for ; Tue, 3 Jul 2018 14:26:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 36F9828949; Tue, 3 Jul 2018 14:26:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 88B2928700 for ; Tue, 3 Jul 2018 14:26:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 868EF6B000A; Tue, 3 Jul 2018 10:26:14 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 818176B000C; Tue, 3 Jul 2018 10:26:14 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 72E916B000D; Tue, 3 Jul 2018 10:26:14 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-it0-f72.google.com (mail-it0-f72.google.com [209.85.214.72]) by kanga.kvack.org (Postfix) with ESMTP id 4BED56B000A for ; Tue, 3 Jul 2018 10:26:14 -0400 (EDT) Received: by mail-it0-f72.google.com with SMTP id v142-v6so1992608itb.1 for ; Tue, 03 Jul 2018 07:26:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=8jcY+DsbAspyba3ewuzvivGyNQDFLEaO5LrLO2yocGo=; b=rvSz837Rr4b4phv2TneQH0eRIPdsLmGl6d0H/joXCEs7LqqQnxy0kFf7t1LOOcFhLT UriPvYiYCUVpTJPCf7CshvcMEDFCyNjuuz/dA4nUWp2I3flpFDnRqywavWssyAco3PHu iVKfwLsc/f6Jcez+BDEvHUF7myDlWJhjDA/sc+6nldX4/uRNcJhbDgcClaRONxwK0S/p Wbw9AKy+wtVDMNGi0CpFnjXo4ZNKr0CYXNRrDRAu5ou8ekU3hZEK7a/e8Te9AvMiGAKL hWfFYn8DlzGIuczoW9fSblXxGuI0l6Ugo0nWT36lMkftccgonhlU+HRtnSmjJDiHD3UF jYKw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of penguin-kernel@i-love.sakura.ne.jp designates 202.181.97.72 as permitted sender) smtp.mailfrom=penguin-kernel@i-love.sakura.ne.jp X-Gm-Message-State: APt69E3NE+ogPpuf/kL6IXbrW1cYNyjldK9JQdxHUdl+i7anNAcpBzj0 mf1rWdh+gVfiCbc7o2CvQQofHEMBXGUaFf8xJtc9QhpGiRp2+9N4KVaJfkVB1fq99d83N84ZDgt h1fwDskZsHjOWP+6qtlzVGxtBFIPr5QY0W9qFjDjI77ByhlxcmrgeyPPO4hVbq3xp5g== X-Received: by 2002:a02:e84:: with SMTP id 126-v6mr23521116jae.113.1530627974075; Tue, 03 Jul 2018 07:26:14 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeLNcz6hvADbGJBpLYg3oV8W0MD6YB+EdpQfBGg42sSf++JSSrx9ja57vcWR6C2v/b/5Vot X-Received: by 2002:a02:e84:: with SMTP id 126-v6mr23521084jae.113.1530627973364; Tue, 03 Jul 2018 07:26:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530627973; cv=none; d=google.com; s=arc-20160816; b=S4NNE9Oa/sPga9N9MN+epKxSzbJPCpzzx24RvYvMdBhRz9T9q4YdgHLO9PtcEyYdwk FGj3LIqU51zJZaU3Qh1J5I1wnzsdLy13epEHgLrCw79DX095ZhW3/LWuYebt/nUKYn1r hP/hN4SgFmLB7nKfXcGGNIES65yNSPycfQ4/J5x62SXv5aOCAT4cmVurP7K/r9BH0p5R HXbxmijcXAw8lFQehSRScsL76KVDWy93F6Wa0TMFVR3s5ivCcEYwfzVSbizDwWUaAECe a48E/PCSr0r9qIoIBk1D0NY7NOgtZ0pa+ZXDXX/fmFYgMDqghrh60bHZn3Jb4WWMmV7W a6tA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=8jcY+DsbAspyba3ewuzvivGyNQDFLEaO5LrLO2yocGo=; b=he8Z/7Cs4soT73Wgf4P0FI5rMFIlBngzimoPmA9o9AKSZkQPf4bYjFwc94YoacghXS bXmoazsmtiqawY4loKm19m6OJOqhc3mB2Hc3Vx1SkNfFMyAICo2/HnrUHwsfo0N1qWBP jMs9xX3rZHzhbawpZNp9rx/41I7828RCW5zf6TSMcNDvJcDs1M5IR722f3wODVm3pzvK 1tgtoZHnYsrzMf6TMvSo/34AP1NZncEvxCtI4v8C34Dab//K1CyJT0GE+nPvVJRsR7iC hZ9fyVCC8bA8l8E8Hy+m19zO3vRtNN3UfceLczloA05uVDSWaSdbUE+52o1pqBiGRoLx Ev8w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of penguin-kernel@i-love.sakura.ne.jp designates 202.181.97.72 as permitted sender) smtp.mailfrom=penguin-kernel@i-love.sakura.ne.jp Received: from www262.sakura.ne.jp (www262.sakura.ne.jp. [202.181.97.72]) by mx.google.com with ESMTPS id a124-v6si1162383ite.38.2018.07.03.07.26.12 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jul 2018 07:26:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of penguin-kernel@i-love.sakura.ne.jp designates 202.181.97.72 as permitted sender) client-ip=202.181.97.72; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of penguin-kernel@i-love.sakura.ne.jp designates 202.181.97.72 as permitted sender) smtp.mailfrom=penguin-kernel@i-love.sakura.ne.jp Received: from fsav105.sakura.ne.jp (fsav105.sakura.ne.jp [27.133.134.232]) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id w63EPqRV063926; Tue, 3 Jul 2018 23:25:52 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Received: from www262.sakura.ne.jp (202.181.97.72) by fsav105.sakura.ne.jp (F-Secure/fsigk_smtp/530/fsav105.sakura.ne.jp); Tue, 03 Jul 2018 23:25:52 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/530/fsav105.sakura.ne.jp) Received: from ccsecurity.localdomain (softbank126074194044.bbtec.net [126.74.194.44]) (authenticated bits=0) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id w63EPbJC063838 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 3 Jul 2018 23:25:52 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) From: Tetsuo Handa To: linux-mm@kvack.org, akpm@linux-foundation.org Cc: torvalds@linux-foundation.org, Michal Hocko , Tetsuo Handa , David Rientjes , Johannes Weiner , Roman Gushchin , Tejun Heo , Vladimir Davydov Subject: [PATCH 8/8] mm, page_alloc: Move the short sleep to should_reclaim_retry(). Date: Tue, 3 Jul 2018 23:25:09 +0900 Message-Id: <1530627910-3415-9-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1530627910-3415-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp> References: <1530627910-3415-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP From: Michal Hocko Since the page allocator can now spend CPU resource for oom_reap_mm() for their interested OOM domains, the short sleep for waiting for the owner of oom_lock no longer makes sense. should_reclaim_retry() should be a natural reschedule point. PF_WQ_WORKER is a special case which needs a stronger rescheduling policy. Doing that unconditionally seems more straightforward than depending on a zone being a good candidate for a further reclaim. Thus, move the short sleep for waiting for the owner of oom_lock (which coincidentally also serves as a guaranteed sleep for PF_WQ_WORKER threads) to should_reclaim_retry(). Signed-off-by: Michal Hocko Cc: Tetsuo Handa Cc: Roman Gushchin Cc: Michal Hocko Cc: Johannes Weiner Cc: Vladimir Davydov Cc: David Rientjes Cc: Tejun Heo --- mm/page_alloc.c | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 4c648f7..010b536 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -3904,6 +3904,7 @@ bool gfp_pfmemalloc_allowed(gfp_t gfp_mask) { struct zone *zone; struct zoneref *z; + bool ret = false; /* * Costly allocations might have made a progress but this doesn't mean @@ -3967,25 +3968,26 @@ bool gfp_pfmemalloc_allowed(gfp_t gfp_mask) } } - /* - * Memory allocation/reclaim might be called from a WQ - * context and the current implementation of the WQ - * concurrency control doesn't recognize that - * a particular WQ is congested if the worker thread is - * looping without ever sleeping. Therefore we have to - * do a short sleep here rather than calling - * cond_resched(). - */ - if (current->flags & PF_WQ_WORKER) - schedule_timeout_uninterruptible(1); - else - cond_resched(); - - return true; + ret = true; + goto out; } } - return false; +out: + /* + * Memory allocation/reclaim might be called from a WQ + * context and the current implementation of the WQ + * concurrency control doesn't recognize that + * a particular WQ is congested if the worker thread is + * looping without ever sleeping. Therefore we have to + * do a short sleep here rather than calling + * cond_resched(). + */ + if (current->flags & PF_WQ_WORKER) + schedule_timeout_uninterruptible(1); + else + cond_resched(); + return ret; } static inline bool @@ -4226,12 +4228,6 @@ bool gfp_pfmemalloc_allowed(gfp_t gfp_mask) /* Retry as long as the OOM killer is making progress */ if (did_some_progress) { no_progress_loops = 0; - /* - * This schedule_timeout_*() serves as a guaranteed sleep for - * PF_WQ_WORKER threads when __zone_watermark_ok() == false. - */ - if (!tsk_is_oom_victim(current)) - schedule_timeout_uninterruptible(1); goto retry; }