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 EBAA7CE7AA9 for ; Mon, 25 Sep 2023 17:11:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 418AB8D0031; Mon, 25 Sep 2023 13:11:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3C8868D0001; Mon, 25 Sep 2023 13:11:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 28FD98D0031; Mon, 25 Sep 2023 13:11:48 -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 18ECD8D0001 for ; Mon, 25 Sep 2023 13:11:48 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id D5BD3C0C96 for ; Mon, 25 Sep 2023 17:11:47 +0000 (UTC) X-FDA: 81275761854.09.30AE2B0 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by imf02.hostedemail.com (Postfix) with ESMTP id 0F8D780014 for ; Mon, 25 Sep 2023 17:11:45 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=MLKxaUp3; spf=pass (imf02.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695661906; 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=g/hhWT30YqLg2rKDYw/SVPqxcdoluiD8cyVoB8LNRKU=; b=5Yr0JFrtL8rE6nJLXf0b8+xG/luPKUIMNYn15e5E3sXwL70E58x6T+hdSJOLCp/7ephw+y vaLXLVpxQHTUezNUNTxHZe5TcDXzOoUTkAowN1ssowfC86nxZIrdrqhzg2R2rhfPr5pj4c N3rZiOnXcwqZ1KKkrvPeaV96BpukZrg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695661906; a=rsa-sha256; cv=none; b=en99vBb0PYDndxk9N9fRl/Qz5Qi4to0ey8o6yrXXbfWIYTn9yMPI1wPKSsvbbk6fbF3idV bF1YiJYlwtpWayGfqRmDzfIAvf+JWAO69UtcxoKPNe7oHhwa7siM5qqWmDzzJsfXA9NtdT GmratBb/E+poe2oJK13pRIL4iJVNnxs= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=MLKxaUp3; spf=pass (imf02.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-9936b3d0286so863943566b.0 for ; Mon, 25 Sep 2023 10:11:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1695661904; x=1696266704; 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=g/hhWT30YqLg2rKDYw/SVPqxcdoluiD8cyVoB8LNRKU=; b=MLKxaUp3enzuspzABTCw2Kqyf1aFP3xMWBtvpKxJkI9npNiYJA/kAA/Mmq6O0TBJCx pM2uwKtYJ3oxNxVAtLU6zrRL9ZZ1SBu8pfm8ZJVa1DBiiYIFZCHISmXBKJPKc7NQMWjS Qb3Qb5NpVbBor5UYkvIWN0tMWEAHUsMqKyqQ7c9p3n/IuvAoY65fEQhsX/Br+tY4fVmX Twjqp4eZS8Ipl4DkvD88JXP9IMPmMVqdK0cN+qZV854YBrIPitjWDxv4BQVXvV3IELrX kJ42YmAKcyg5VNIs2XfzPqnbhQzRrh8m0U0T+pUjRVTub9dchubk+WYYaLroStjtAqQu NK4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695661904; x=1696266704; 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=g/hhWT30YqLg2rKDYw/SVPqxcdoluiD8cyVoB8LNRKU=; b=AZPmxxEslGR+5UG4tLrB/AD6FummW5DXZdyLTjBZqOf6Yv8C4T7tpNs+scba98HiK6 B3wQnrLJAeUrVMsDfzbM58f29jXDV4SylBIgQ/5b0yUTT5+ZyAqgLNB9Ascihi21pVPG 8/kEp1NhtiLM2e91+9YvOOfCaymNY7IJaDZykvlPvcyU34o+OkYtIBHNIM//4t8BftCO JFqi2FHIb/eywQ3Il1nNOMZSVVK+MTC9p62MFDLaiMURVIOZBKFpwkhXHzNx3/H8YAbm Gt/9g1oRkOJqVHqUA1KdCobi/3WVWyXzlCMWBN4aJ/303/qD9WfPFdhRvy3ffBMILExo aYBA== X-Gm-Message-State: AOJu0YyarDAag6gyO7kr+qmicOOG596fzxj3S2aStl8d0Ir079gpZVJc ZIh6xOVTUwyqyUeZjEN8UozlaKMXRkZvACQbx19txA== X-Google-Smtp-Source: AGHT+IHxGHsl4fbZlvFzA9O7Txe+gu98zwtJVfYdbeIxZvboXX+P0miQrKoiw4gPdaoz5mGEa0wc4CVeBercB/7xDI0= X-Received: by 2002:a17:906:25d:b0:9ae:587a:e5ce with SMTP id 29-20020a170906025d00b009ae587ae5cemr7423657ejl.27.1695661904205; Mon, 25 Sep 2023 10:11:44 -0700 (PDT) MIME-Version: 1.0 References: <20230922175741.635002-1-yosryahmed@google.com> In-Reply-To: From: Yosry Ahmed Date: Mon, 25 Sep 2023 10:11:05 -0700 Message-ID: Subject: Re: [PATCH v2 0/2] mm: memcg: fix tracking of pending stats updates values To: Michal Hocko Cc: Andrew Morton , Shakeel Butt , Johannes Weiner , Roman Gushchin , Muchun Song , =?UTF-8?Q?Michal_Koutn=C3=BD?= , 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: 0F8D780014 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: am3xk1ybs8bugtyhseqhscpfe9d97hhq X-HE-Tag: 1695661905-503931 X-HE-Meta: U2FsdGVkX1/MNFVO/TCFxx62R0kc6MDOzz6HiIgLmSMKDOw967G2sEWsNW38HcciU45y23FAfEG1RNLPavENhtxOJZ6fCUf/IROvZecN4MYIoEkaoNpP8+I6rLnv5twnBqNvMdg2brn7qJq11H2bzy4MO4hN5Uq9+QTGbUYb7g5kofX8r97hWyQZ/fPNLpz/W8ny1kcPZAiTF95lnbk/9ZluJIztlS40qu6dDXtqPnfmgm84LauhoKFUplFLpj4EAXNp5PJ2Gx82kBPHgMoW/6ceHR5AKCFcqw2tzCIKhRTJ9viqsc6Xvcnp1Eas9Wr7QSbNR9ByJ1wuNJOn5vRwBljC1LKBAXkWkdIfixck2gajY/Z/raqlMcATuByDFviJoVw5k8lG6FsP0OKhjMTiArhSngMAipWGNtL/YLzd+puiG4RPU/4a8N04wpBjwkBjE5jXKfUVrsaL2I0xvrLa6AWALrY/L9aFwqaDU3X3W08FqLVMK+QggtsC+jmOQCS2zdWb9l2dqDW2NwnZplN+Daow1N0OjasO62Tqh53mfaOqXZBbpUogVrUsDZFmhs9c57fF+SSk73k3V/cSBYvRBSLMSBassBlbNwNe9WWAhk2HuDj9SVp7XBzH/PI1PJVfVZqrknE6qLOUBw8SDo6sbAHZYObe1B7UlN7/LmXKpifhHUrmp8QFoloOp91vrl8dVK5yQDXY7cksBtL/YAyZyR96FN3OVQtTrkIGznGBB5N7DIrCtenlb2Kc9UgZDCMeI+zZx66zUz0DoQMtszd5vhAVQJG9253WFacTK6ag2JOqkEJ5w9gYC9kQxRFtjwHkZj7vxaDGCYBw7ikSze6ESfX0xN5zuJVO+VHJqM7Jk4mnggmvXoldqca20C+BYfj7HzWLR45srE89JkyYzTxD6Vy5dZ4A3AuBEjlZN0vzT5Tyl1WAqTzKmHIojpDskPWivLrEqfa6qmTXmZk0kUf b87BkLE/ RHyKfY0EeWZJ+QEn4wR1++nr1FDRqWva3XgPziB0rNW6pMNWodjQDTeloBAjsi0aQUn9mr/wKshgYc7dt6G2kmZuQWckiyKTBsaBcQW9dE8QZhvu7BpU+3z+gUP6z3bgQeCE2PHVXXIvTx8zeWcxKUHDQ79RX6td9zgXaHV59z5Ak8jtjEhbsWUAfdfVEqM+z1yxhtT8IVqrXIz5N99wDC8P64rwSA5ZEcTOmdNpZWwQE+XKTsYPsmYgPSkJLCL+OZivqw9Se+9huoIR5XTphPtZH8pw8Ff+ugoLqLPhbB+jEPXMfSrmel2OMWsVFVk9pQtbvMTsoSmsl0Hsv+pPZtNmvnoKmL93y5DJEkeljLioNiAo= 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: On Mon, Sep 25, 2023 at 6:50=E2=80=AFAM Michal Hocko wrot= e: > > On Fri 22-09-23 17:57:38, Yosry Ahmed wrote: > > While working on adjacent code [1], I realized that the values passed > > into memcg_rstat_updated() to keep track of the magnitude of pending > > updates is consistent. It is mostly in pages, but sometimes it can be i= n > > bytes or KBs. Fix that. > > What kind of practical difference does this change make? Is it worth > additional code? As explained in patch 2's commit message, the value passed into memcg_rstat_updated() is used for the "flush only if not worth it" heuristic. As we have discussed in different threads in the past few weeks, unnecessary flushes can cause increased global lock contention and/or latency. Byte-sized paths (percpu, slab, zswap, ..) feed bytes into the heuristic, but those are interpreted as pages, which means we will flush earlier than we should. This was noticed by code inspection. How much does this matter in practice? I would say it depends on the workload: how many percpu/slab allocations are being made vs. how many flushes are requested. On a system with 100 cpus, 25M of stat updates are needed for a flush usually, but ~6K of slab/percpu updates will also (mistakenly) cause a flush. > > > Patch 1 reworks memcg_page_state_unit() so that we can reuse it in patc= h > > 2 to check and normalize the units of state updates. > > > > [1]https://lore.kernel.org/lkml/20230921081057.3440885-1-yosryahmed@goo= gle.com/ > > > > v1 -> v2: > > - Rebased on top of mm-unstable. > > > > Yosry Ahmed (2): > > mm: memcg: refactor page state unit helpers > > mm: memcg: normalize the value passed into memcg_rstat_updated() > > > > mm/memcontrol.c | 64 +++++++++++++++++++++++++++++++++++++++---------- > > 1 file changed, 51 insertions(+), 13 deletions(-) > > > > -- > > 2.42.0.515.g380fc7ccd1-goog > > -- > Michal Hocko > SUSE Labs