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 8B197C3ABAA for ; Fri, 2 May 2025 23:28:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1AB646B000A; Fri, 2 May 2025 19:28:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 137366B0085; Fri, 2 May 2025 19:28:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F182D6B0088; Fri, 2 May 2025 19:28:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id CD6356B000A for ; Fri, 2 May 2025 19:28:55 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 2B841BFFE4 for ; Fri, 2 May 2025 23:28:56 +0000 (UTC) X-FDA: 83399560272.12.6D70C07 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by imf28.hostedemail.com (Postfix) with ESMTP id 4D6ABC0005 for ; Fri, 2 May 2025 23:28:54 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EhzQy4aX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746228534; a=rsa-sha256; cv=none; b=mjaN9/1Efe4dnpuXjwsROfAA6GFK/mIwoTLBhVpa/dET2C87atdEUQHwRQJcRbbKFDYphP sgsQzi9Nz2Vusx/t7rWBzj1gIddkHeHo2d60SD/YgGRRlsiDNaJRSJqHqb7zsYvkLB1Twr +pLgGhLvVe76wxI7M8UGhbAet20jVVs= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EhzQy4aX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746228534; 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=E5Y/kDAPZ2CZYOoK7lx97X9msDYYLQQQiBCs0XHK4jM=; b=y6bjVxBf2MSE5mE1LuN6ORYuym+LCbTGn9LacbQ8nk6Fovp6bL9YoPhRldNb49YI4dzv6C PrlBR9EFPBsodIh/+ClQDE9aRp1SJVUYDiPjthLwHRUx0x6ADVaNOOCnY4Vrt1+vrEkyWR 724qmYh02QJ4D+3o5KPxAbe8nd2MzNE= Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-39c13fa05ebso1406169f8f.0 for ; Fri, 02 May 2025 16:28:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746228533; x=1746833333; 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=E5Y/kDAPZ2CZYOoK7lx97X9msDYYLQQQiBCs0XHK4jM=; b=EhzQy4aXRj0oj65TAuA4YOmr8j1oHusrEgdn2Lnf3rb7qlE5vM1dJxvEzU+a3ccrjC RTaaR1nby3gOUP/60iqQ3pDLJO5m10qrmHQeqMzLbnKHidE2U8w+BArsXpHa+qJsEz0d oQ6p7ObZpB+rP+ndKFlaWThnUAm6MU0wLczFwjreHJmoKg3blpwT2p6kfIRj14FtvxNz KZivYFM7lvyMp40Cx2C3Yl2VWCfSESCtbLPESz20hLx/mjLgTEmMqn43piMkWCG1zvav O/yecaTU2TUUhHpE2VJCHNG8CDTXXiimsOK0lMsc2KqJ4yXrtitKzFYp9xUv11nUGukL 8oJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746228533; x=1746833333; 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=E5Y/kDAPZ2CZYOoK7lx97X9msDYYLQQQiBCs0XHK4jM=; b=HKTjAA3J3Af3M/trRw2vQsGScmkfK9Ejq9J+ZKyLf1QcHk9MnbHx88/xRDZFjJveDK cVJlHi0BB4YPm/rwlSwD7fqpW6HaZL2CQ95yM2fybb+PW2QP8cGVFXsYE/Z+nrBVtjRk IbE5v2mhKw93hHirPtpSUY0u2ZQ/5sXp8a4NZ0Nw4YV444698zXMpub4bGBwMQFjTfgI Q66E69CF3fOfnF9m9BP5egn1BYJ1P0xZ7puuSkW9walCbutyk6KarVOagvvkAisXPPyx 4MoPrjLpvm31xDVt6RfBW1rEpyTkTOxGNyHK/5bnPTB93tN4W21+WYSJvczRMjYJFhTd iIWg== X-Forwarded-Encrypted: i=1; AJvYcCUowDls//jXVnDWBVlkmwlx7hfxhXXC8yZ0mmf2t+gQXM31u6pMptWQ8vkwQLjBC7csCBePtBuqoA==@kvack.org X-Gm-Message-State: AOJu0Ywu3P+TqCsmK4b+NtuoTnYYi7K723RbmZjS2FES1Mb5qtzdDyM4 puE/6zNaQOMh3MyQpB5bW6liYvESzaAK9od2Qa8k8ADfxhkkeLoCFDGLm8DYUzdaD3Xg8VdihSO ZDTy4yIRh5DPcVAYLpTPQJ/+JXTo= X-Gm-Gg: ASbGnctXSCuZyqZaMvsGkWYHo8/Wsy7oGSt2jmqeeLNq4V+DUFagLhbFrOvCPlqu+8+ XLe3otBDY6oxGyb2EwNRbKVFvM+WEcPP2IQ4F6O9g+OoavC2hA/KHUn0c7crz1UTe2G1rPBCE1m lZ7t0DDHu4mFUq5Koj0yx6PHx7PX32UiQIYbeDwnpMjFCNc2N9xQ== X-Google-Smtp-Source: AGHT+IHahTU3EsKjJS4KqWDLrHSw8tBkBTgO/rSSEgaMpl4WxL15g4KW6c6VsUGT/meziHY4zl3UdemkSxNBn99UoQ0= X-Received: by 2002:a05:6000:4009:b0:39c:2678:302b with SMTP id ffacd0b85a97d-3a099ae972amr3369768f8f.45.1746228532438; Fri, 02 May 2025 16:28:52 -0700 (PDT) MIME-Version: 1.0 References: <20250502001742.3087558-1-shakeel.butt@linux.dev> <20250502001742.3087558-4-shakeel.butt@linux.dev> In-Reply-To: From: Alexei Starovoitov Date: Fri, 2 May 2025 16:28:41 -0700 X-Gm-Features: ATxdqUHDXke86Kdeln5DJ1QQfuaMZgpak68ymkpjleDqI7ms9r9I1efg5Nota0k Message-ID: Subject: Re: [PATCH v2 3/3] memcg: no irq disable for memcg stock lock To: Shakeel Butt Cc: Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Alexei Starovoitov , linux-mm , "open list:CONTROL GROUP (CGROUP)" , bpf , LKML , Meta kernel team , Vlastimil Babka Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 4D6ABC0005 X-Stat-Signature: o5j5kuym8ipjxumniea8hoqybget3qbi X-Rspam-User: X-HE-Tag: 1746228534-689116 X-HE-Meta: U2FsdGVkX18q3olSrbfcrxwVe/2bi0efqfK4g06PPIoK3aB05rYKxjXpMFiGAtL0BgTKjNWIiMyVRHz78O6jAiXdDJrFtJdH1Ws5Rtotbz8p3utmWX3GOeghIJj2ky14JArn1EgGw3zwAM7Y9O7kCz6P6F4/heaDo6ttxjC7ASjGuZtCHvBsEusANcrzLxqKnJA+fTREEt/hqOe29edG+3KJsGRBe4Ia6UfWJBGIdQNFp9NYhtFbVoQa4Mb9YpFYzBWYrt7PygaUzRZbV4Z7J6bs+jAbsGHpiu5YRye8zMOmymabOtzT2jxlPZISQYBpKtWBCUZnyKkWR0+61OPUz9ffEFRSjxRu/S8ZeAb4V61nMKDXOE1VE5GDnS8w/A2mkfPWrBR4FpiQ7r9dVZ/r+mlJhZgu7/SptyL4EYUc3UqyVG30AO9DZRHMqH2a3rIt8sblWKqJLPisGhaGREgOsz9Xa2YVU/Ot07xc0HPMiEBPflCqk+VHCF8WcEFAfmsECs8M8K4t6nZMrBWohKvYTxsvTCpwSAgD4+RlpOjdD5/9yN7hAdfj+a2rEsxxJR0vG0sPi8Gd6jZvsKjOh3N3TfPYmOQWM9Udgbsw6l/U9BiWNEmri3UTchPtiZwuVFGqQ6l77LCVsYHTDop1DAjVeJSOoCD07mJRL4/oo6slyZnG3BUHx094Cg6n+GgOuCQKM7RlDseKd9bCe7qFPDyCGJS//Lisj/gxleIRK/JO25vyocmcbO1mTA3fFN7ugPnk71+/o8MWL5cItJXjweWgLUbwELoHWeupbRW4cV2GC7oLXMMJejgw6uAm7+mG8WBU9Ltezo8zqQT6MGiRCOnRNXoZnNgE6Wp6g30Cce7bNWloTu7V/22V4CvnjapirTv7coINezU8pC528lk2/gBM+Si5nMhuXcxke5wfAXTPQ/Ldpyb9nOBG4UljgfWQC3Jm/1sTpciBFVoYvyySPQg HvTBLNaQ PvLpZAI2kqJxx0quNPEI9sSnk8dvexppawgdC3HwuUU3hgky5zo+2C67zlWynmLEnw3NUkS35HGmsPzJNoG9mly0HY9UHDpv1EUupBvhZz7tc1edse4922cvpJYm0EtpB7qg9BKB1RgZHE3VabbgpO68nDLErsr0rQUBOYhgOxK/SvYjUt7MXtrK7zfYIYBtSRr72pPd+17WWbzH6TMYbIYXZdSlDzsx10i+r14+rqParj28OOgwjY3P43jQynPqhVpaDaeb57snZuj6q8ojQ2+5vMRr8OCAXNqA6FGqVjh1ASkHlOkVFlKBl+65kP7yM/9JUGKh5B9qdWPPHXzOFIG1Ubr8YeQ5S9kei2P/3KS9/Lvv7QoKwKGyyakBD6H4jh5ldXliYrq8JGU8wfmmgoVjyoddNtsY3PIlw0lG4tN7SxA3xzayna0O+lQS5uN0oGfIqtI/QmH3EOB0JSO3F+QO28cT371GgV82s 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 Fri, May 2, 2025 at 4:03=E2=80=AFPM Shakeel Butt wrote: > > On Fri, May 2, 2025 at 11:29=E2=80=AFAM Alexei Starovoitov > wrote: > > > > On Thu, May 1, 2025 at 5:18=E2=80=AFPM Shakeel Butt wrote: > > > > > > There is no need to disable irqs to use memcg per-cpu stock, so let's > > > just not do that. One consequence of this change is if the kernel whi= le > > > in task context has the memcg stock lock and that cpu got interrupted= . > > > The memcg charges on that cpu in the irq context will take the slow p= ath > > > of memcg charging. However that should be super rare and should be fi= ne > > > in general. > > > > > > Signed-off-by: Shakeel Butt > > > Acked-by: Vlastimil Babka > > > --- > > > mm/memcontrol.c | 17 +++++++---------- > > > 1 file changed, 7 insertions(+), 10 deletions(-) > > > > > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > > > index cd81c70d144b..f8b9c7aa6771 100644 > > > --- a/mm/memcontrol.c > > > +++ b/mm/memcontrol.c > > > @@ -1858,7 +1858,6 @@ static bool consume_stock(struct mem_cgroup *me= mcg, unsigned int nr_pages, > > > { > > > struct memcg_stock_pcp *stock; > > > uint8_t stock_pages; > > > - unsigned long flags; > > > bool ret =3D false; > > > int i; > > > > > > @@ -1866,8 +1865,8 @@ static bool consume_stock(struct mem_cgroup *me= mcg, unsigned int nr_pages, > > > return ret; > > > > > > if (gfpflags_allow_spinning(gfp_mask)) > > > - local_lock_irqsave(&memcg_stock.lock, flags); > > > - else if (!local_trylock_irqsave(&memcg_stock.lock, flags)) > > > + local_lock(&memcg_stock.lock); > > > + else if (!local_trylock(&memcg_stock.lock)) > > > return ret; > > > > I don't think it works. > > When there is a normal irq and something doing regular GFP_NOWAIT > > allocation gfpflags_allow_spinning() will be true and > > local_lock() will reenter and complain that lock->acquired is > > already set... but only with lockdep on. > > Yes indeed. I dropped the first patch and didn't fix this one > accordingly. I think the fix can be as simple as checking for > in_task() here instead of gfp_mask. That should work for both RT and > non-RT kernels. Like: if (in_task()) local_lock(...); else if (!local_trylock(...)) Most of the networking runs in bh, so it will be using local_trylock() path which is probably ok in !PREEMPT_RT, but will cause random performance issues in PREEMP_RT, since rt_spin_trylock() will be randomly failing and taking slow path of charging. It's not going to cause permanent nginx 3x regression :), but unlucky slowdowns will be seen. A task can grab that per-cpu rt_spin_lock and preempted by network processing.