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 627AAEE4996 for ; Tue, 22 Aug 2023 16:00:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D822A280047; Tue, 22 Aug 2023 12:00:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D322C94001B; Tue, 22 Aug 2023 12:00:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BFC56280047; Tue, 22 Aug 2023 12:00:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id AD6DE94001B for ; Tue, 22 Aug 2023 12:00:46 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 7356B403D1 for ; Tue, 22 Aug 2023 16:00:46 +0000 (UTC) X-FDA: 81152203692.14.370138B Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) by imf26.hostedemail.com (Postfix) with ESMTP id 87FBB140030 for ; Tue, 22 Aug 2023 16:00:44 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=15DCdBwX; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf26.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.47 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1692720044; 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=/rWz75d47k1ZaMKSZ8edfmuuQmWRaz5rkymhn45IF0k=; b=n+TH7dthKMgNx+7NEoyl9GlXrL3pr76RuoBcgWFIOHK57U7yPfr8UzH/DC0IPxOc2/t2kp cA7Xtfj1CaY0Tn32KLb6tSbApThK5ZHJP/cfQFe072ttsAUza3YndlvrcnSf/vIRV623L1 EwmXo/JHN5qGsme3YAPc+DtD6CxXCi8= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=15DCdBwX; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf26.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.47 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692720044; a=rsa-sha256; cv=none; b=eM4dTj+gleoqC28jGuVgo1IdNu3Pvo/hr9ASgganVS2UxbYLayS63bXFa95YyM03twIRun 1DBZjkGLJMG2d0mKvWKUrGam05jVl92raL42qR550JR6JmYqkoZTM0RAZ1W6f88zf/He0l XRrEanFal6HqLL4J5d1RY8lKsLztdkc= Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-9a19bf6ab66so260486866b.3 for ; Tue, 22 Aug 2023 09:00:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1692720043; x=1693324843; 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=/rWz75d47k1ZaMKSZ8edfmuuQmWRaz5rkymhn45IF0k=; b=15DCdBwX9G07pujOr3Nbx+i2bQ13Rphta48yDKVMfOIAUrZfp2m22HFbnXuC7Oprxc 42lqBtGWYqaLduCFwdCo1FynweYmtDURInMRPCUhGUVgu5oG6stOtXegP48Q3A1ICaKY mLXJqLzKp6NFvac+PoOcfeHDT0Ie8vy0eeyyqIA1UQwwnJr8+OV0+tZwBa6fFKNNajbx /R3v6DMUGqUbo0C/VZjwBMI/FVX+Kt7H3Q/NXSv6GsmwHD3pN0N2pSB8V2M4uwhGCThg 5KSOGPPN5e+K+6w4K5ICQ5i34gRorsUI8RcNwjR34ZQoyFdkIT0jWtcp9wAs94exiQYO Zklw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692720043; x=1693324843; 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=/rWz75d47k1ZaMKSZ8edfmuuQmWRaz5rkymhn45IF0k=; b=jup3pSlQEAKoQCePp4H/q4gQX+uDVgzRDa7kDns1QKxKkOItAxeC8amJS6190fIKiL 0RodJR+/AjjTBw+es5DC3SVDoiGtepMObQ/uOa+yiq/ZzHrnAtTKrbs7A35lPjARXYEb Pi/NIgXqtiI9JYZiwNGqgzRseAS7M0dl1Ur1eSIGn2PGD1iJXsp20bQOnLF5NU5+z5gd fnpom9NyowAS/CnXN0bezHIJCBEtKMpwDJxUa8EtvqZUv4Czdo69T46+TsI3S5R9rK4L j3cXXzH2dKaZ821D766A3frKbVF90bxF6QxUZpGM+SGCmVko1TBrlwNUwZccskvGyv2d dMQA== X-Gm-Message-State: AOJu0Yyys3z9FzPVsVgDJYWcyvE+Zo8RXJdGzDevdsT4rzRwMnMW1FoQ hGuDEhOq7CCp8Nz3YA/yqHkdcAVa2GAyjYbdOrQVM2HSCHL+cb4ztY0s7+tK X-Google-Smtp-Source: AGHT+IEt/X5C1XEK0W3JF+CDHSqXvExt9Z0Cc0UCTv1JvWTAaDy2qDS+2xdx2UgqhZArlLDuCUYZ3r87ssJ2HmPdBKI= X-Received: by 2002:a17:906:32d3:b0:9a1:8a54:145f with SMTP id k19-20020a17090632d300b009a18a54145fmr5088359ejk.40.1692720042815; Tue, 22 Aug 2023 09:00:42 -0700 (PDT) MIME-Version: 1.0 References: <20230821205458.1764662-1-yosryahmed@google.com> <20230821205458.1764662-3-yosryahmed@google.com> In-Reply-To: From: Yosry Ahmed Date: Tue, 22 Aug 2023 09:00:06 -0700 Message-ID: Subject: Re: [PATCH 2/3] mm: memcg: add a helper for non-unified stats flushing To: =?UTF-8?Q?Michal_Koutn=C3=BD?= Cc: Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Ivan Babrou , Tejun Heo , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 87FBB140030 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: n3mw4rgqz83ximmcjms9g11suf5gohda X-HE-Tag: 1692720044-582804 X-HE-Meta: U2FsdGVkX18xbOsFF/bTVwk2rjNcBSgabHynpVN8LCW1HevwWa2//9UbnGajU3vBoX20yq8fibOMvyIZz97CbLIYjFeLgi9Ew7LbD5G/vd+iiwbqUqE7A4yxcgKyqOB5upYUvduUYTDF2srr4Kx95U0SFE9Ug1p5iV7/9NlstMlbWPcYnHEF3YQgT7Tjziiuh01R9fTrtuxcOy8Bk3DbpX9RgdRy8oRjgpC1Pv8Hwd7AYjaMoDb/rIz3J4ln2GDQhF1BPPqe+ZPtVC3kXdL5LY6kuZ/AQ1Ov5Q61g/ZmSiIUQWyk960qJeEClUgoDmz0p4tBJ1oPaXqmhEJ7SlP021e8/WCudbny7weDTjQE7QsgCLBHd0r37cjZobpKS+ypNNwtwDNiewGTGYRJOWFgyA8EYMKkA2SqCJQI0mvb4CIdXS7qO6f166LzDZIyT04z8vAPnCpEgKltt8jU9pq2reKy5W+I83N/RgihG8B99H/czBwguNF66MFJHqyPeihbb8T7VmfkzWHF2xD7nEpicf3xi2J7RoTwrHGrUhMaGo4HE+Ih8Eiz1jBRmv1a856k2hUsQa8Gp9/EedvbU0rTVff78jNfWx7Zdq7P8vxallyBN7O/XyCVwBuP1ME7zXTUiX84h6Ao5ozJuM9SUH9gjXpTDV1J6Jw2gVhYoaQcmfa6CgeLMloSBl3RzgqZjFN+yvNr3f/XuLhXIx4jZPNgWsvotLB0nG9yL3pZQ7kPMgqUGNDBcnzBd/uK0BQFzh2WItHk4uDccLZ7W2DOSwqXc9+a+QIkdiABMdNCCVXOpj9S9HfN+4rmI0gxQAuFSh4rCYYwn9DR5dmBNNfn7sIpFMAhIHmOKHg0gARNXAfxI6IHDtMstBRKeAM8mQCoAaiPBJp1/CaKJ56yUG/Yyvn5ELcnWDShr4/zA8to6wPj2yMWOkDbmecT1R4X8Sp/uJN3A6mq7LmXI+SKLBwVeqH UDpaEy7o 6QNJWXlsTFVRwId9Kn0JdUevClV+a4+0vUxCFkSV/wgiqsgiCvSLdjG24/1DtLLOyHQ07zjb2+w2bTNCI6YnNU7hezayY7euoP7hqv5hGyVvurMlTypR51U01iYQM8Nlz85+sxqYIP0ryd3r+fy6aNMlukrMInppgkjsHmLPxJO0YMQsCqJnENjeEav7ORCzDQKS5If5/Gl5zlHvik8Un8bt0ODXO9ND144HYYiwd6e5LXuSwHrnq7OeLeRijfmxY1nL0hbe59EVM+Xy3oMwAFOEy0n1BjKTZD1Yi5q5T4gxtavgFSWnXrUAPhA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Aug 22, 2023 at 6:01=E2=80=AFAM Michal Koutn=C3=BD wrote: > > On Mon, Aug 21, 2023 at 08:54:57PM +0000, Yosry Ahmed wrote: > > +static void do_stats_flush(struct mem_cgroup *memcg) > > +{ > > + cgroup_rstat_flush(memcg->css.cgroup); > if(memcg =3D=3D root_mem_cgroup) > atomic_set(&stats_flush_threshold, 0); > > +} > > + > > /* > > * do_unified_stats_flush - do a unified flush of memory cgroup statis= tics > > * > > @@ -656,7 +667,7 @@ static void do_unified_stats_flush(void) > > > > WRITE_ONCE(flush_next_time, jiffies_64 + 2*FLUSH_TIME); > > > > - cgroup_rstat_flush(root_mem_cgroup->css.cgroup); > > + do_stats_flush(root_mem_cgroup); > > > - atomic_set(&stats_flush_threshold, 0); > > atomic_set(&stats_flush_ongoing, 0); > > You may reset stats_flush_threshold to save the unified flushers some > work. We can probably also kick FLUSH_TIME forward as well. Perhaps I can move both into do_stats_flush() then. If I understand correctly this is what you mean? static void do_stats_flush(struct mem_cgroup *memcg) { if (mem_cgroup_is_root(memcg)) WRITE_ONCE(flush_next_time, jiffies_64 + 2*FLUSH_TIME); cgroup_rstat_flush(memcg->css.cgroup); if (mem_cgroup_is_root(memcg)) atomic_set(&stats_flush_threshold, 0); } static void do_unified_stats_flush(void) { if (atomic_read(&stats_flush_ongoing) || atomic_xchg(&stats_flush_ongoing, 1)) return; do_stats_flush(root_mem_cgroup); atomic_set(&stats_flush_ongoing, 0); } , or simplify it further by just resetting stats_flush_threshold before we flush as well: static void do_stats_flush(struct mem_cgroup *memcg) { /* for unified flushing, root non-unified flushing can help as well = */ if (mem_cgroup_is_root(memcg)) { WRITE_ONCE(flush_next_time, jiffies_64 + 2*FLUSH_TIME); atomic_set(&stats_flush_threshold, 0); } cgroup_rstat_flush(memcg->css.cgroup); } static void do_unified_stats_flush(void) { if (atomic_read(&stats_flush_ongoing) || atomic_xchg(&stats_flush_ongoing, 1)) return; do_stats_flush(root_mem_cgroup); atomic_set(&stats_flush_ongoing, 0); } What do you think?