From nobody Wed Feb 11 20:04:01 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7B326C77B70 for ; Tue, 11 Apr 2023 14:42:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229950AbjDKOmt (ORCPT ); Tue, 11 Apr 2023 10:42:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33722 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229917AbjDKOmk (ORCPT ); Tue, 11 Apr 2023 10:42:40 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3656A44A6; Tue, 11 Apr 2023 07:42:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681224159; x=1712760159; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=X8N6RslLiERIM8cxbDJVINbiV1/T43HdEIHF4lMjs6A=; b=gqv4shfvwFV/VSMxMr2hC1YunvPM/9oBlR9WSRvJw//jZx3ovlI1fm9l Nyl+FdYJ0lgQWAw2ZShSLiAqW9glaMlbqfjcu6I48ZJm5dHWD/iWPWJXi JiCGtw0K/sJoq4ALzDDpDHY6+ie3DGz5vfFMwVONR8GT1I6RLkAxRy80h qaU/ZK2c0O1W4/DQSDMH8IjH1GVsOl98uYChOXgo6DEua5ZZJgcGyePwS bfmsD9Dy/VmHbN1OSD1XFcV9ZrJxyxoDTlfpykVKrucDLnkT3w8Kmei5v qUVNs9xsZsf0eOJYICfdiGs+QDrOaJF2dRSbEk2xGvZLRRzfVM899wvEO A==; X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="323996607" X-IronPort-AV: E=Sophos;i="5.98,336,1673942400"; d="scan'208";a="323996607" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Apr 2023 07:42:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10677"; a="812589405" X-IronPort-AV: E=Sophos;i="5.98,336,1673942400"; d="scan'208";a="812589405" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga004.jf.intel.com with ESMTP; 11 Apr 2023 07:42:29 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 11 Apr 2023 07:42:29 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Tue, 11 Apr 2023 07:42:29 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.170) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Tue, 11 Apr 2023 07:42:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZALClurdGXaZZLolI/7FL5gGOtvEVXU2e5HY3zCpU2rvn7oxe4JqJ7hWvdAxUSdKe4Wu2wT1MZ37c3kfnw+VCsHp2Hq67Mu0FiRhp3bTC/U9sFhC50I0Fy2fs9ACcBmVj0WsdTsFbqNNgl2Fv36hUdKCD2RtfnWWB4RdoORd3crcZZOU9gSLXGMwJMxUGB0B8Bv9KjobPWYzqprwMHvxWrQW3tCQSdZ1CS3yH91GJlagL0Mawv+lzUURXRR/0yCSBeFGbxZUdhoJvKnUC+INgurAsjV4j8jnpdCTAuzcC9x3k67eC1NKPiCuN8HEmuFGdmIz6Z+KXSE9UQijNRV2kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=X8N6RslLiERIM8cxbDJVINbiV1/T43HdEIHF4lMjs6A=; b=lYvgUfhrrRBnH4W5gYu2p5tWAC2B1PZ3YKp2UkEPoxohgyoectSUUZD0oq3IHRIK1ZaHMYkc7KoG0MY4zQ9tSRVRk9aaHbMfo+PFFO8YGJlmG7rsNWPJiFxdci77D5gk7+wXDZIPlJD5S72VmlrpSuDicOhYShpKF38S+WT9dkSkMB2sVIgFTHlKs9PV4cEZruFl5TEO+rPydfYzBWnZ7lu8XXI5T+/nsmv3CRUU8FuTsaLjxdVxm11O/qOcwJVGvZosuHy62PvGAlx61gtbdg5onp1lFQSb6eyz4jF3SGypmJYy/faeiblLnQ4H1qTzv+D1FlTtbt/WQMR16GrHfA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH0PR11MB5880.namprd11.prod.outlook.com (2603:10b6:510:143::14) by CO1PR11MB4771.namprd11.prod.outlook.com (2603:10b6:303:9f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.29; Tue, 11 Apr 2023 14:42:27 +0000 Received: from PH0PR11MB5880.namprd11.prod.outlook.com ([fe80::3265:f579:62a6:8a0]) by PH0PR11MB5880.namprd11.prod.outlook.com ([fe80::3265:f579:62a6:8a0%5]) with mapi id 15.20.6277.035; Tue, 11 Apr 2023 14:42:27 +0000 From: "Zhang, Qiang1" To: Uladzislau Rezki CC: "paulmck@kernel.org" , "frederic@kernel.org" , "joel@joelfernandes.org" , "qiang.zhang1211@gmail.com" , "rcu@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v3] rcu/kvfree: Prevents cache growing when the backoff_page_cache_fill is set Thread-Topic: [PATCH v3] rcu/kvfree: Prevents cache growing when the backoff_page_cache_fill is set Thread-Index: AQHZaiXby4kI/lAQlUSTC1cR7UMpS68lNdWAgABJBmCAAK/VgIAAAf6g Date: Tue, 11 Apr 2023 14:42:27 +0000 Message-ID: References: <20230408142517.800549-1-qiang1.zhang@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR11MB5880:EE_|CO1PR11MB4771:EE_ x-ms-office365-filtering-correlation-id: ebedb012-3e75-4b15-a955-08db3a9af87d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TUJ/Ya3yFMOxjv7bbGHsEqU71e6tmOQ+V0lXsPfjs0XrCMVljT9Xvg3c+STTqiL172rxlbo+ji0NuYnhl7E3d9Z829xjPoWaHO58HC7gVlUTlU/badI9i1SjsUeeHR5KKO6zntU9jnAJT0pnFfeTLAU/vK6YFuidRUsplb3/JfXad9X4j6SE8Vq050bnJk0CJDMUDWEIcbf/8OZQesv4M9EWnop1hFOVB0VpcE6oD1vkXyYchnwn6MEpIWCW7+JSIQdCN+N6h7jLKXJZDmuNsgATX7+HxC9pIsPIOxvlifquIxzOXM0PxQCG87rVuLsWLCoQ+nUYSPY1rMpNnVWLCGp24c+FJz+hsdVg877NulMS1ou1YX8WgX3LoHHrZ1B7ezJM5o5ayDjKv96qL9CQX7yZZsnlJHbESGawlmMvH6zpNH41JbMjFnTHcQbHrd1PwVyH23/bMEYYcudiJeFduB1Dhgm+GcjOJxfN8dUd/sTJKLdbhDfi0sunKrM4V+73Nnbj9YMYpV1QCEetDMTUtt3zWf/0pkrxh2f08ms7UrfLJ31AeDZm4dh84dzhziLIDYM8R+AcOEJdH5nIPCKsW+pkHdDulV+s7YWMn8jZG3XkmnxrxN20nHimVJ3IoAw1 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5880.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(346002)(136003)(39860400002)(366004)(376002)(451199021)(9686003)(64756008)(4326008)(66556008)(76116006)(8676002)(54906003)(66946007)(316002)(66446008)(6916009)(66476007)(6506007)(186003)(83380400001)(38100700002)(71200400001)(41300700001)(55016003)(478600001)(26005)(8936002)(7696005)(52536014)(38070700005)(86362001)(2906002)(5660300002)(122000001)(33656002)(82960400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ald4QXNvOVFQMEltUkhXeTN4YUtobXUza2xDRVRoemh0Q29MTUJ3d25EakR5?= =?utf-8?B?UWFjYjNPUTFmbWdFdnhSaEw1clhyanlSRHNBTFQwUC9oN2grUG1nSlNFQXpm?= =?utf-8?B?cGNzbFdDR1F6WC9oNXVUSm13dlNVMW16NklEOTJTM1lWNkhtYU52UTRpSVRZ?= =?utf-8?B?WDliZmxBb1VkNmtJdi84VWFHSWlFWnBQdGZGNTFKajJ3VEZLMWtHQzBoeTFz?= =?utf-8?B?M1hQQVlyL0tuc0g5ZllPdTh5TXRjK3RSbDA3aU4rck5SQk16YmNNUDNtYTVL?= =?utf-8?B?TU9lQVdEclN2dWFhQmVuUDU2cEczU1FsL0lPalQxaWU0M2U0dnpnWkljZE5p?= =?utf-8?B?MDdnMmczNXlocmFlMEMyNlI4dVV3b2pBNGZ2SEsyalRzOFVoczQ3M25Mbnlh?= =?utf-8?B?VTM3L1l2MW9OYmxYMlpUNWtVcHBkMjhjOXF3RlZwL2wxQWNzcjZWUm8wU2xr?= =?utf-8?B?c2pUVHhFc2tlaVhsNStiKzZmZk1ESlVldnVkQmR3aWszOEhrZW5ZcVFDSW8w?= =?utf-8?B?SU1qbnVQTklrbUFrVXhhbFBheVRHTE5iUEYvVlFWcFIvUnE1MGhyV25JNUZk?= =?utf-8?B?UzRiQnNNenQ0bEJkYWV2U25XT3dpajVJa0t3c1doeDA2dXlwcXZQbmVBcHRu?= =?utf-8?B?YklQNGNxVmNFVEMwQ2RCbm9RTEcxNHlEbSsxandPMW9CS0xBQ3hZMFNjRXRF?= =?utf-8?B?OGtNb3dCUlNEWFpZUFVKWTZrQ2VlNmdCNDVwWWFLZVJ6azE1a2Y3Q0NkQTI0?= =?utf-8?B?dmdmOU0xaFJqUUtLTnpIZ0c3cnI2NjdFQURQdVJiY2FyaXNUOFhVbVZRcFFr?= =?utf-8?B?VDUwVno4THNETXpydndERjlQblRhZHRzb0p4enl2Q3JtVk4xMUF4aGFldkcw?= =?utf-8?B?Y3pBVlc2VVBGbG0zOHVtR01mN0loZmsvbm8waG1VMStORHIxb2FTQzdxY2FY?= =?utf-8?B?MFdqclFtazd0YWRDckxlUDRQYVBoN2RITWd5SXZ2NnpoUG5OQ3FDdllDWEZV?= =?utf-8?B?YnRGYktzZUM4S1B5QWsvVFBYaDdHTlhpM0Z4NDZpUjhaZEtKalhmWFpjUTFm?= =?utf-8?B?bE52MlhPRjB6UTlNMzJ6WU41M2JOQjI2U3FoVjA0ZXptenhxamJuWkZJSzIy?= =?utf-8?B?Z01Rb0JHUWRXSjc1NFozdU9wVlBpa2t0dGV1Y3c4eVZiVDg2S3ArQnB2R2g2?= =?utf-8?B?SHdleWJSdGFkWS83REpJc1hMNVgweUhNTmI0eDAvWXV6WTRsQVRSdGRLcHEx?= =?utf-8?B?Wkh4UGoycDhzckxLMHZyZUNYVGJtRmllSHIyUldZL1k1Y2pON3RFRm1pV1Ru?= =?utf-8?B?QXFMajlQanQybzVQZC9lTzk1UCsxVGVFWHpCeXlYSDh0K3IwTWFSeWNIczE5?= =?utf-8?B?ZjZMZzBKbzJZTUlvUkhFTWZyRzkyQllCU3Y4eHZ1VTBxT0lFNW1hbkNiQWRR?= =?utf-8?B?SEJkK1d4ZnBNOFd3SWlaRTZ6N3lTNHV2ZEVsWTVoRE1QT08ySEtxZmNvWThy?= =?utf-8?B?QkpzNmRCTjVCQ3VueG1YOVliYTljSkNtanphVDZtdmoza0kzNm83QU9xTWZY?= =?utf-8?B?alVicXN0ZTYxeFV6clJLWTBkNUdrclY0eVVJVDhjaTNVK1ltbm90YzJoeUZ5?= =?utf-8?B?TW1MM0tJQjZESTE5MSs5UWF2SW1RMFVsU0NLVTNqejVQTlA4d1ZsTnE4TGtC?= =?utf-8?B?OUJxek10cUdNMlBwZWUyV2w1WUYwcU5aWWh1Nk1uNnMrazlQN1R1YUxNNkwr?= =?utf-8?B?d1hGc3hCNUgwdVREVVZobGZMZSs4RjV6SDR0ZE9JODBpSlVHS1FhYUdGYlZu?= =?utf-8?B?WGNOclRPNSt4WlNaWFNKeTduL28waTNDbzlMeEErZkFxZ25yTUhxdm5mSDlX?= =?utf-8?B?ZlVtaFRhdFkvVGZqZFhGR2p0RjBodVVYOXFQVmJ2ZnpkS1owK251alp4c0R2?= =?utf-8?B?WXpWTEUyTlhlKzRxNWs4b3dUWXRjYnR6SnNPSG5QWFluRlhsZUZFZ0plSkpP?= =?utf-8?B?ZlRtRzZjS2ZqMXdoSU1HU2cvcDY0NklwM1dxUXJ2VGcwQjR6MXZ4cXNra0Nw?= =?utf-8?B?TU1lVi9QT01OMyt0VXdDb3NIeVlsQ2k0aE5FSjVuK2VyRU5SS09iMElRQ2tV?= =?utf-8?Q?+D0sSJVgcuom/Rn5HUSY0DubT?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5880.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ebedb012-3e75-4b15-a955-08db3a9af87d X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Apr 2023 14:42:27.1297 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ch2bF7FbHfLLI0e4rPt81M3jMrv/2v+7Vc/0XNiSXRxixlp6whYnNLoMejTI5k/d7nlB9zF/qfvsr9xGdqFacg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB4771 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > > Currently, in kfree_rcu_shrink_scan(), the drain_page_cache() is > > executed before kfree_rcu_monitor() to drain page cache, if the bnode > > structure's->gp_snap has done, the kvfree_rcu_bulk() will fill the > > page cache again in kfree_rcu_monitor(), this commit add a check > > for krcp structure's->backoff_page_cache_fill in put_cached_bnode(), > > if the krcp structure's->backoff_page_cache_fill is set, prevent page > > cache growing and disable allocated page in fill_page_cache_func(). > >=20 > > Signed-off-by: Zqiang > > > >Much improved! But still some questions below... > > > > Thanx, Paul > > > > --- > > kernel/rcu/tree.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > >=20 > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > > index cc34d13be181..9d9d3772cc45 100644 > > --- a/kernel/rcu/tree.c > > +++ b/kernel/rcu/tree.c > > @@ -2908,6 +2908,8 @@ static inline bool > > put_cached_bnode(struct kfree_rcu_cpu *krcp, > > struct kvfree_rcu_bulk_data *bnode) > > { > > + if (atomic_read(&krcp->backoff_page_cache_fill)) > > + return false; > > > >This will mean that under low-memory conditions, we will keep zero > >pages in ->bkvcache. All attempts to put something there will fail. > > > >This is probably not an issue for structures containing an rcu_head > >that are passed to kfree_rcu(p, field), but doesn't this mean that > >kfree_rcu_mightsleep() unconditionally invokes synchronize_rcu()? > >This could seriously slow up freeing under low-memory conditions, > >which might exacerbate the low-memory conditions. >=20 > Thanks for mentioning this, I didn't think of this before=F0=9F=98=8A. >=20 > > > >Is this really what we want? Zero cached rather than just fewer cached? > > > > > > > > // Check the limit. > > if (krcp->nr_bkv_objs >=3D rcu_min_cached_objs) > > return false; > > @@ -3221,7 +3223,7 @@ static void fill_page_cache_func(struct work_stru= ct *work) > > int i; > > =20 > > nr_pages =3D atomic_read(&krcp->backoff_page_cache_fill) ? > > - 1 : rcu_min_cached_objs; > > + 0 : rcu_min_cached_objs; > > =20 > > for (i =3D 0; i < nr_pages; i++) { > > > >I am still confused as to why we start "i" at zero rather than at > >->nr_bkv_objs. What am I missing here? >=20 >=20 > No, you are right, I missed this place.=20 >=20 > --- a/kernel/rcu/tree.c > +++ b/kernel/rcu/tree.c > @@ -2908,6 +2908,8 @@ static inline bool > put_cached_bnode(struct kfree_rcu_cpu *krcp, > struct kvfree_rcu_bulk_data *bnode) > { > + if (atomic_read(&krcp->backoff_page_cache_fill)) > + return false; > >This is broken, unfortunately. If a low memory condition we fill >fill a cache with at least one page anyway because of we do not want >to hit a slow path. Thanks remind, please ignore my v4 patch, how about the following? diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 41daae3239b5..e2e8412e687f 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -3238,6 +3238,9 @@ static void fill_page_cache_func(struct work_struct *= work) free_page((unsigned long) bnode); break; } + + if (atomic_read(&krcp->backoff_page_cache_fill)) + break; } atomic_set(&krcp->work_in_progress, 0); > > // Check the limit. > if (krcp->nr_bkv_objs >=3D rcu_min_cached_objs) > return false; > @@ -3223,7 +3225,7 @@ static void fill_page_cache_func(struct work_struct= *work) > nr_pages =3D atomic_read(&krcp->backoff_page_cache_fill) ? > 1 : rcu_min_cached_objs; >=20 > - for (i =3D 0; i < nr_pages; i++) { > + for (i =3D krcp->nr_bkv_objs; i < nr_pages; i++) { > bnode =3D (struct kvfree_rcu_bulk_data *) > __get_free_page(GFP_KERNEL | __GFP_NORETRY | __GF= P_NOMEMALLOC | __GFP_NOWARN); >=20 >=20 >IMHO, it should be send as a separate patch explaining why it >it is needed. Agree. Thanks Zqiang > >-- >Uladzislau Rezki