From patchwork Tue Mar 28 22:16:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yosry Ahmed X-Patchwork-Id: 13191616 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 1C24CC761A6 for ; Tue, 28 Mar 2023 22:17:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 974B76B007D; Tue, 28 Mar 2023 18:16:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 921A16B0078; Tue, 28 Mar 2023 18:16:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7C6316B007D; Tue, 28 Mar 2023 18:16:59 -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 5E24F6B0075 for ; Tue, 28 Mar 2023 18:16:59 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 285A8A046B for ; Tue, 28 Mar 2023 22:16:59 +0000 (UTC) X-FDA: 80619718158.13.313A8C4 Received: from mail-pf1-f201.google.com (mail-pf1-f201.google.com [209.85.210.201]) by imf12.hostedemail.com (Postfix) with ESMTP id 58C5D4000E for ; Tue, 28 Mar 2023 22:16:57 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=TcS0DaK7; spf=pass (imf12.hostedemail.com: domain of 3WGcjZAoKCNsVLPOV7EJBADLLDIB.9LJIFKRU-JJHS79H.LOD@flex--yosryahmed.bounces.google.com designates 209.85.210.201 as permitted sender) smtp.mailfrom=3WGcjZAoKCNsVLPOV7EJBADLLDIB.9LJIFKRU-JJHS79H.LOD@flex--yosryahmed.bounces.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=1680041817; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=/WDDqk1nTT7D9mKcEzqzCjbueo/E6L9K7q/9wjNO8LY=; b=7GIxKzjYugjjIQ6bdR2nJtitQ+d2PWYjBLFDFufNETOGlkeNdJwe/VlR5rktMFLj0nUVTA yMSTJG0u1FiQ8wbKTiw9MQe9pHyD7BHESO9eQUGN2UB195kL4E18qdzR+wgTN09bbIlKjX u27GfzeL8vxou97nrQSvPpv8LghRvI0= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=TcS0DaK7; spf=pass (imf12.hostedemail.com: domain of 3WGcjZAoKCNsVLPOV7EJBADLLDIB.9LJIFKRU-JJHS79H.LOD@flex--yosryahmed.bounces.google.com designates 209.85.210.201 as permitted sender) smtp.mailfrom=3WGcjZAoKCNsVLPOV7EJBADLLDIB.9LJIFKRU-JJHS79H.LOD@flex--yosryahmed.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680041817; a=rsa-sha256; cv=none; b=QnqXlNhbdnPwjm04/eUQ+l3yxyXEb/b66uSvgcva085KA39ymf1y3XU4kQ6bHLIbIU77hP OQ48qegzT8BtclX58HqOFzZyW4Z5hra1m49m3PgdFimzJLoY/7h7FMcrNKfxbTmCsCDb2D vbEaqVkRTLFYkQmp4Ttqkrg/KBSb77I= Received: by mail-pf1-f201.google.com with SMTP id y186-20020a62cec3000000b00627df3d6ec4so6400885pfg.12 for ; Tue, 28 Mar 2023 15:16:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1680041816; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=/WDDqk1nTT7D9mKcEzqzCjbueo/E6L9K7q/9wjNO8LY=; b=TcS0DaK7zSX/dgbsp92dhBvU1YXIfJw7DU8Bxymw385Iypv0i9ByV9836BmH3XGIri GA3G9Ah6/ynKVVXAJLor7BukC88mhb5FcK9F0N2UppuVbKofnYFrmwIOVN2419Sgn/T3 Leo2J62N2CQ7p4vQ5tLG3l0ISmiaqnyiPoXjgBX2M4RYA1wXrmenFymFmJXjeUJkODde IPUO/XjdrDDGWWgE3vWyhfVxnLq+1UNPnYiIQva9A9S4iya4Iw/wc2ln/EZk6xTcIXjg k22ctJfIxPj6HJVEsaVfFSF1/WN3feXNcAQlYcNsdD7yhK296UbpIQqZDQ1X1PAq/IZq ToQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680041816; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/WDDqk1nTT7D9mKcEzqzCjbueo/E6L9K7q/9wjNO8LY=; b=fadlhk7lyDPwhJGMmgTLuyiDUKhvB3HgW2W2jwxh7n/fglP67JAte+QaLZIzz3yY9A 3uUe9cwbT1r3htvqBnRb1AE6oSR8k2ikwIzXpKko9RsKGr+HOTeEmAC+3ExBWZto2JMK AMDeKKXJpskapYNkBzJts9/27eBut/+eyKC8mLfqsiaAlq+B3HK67Ptm1Qf6R0/kO0E9 LJ+Y6wTB/72FszWJcJXf4iO7i+PCXACjOkO2AY+9Z+sGBBGTpJ4lw8I6wzdnzUyqK2tJ KDW1BQZuCT9qNbCkjVF6ZYm9wB4Qar1lcBbtArXtFL3Cuf8HsQfS8RJeffHPSQOP8bRV 13GA== X-Gm-Message-State: AAQBX9c5Bx9ijVbDFu1ECVUUsT7c6zr9kTJBbwVO6W5FifUfUChfqM1l RMLen/txNuB93Z+4o1RPz1oO1JQzl95g4/NQ X-Google-Smtp-Source: AKy350axjsRVVcKhkqlJ581QnQNXv5GyXPvAYEbbNcmbDp26pUkQK7hJHNgyYA5XT7+ktiHVuLWG9T6jy5rcV85F X-Received: from yosry.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:2327]) (user=yosryahmed job=sendgmr) by 2002:a63:455:0:b0:50b:e523:3cd2 with SMTP id 82-20020a630455000000b0050be5233cd2mr4608055pge.11.1680041816312; Tue, 28 Mar 2023 15:16:56 -0700 (PDT) Date: Tue, 28 Mar 2023 22:16:38 +0000 In-Reply-To: <20230328221644.803272-1-yosryahmed@google.com> Mime-Version: 1.0 References: <20230328221644.803272-1-yosryahmed@google.com> X-Mailer: git-send-email 2.40.0.348.gf938b09366-goog Message-ID: <20230328221644.803272-4-yosryahmed@google.com> Subject: [PATCH v2 3/9] memcg: do not flush stats in irq context From: Yosry Ahmed To: Tejun Heo , Josef Bacik , Jens Axboe , Zefan Li , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton , " =?utf-8?q?Michal_Koutn=C3=BD?= " Cc: Vasily Averin , cgroups@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, bpf@vger.kernel.org, Yosry Ahmed X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 58C5D4000E X-Stat-Signature: ezmzwk7i9nu6e79e7a7n9jppxsy7t743 X-HE-Tag: 1680041817-233747 X-HE-Meta: U2FsdGVkX19k9zNjGg4IscwixXmFdb5oIAJfJ7iSNt/8Br/1yMMzp90wZpTEkkaYHB9lU/foP7S6NYcT/4z5U9sM0vfzePAsotLuZlShVCDLOcZkl+ttGPBScaZKxYtRH6WM7CEWv0pKQBWySt+kN2cUTKehCzTP7SgdoWGdFltycZtd+eEFjTK1H27awmXTznuvfUs9s67ZEbBSUzT82TeXsp6iIldsY8EhCxwzq7lk82SsxpXA4mOO5rBBSYTYr936bxVEWP/w76+9IhlUz5l/IY2slGTvqXXBap3YpA4Imtg1Po3SCyXXPtPNDHcr5/q6ZXmNdwa0bbBqWspGlkUOhhP6eEdTQEnVsDSHOtymJk22i0emcysvfGpsDwyQphdySBjNpHnKfRFyfHkcI7PphBe58wDLcpepLvrsVQ94iQRbsqFfT78t/ZQWyalYFnia+J2U5lNuigCspZr46+70XvStTIhxXKdWyptZML1Pzet4HGemDZ+jHEhHBwWSY0ge87TbgYZKNAICySzzQhJfvgOT697ByGRRefpfCXCKauc4YukZ/7AQWaBnJyw4Oeen/DYWV5cvFoAqe66G+vyjgUnNCdYmLd085QD+T0bmUkefn6ooOGgHZAFfuzTsWIYZvNh6A4MYanUrdwRudnYNUg1o9dbpWfux8quW2quRL5OGqdjngek9gnTHZ4UqjR7nhRtEE/e3uNwgVyJEX9HQYkDPckB2rDaJeFWRtboX3xMfbnecBH2peUDoZbaKrWGdZTP+EJiN96Y0BZpgKVHsDMlfQwz5DWqkrkHsb+tTm9s5a+eK+SthvFcrYn62le5GCN1VsSXYD0o4hK74MnKxYqm/CsXn1ByTWUAKrF25SxNnK0b33nGMKjboGISitlcLQV9v54v11yM/IUSE9D/juxKD/d8ApUYo8QrqmGSZdVwuRFRid/f3FXAyV+ZRPn+Vye+6wEodsysK2xJ bJCRSz6+ SIOyuT8xpUMePxvUwPX8hNcqZ7EbfMWNgrlSjgGtM05xiHaeMY4B/nnFhYNPpzejGNjLW6VgflydME6E4SsSnx1yOHiiZWAIa2WpRT6geq7oZjmOLyTQ5M8dqQHBB50xLj8T4G8S6tst2PHmy/+Wdf66jMEbWaqr2sWNpdUKbbGRR18vJcpd3thmE+jhsWz1sQokv+GckKaXX+gR83i1Hw0yhCBS5mDpo1qkQlxg4D6ypLijcd5QiyybvL5iUAPPbZl8iG+mFHUUDLiZLrng6zWt1aYCMCF0cIPl6yIR5lnUSTa/LCio3V5qewClg3cmxJ8GAduDxjIHGkoN5NWXhe9qn67AX/4DW7aPLcjuPQHvDBVcSIvRZNFAffWWQF8ulVZYahKJ2k/LTVkxTPO4glRv5gPvjJhHjOxyLoGGLc02XYhaVSfs9v9ZTb1rUO4Q+MUf3af7715viWvnXWNmL0XSeVOBZvivaTeGSZy6RKx/0MRftg9V3biUM3QtNswRv8z0bE9mFypLbZMmntTrwxeB81/KkVPRVOLsiMUq6Xq2xbcF04Sx0LbV9aRYbnJ1Q2/Pd0LZll7ryVZTV229mlhw4WeIh31dKGDJlB/ixCdmSZnQVkp0vD9M7Q1F90edDqblqy94ePO/A6ZcG55cWjUIrbHG7/OHUYuIBMNN5U/XCD+JkE2KsNLTvliUCXMipS6P0sbDh7E7xhM8J69wT+2Db3A== 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: Currently, the only context in which we can invoke an rstat flush from irq context is through mem_cgroup_usage() on the root memcg when called from memcg_check_events(). An rstat flush is an expensive operation that should not be done in irq context, so do not flush stats and use the stale stats in this case. Arguably, usage threshold events are not reliable on the root memcg anyway since its usage is ill-defined. Suggested-by: Johannes Weiner Suggested-by: Shakeel Butt Signed-off-by: Yosry Ahmed Acked-by: Shakeel Butt Acked-by: Johannes Weiner Acked-by: Michal Hocko --- mm/memcontrol.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index c3b6aae78901..ff39f78f962e 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3669,7 +3669,21 @@ static unsigned long mem_cgroup_usage(struct mem_cgroup *memcg, bool swap) unsigned long val; if (mem_cgroup_is_root(memcg)) { - mem_cgroup_flush_stats(); + /* + * We can reach here from irq context through: + * uncharge_batch() + * |--memcg_check_events() + * |--mem_cgroup_threshold() + * |--__mem_cgroup_threshold() + * |--mem_cgroup_usage + * + * rstat flushing is an expensive operation that should not be + * done from irq context; use stale stats in this case. + * Arguably, usage threshold events are not reliable on the root + * memcg anyway since its usage is ill-defined. + */ + if (in_task()) + mem_cgroup_flush_stats(); val = memcg_page_state(memcg, NR_FILE_PAGES) + memcg_page_state(memcg, NR_ANON_MAPPED); if (swap)