From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 40FF1C43334 for ; Thu, 23 Jun 2022 18:08:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E28758E0177; Thu, 23 Jun 2022 14:08:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D948F8E0144; Thu, 23 Jun 2022 14:08:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A303A8E0178; Thu, 23 Jun 2022 14:08:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 83A748E0144 for ; Thu, 23 Jun 2022 14:08:19 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 50C5620B9F for ; Thu, 23 Jun 2022 18:08:19 +0000 (UTC) X-FDA: 79610285118.19.3CE1274 Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) by imf24.hostedemail.com (Postfix) with ESMTP id CEB85180033 for ; Thu, 23 Jun 2022 18:08:18 +0000 (UTC) Received: from pps.filterd (m0109334.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25NHutr7020390 for ; Thu, 23 Jun 2022 11:08:17 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=facebook; bh=+IYV+ohWMnP9Z2WqVp2E+CnW9cqqI1fK3UacqUP+NEU=; b=A7gR5Xw2SOdP/LhUFKnTV5QpJ4jfbl81LezZhYpt5cGZi0n3B5/q0zVgMKm6Mc7Qjn4H DbdOyKNIUkfTWsh0KoxMZZBB7IsZtGD1eEfEEY6cCnsJylDhKS6Lp+Vw+uGV+UsknpJZ cORUIQehKoaQ/xU3BhIBsi2gbhJ+88DQo3s= Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 3gv2nast06-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Thu, 23 Jun 2022 11:08:17 -0700 Received: from twshared1457.37.frc1.facebook.com (2620:10d:c0a8:1b::d) by mail.thefacebook.com (2620:10d:c0a8:83::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Thu, 23 Jun 2022 11:08:14 -0700 Received: by devvm225.atn0.facebook.com (Postfix, from userid 425415) id 53F3710C5DC48; Thu, 23 Jun 2022 10:52:00 -0700 (PDT) From: Stefan Roesch To: , , , , CC: , , , , , Subject: [RESEND PATCH v9 01/14] mm: Move starting of background writeback into the main balancing loop Date: Thu, 23 Jun 2022 10:51:44 -0700 Message-ID: <20220623175157.1715274-2-shr@fb.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220623175157.1715274-1-shr@fb.com> References: <20220623175157.1715274-1-shr@fb.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FB-Internal: Safe Content-Type: text/plain X-Proofpoint-ORIG-GUID: U8_9H3mO9ZWs4pkF9DgfokXVNWuYZno2 X-Proofpoint-GUID: U8_9H3mO9ZWs4pkF9DgfokXVNWuYZno2 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-06-23_07,2022-06-23_01,2022-06-22_01 ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=fb.com header.s=facebook header.b=A7gR5Xw2; dmarc=pass (policy=reject) header.from=fb.com; spf=none (imf24.hostedemail.com: domain of "prvs=71737354e2=shr@fb.com" has no SPF policy when checking 67.231.145.42) smtp.mailfrom="prvs=71737354e2=shr@fb.com" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656007699; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+IYV+ohWMnP9Z2WqVp2E+CnW9cqqI1fK3UacqUP+NEU=; b=VCJEOD+CZBKTq6zGQbYjjwvdExwnsvnwMSDBqgjJa4h9flavqDWRz7bAAB87HBRf9HKQ3C eY+w0YVUQdyg4WyxrvLvkFvgZ/7r3ow72r662KV5jiwCFFwaHjZjoPYnMbYfxxXhFU3b/k 4rT8E48c2KLwAioWJmIuH1ODOk1FwaM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1656007699; a=rsa-sha256; cv=none; b=XO1Wn1/9xWZEDSeU2naVVjyaSgrzpzEEuEbJF8Vc49eFpwEdvAMugXpun73Ip95zdk64Fp ZIMn3Pl7pyAUvOVhlEATISxR822jWR6CfZedUC8XKmd0po+c8s+jp4eV3ChWafFCsaIi9c 9ijwNP7xGjgzkKj773Gw3YKDQx0wnCc= X-Stat-Signature: g384dkpq518sqch1e4h1j6355c6u3zmo X-Rspamd-Queue-Id: CEB85180033 X-Rspam-User: Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=fb.com header.s=facebook header.b=A7gR5Xw2; dmarc=pass (policy=reject) header.from=fb.com; spf=none (imf24.hostedemail.com: domain of "prvs=71737354e2=shr@fb.com" has no SPF policy when checking 67.231.145.42) smtp.mailfrom="prvs=71737354e2=shr@fb.com" X-Rspamd-Server: rspam12 X-HE-Tag: 1656007698-339594 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: From: Jan Kara We start background writeback if we are over background threshold after exiting the main loop in balance_dirty_pages(). This may result in basing the decision on already stale values (we may have slept for significant amount of time) and it is also inconvenient for refactoring needed for async dirty throttling. Move the check into the main waiting loop. Signed-off-by: Jan Kara Signed-off-by: Stefan Roesch --- mm/page-writeback.c | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 55c2776ae699..e59c523aed1a 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -1627,6 +1627,19 @@ static void balance_dirty_pages(struct bdi_writeba= ck *wb, } } =20 + /* + * In laptop mode, we wait until hitting the higher threshold + * before starting background writeout, and then write out all + * the way down to the lower threshold. So slow writers cause + * minimal disk activity. + * + * In normal mode, we start background writeout at the lower + * background_thresh, to keep the amount of dirty memory low. + */ + if (!laptop_mode && nr_reclaimable > gdtc->bg_thresh && + !writeback_in_progress(wb)) + wb_start_background_writeback(wb); + /* * Throttle it only when the background writeback cannot * catch-up. This avoids (excessively) small writeouts @@ -1657,6 +1670,7 @@ static void balance_dirty_pages(struct bdi_writebac= k *wb, break; } =20 + /* Start writeback even when in laptop mode */ if (unlikely(!writeback_in_progress(wb))) wb_start_background_writeback(wb); =20 @@ -1823,23 +1837,6 @@ static void balance_dirty_pages(struct bdi_writeba= ck *wb, =20 if (!dirty_exceeded && wb->dirty_exceeded) wb->dirty_exceeded =3D 0; - - if (writeback_in_progress(wb)) - return; - - /* - * In laptop mode, we wait until hitting the higher threshold before - * starting background writeout, and then write out all the way down - * to the lower threshold. So slow writers cause minimal disk activity= . - * - * In normal mode, we start background writeout at the lower - * background_thresh, to keep the amount of dirty memory low. - */ - if (laptop_mode) - return; - - if (nr_reclaimable > gdtc->bg_thresh) - wb_start_background_writeback(wb); } =20 static DEFINE_PER_CPU(int, bdp_ratelimits); --=20 2.30.2