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 BC6FCC3DA5D for ; Mon, 22 Jul 2024 23:06:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 469A76B0083; Mon, 22 Jul 2024 19:06:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3F2D66B0088; Mon, 22 Jul 2024 19:06:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 26BB86B0089; Mon, 22 Jul 2024 19:06:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 06B606B0083 for ; Mon, 22 Jul 2024 19:06:25 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 7DCE91413F2 for ; Mon, 22 Jul 2024 23:06:25 +0000 (UTC) X-FDA: 82368924330.20.BB236F7 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) by imf25.hostedemail.com (Postfix) with ESMTP id 9B24DA0008 for ; Mon, 22 Jul 2024 23:06:23 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=vimeo.com header.s=google header.b=I+ZpfkEc; spf=pass (imf25.hostedemail.com: domain of davidf@vimeo.com designates 209.85.215.178 as permitted sender) smtp.mailfrom=davidf@vimeo.com; dmarc=pass (policy=reject) header.from=vimeo.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721689560; 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=hJTmpjGOdE4PBe1bESQVvDpEGil/BWgnfDXbEPkh0oQ=; b=VE55bWViAHCaW369qWlxT+v3FEmPY7Mc+kFiwDB7J9F/1Qs4h03vIZ5MJeKBi0HxeWU7m0 2Tm4r05fRnJtfbPowxELeIq617jXaffsDoXA3VIzp2GbsMgnjgKtHfMX2BCoOpRSRaEyLO etHaTuXan0WCzMlSd5eSzXEY9fYFSMI= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=vimeo.com header.s=google header.b=I+ZpfkEc; spf=pass (imf25.hostedemail.com: domain of davidf@vimeo.com designates 209.85.215.178 as permitted sender) smtp.mailfrom=davidf@vimeo.com; dmarc=pass (policy=reject) header.from=vimeo.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721689560; a=rsa-sha256; cv=none; b=577uh24r2RdbZKU83gEGIIXMAKnSwBnx3PovNZybZn46BNcZw1edUbGX/rVk3tgvwhowIt VJ01fG0n1xRlLAtgqqXh6tDQgMcESJJgsfaI64dRg7CCY4ZWMj18TUe7F0H5Ff12GxfxYQ WZKmIN/lDcy8gUU7bkMa40C/xGRsU4Y= Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-7a1215dd114so1463224a12.1 for ; Mon, 22 Jul 2024 16:06:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vimeo.com; s=google; t=1721689582; x=1722294382; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=hJTmpjGOdE4PBe1bESQVvDpEGil/BWgnfDXbEPkh0oQ=; b=I+ZpfkEczR6Z4avSo6+yx+uw5MLtUCzuMY5D8x/0J7bkvHPaWQzJY8jUbtmkXv/XtL 3OI+55x/UBTeSolfTu5H2LTQ12qIt4/fP6uesSkdobNw87C/ihj6XfDqVdYGaSQ/jozL Rknp/vWeqpVNgV8hkdE4dVEMiZPARRy1DJisM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721689582; x=1722294382; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hJTmpjGOdE4PBe1bESQVvDpEGil/BWgnfDXbEPkh0oQ=; b=eIUqbWTIA8f4xtMNMdskKULLi+jeY5dvCh5ydwQOhJ8wfo0n9jL8ZJ2M/CsyjD2sBV 9wAk71+FJewZMJF38Y9lZPNj2QBx8qpF1bPr2BfpqP4zBNLng8mXMT0Vb2IIGHTjOBxu vN4O6HFKmwvRGfEE91VIi5nWzlqtVe1OW53AjqLmYux12kHiNglhODazUSmtyBwhqM6D 1z5mVURHAD5KwR1q9yMlnCXnOjjK9W/TOWIpA+Nu5Ih2zLJnIW1jpge01XKcGnGo+uKa 6wd5/90DKKLA75d437CiEMnYezrxUD6rZbFuPkV8XCKjs8+sO994zs+rYXLHIGIatadO 3ZaA== X-Forwarded-Encrypted: i=1; AJvYcCXH224D9HngzKZFbK6rckXivkvouKiLXKPTl49ygpzZeCn7sJDHnXAnEh53CbgQBBenwZaM7wfcPrTlQ78Lp5Ks9g0= X-Gm-Message-State: AOJu0YyzyctBRhCAn/R1d3bA+42SJ0HVKxfyrHUOX366ACp5wCIzK62N JoalisNA757uC2JlkunSDYtfohfzQJJemaHUQ4SleKzDxlMDkuANpV6o2ii/yrwLM5Qd/R2nSPA NvOSCJnuc9mY7lR9uJFfshpr55mY7uABM6M+p7w== X-Google-Smtp-Source: AGHT+IER6ikq3RTY3TyMM01zi2l2zzP3nCn5Yl0SNA2nd/2d6WglMNmwZD//tkR85CfK4zkR6essvr9J0t+vSd7lUOY= X-Received: by 2002:a17:90a:a114:b0:2cd:4593:2a8e with SMTP id 98e67ed59e1d1-2cd45932ad1mr5460589a91.15.1721689581952; Mon, 22 Jul 2024 16:06:21 -0700 (PDT) MIME-Version: 1.0 References: <20240722151713.2724855-1-davidf@vimeo.com> <20240722151713.2724855-2-davidf@vimeo.com> <9abf7f84-c103-4280-825c-b382edb9b8fe@redhat.com> In-Reply-To: <9abf7f84-c103-4280-825c-b382edb9b8fe@redhat.com> From: David Finkel Date: Mon, 22 Jul 2024 19:06:10 -0400 Message-ID: Subject: Re: [PATCH] mm, memcg: cg2 memory{.swap,}.peak write handlers To: Waiman Long Cc: Roman Gushchin , Muchun Song , Tejun Heo , Andrew Morton , core-services@vimeo.com, Jonathan Corbet , Michal Hocko , Shakeel Butt , Shuah Khan , Johannes Weiner , Zefan Li , cgroups@vger.kernel.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 9B24DA0008 X-Stat-Signature: 49hn8p7ozkfjqfnzh3qm1dtptjkzfyz9 X-Rspam-User: X-HE-Tag: 1721689583-950942 X-HE-Meta: U2FsdGVkX19zPJBCbcTysDpqmbLUNBLlYvJJWtE4qw5IwibvlwTkRfS1TZSXDQB5YqUj9Txuec66jqVVogqdctrM7e2EfePmPGrddUwsgq5l5FvSrloU/uvJ7K9nMYeB8hyEMIkGI2f4Qjjuz9LfVRdrzFCXzwCZcCTTk5stM13WZ2JXfSQcOk5FolUUacGtfvdDl/LjqyfzF6sLZS8WUgJNhcsZIrke+JHF6aFi66s+6AKaMO6AjlqjzSMZhQeLUEB5jc1HKmbfinjy/VkkGwZanEdtuRSaa5LIwqXeP2iBwE+2rEuoMzlTi8jzefVsS325EEenj6aAKyvFXCfaUalIjI7drrKRfjVSvo07q9J0Hxaxy16Rhg0vXj8dAUEvKWcrmilWOZ648HTMHxHmsuA07GPGkGSYawwyOaA8O36DVXaHbZp28In0y/XMTVpk7s8Toa1jf1NTNFkcp+mtSXZCpu4lFLipsjSv/ZaYuTx5FGZql1vTV6yOWU4X9qllUgXiRwwfCGdPiJYbHPgjvDQDrku54fdvKvWFG+FJ7bthHXis2sZUJhiThP/pDIi0zou9xyzQ3lPvnoqi5wuZLpJWR91htJ4cSTo6DR7/ftoKdbUm8N0w8n9UXle8ZshqpW3I9QXFAFqkRMHx9RP9+9paxBNCkNnv8Y6zfP0YFeuJi4+O2hsuqzDLEucKDm7GKfrK9yRX8MvTkpGFQi70aQ0X3dG7xFSDjf1PeI9PQdUPChKDlVSjblO07bZneBq5i0YIcNhMEMv5UwVW1p/N9we+28cywdoMlQB1E6N3UBqTfdbDPY5HzHlVh5qfv2X/HeXgvfeQ/STx5hnB1EA5+oZC42azKuReVTctFXL4MeCkDL8KlqvZ4COInseNAFA1Jw3Kj0AXmq9FoeGXbfQmIOoq9J19Yh0l87zNWDMDOcL0KbK2L/V20xofvxAcAC1Nkjqo8f8xfJ3dHt9F5Ti s82x1Yyh t8beZlokneKoFQ8QeemhXm6nKxPkq83AWDR4EETQCrV8xxZJFP7DyeyymHwhagiTM04OYEdt6HXZpuwtkR44oW2VY5eL5mRYsnS4egd8PeWysQBgkhXu/zCpTRP+u8z8OxUmg0mKnKptYPxyVjYivTmOlSk4pct2RIHJhD4zQXybSEU3EZl9HKRQIog== 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: List-Subscribe: List-Unsubscribe: On Mon, Jul 22, 2024 at 3:47=E2=80=AFPM Waiman Long wr= ote: > > On 7/22/24 15:30, David Finkel wrote: > >>> diff --git a/mm/page_counter.c b/mm/page_counter.c > >>> index db20d6452b71..40d5f4990218 100644 > >>> --- a/mm/page_counter.c > >>> +++ b/mm/page_counter.c > >>> @@ -82,6 +82,8 @@ void page_counter_charge(struct page_counter *count= er, unsigned long nr_pages) > >>> */ > >>> if (new > READ_ONCE(c->watermark)) > >>> WRITE_ONCE(c->watermark, new); > >>> + if (new > READ_ONCE(c->local_watermark)) > >>> + WRITE_ONCE(c->local_watermark, new); > >> Hm, can't we have a single comparison on the hot path? > >> Also, we read and write c->local_watermark speculatively here, Idk if = it's still > >> acceptable with an ability to reset watermarks "locally". Maybe it is,= but > >> it definitely deserves at least a comment with an explanation. > > Unfortunately, since the two watermarks may be reset at different > > times I don't think we > > can consolidate. > > e.g. I think that if the usage peaked, dropped down a bit and then was > > going back > > up again when the "local_watermark" was reset, we'll continue only > > bumping local_watermark, > > but we don't want to touch "watermark" until we hit that watermark agai= n. > If we make page_counter_reset_watermark() reset the local_watermark as we= ll, > we can guarantee "local_watermark <=3D watermark" and wrap one check insi= de > the other. > > if (new > READ_ONCE(c->local_watermark)) { > WRITE_ONCE(c->local_watermark, new); > if (new > READ_ONCE(c->watermark)) > WRITE_ONCE(c->watermark, new); > } > > Cheers, > Longman > Hmm, yeah, given that we'll only be resetting one of the two, I think I'll use this option. The branch predictor should make that second check pretty much a noop in the common-case when we enter the outer if, too. Thanks! --=20 David Finkel Senior Principal Software Engineer, Core Services