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 A8054C3ABCB for ; Mon, 12 May 2025 15:56:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6FA636B0171; Mon, 12 May 2025 11:56:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 681EE6B0172; Mon, 12 May 2025 11:56:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4FA646B0173; Mon, 12 May 2025 11:56:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 2D9236B0171 for ; Mon, 12 May 2025 11:56:12 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 3FD1B5805C for ; Mon, 12 May 2025 15:56:13 +0000 (UTC) X-FDA: 83434707426.22.BE99B28 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf30.hostedemail.com (Postfix) with ESMTP id ED0838000F for ; Mon, 12 May 2025 15:56:10 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=KKMaIo2j; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="q3vtoZ/D"; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=KKMaIo2j; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="q3vtoZ/D"; dmarc=none; spf=pass (imf30.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747065371; a=rsa-sha256; cv=none; b=RKFsh3NgkSfwK8Pm5TDq8vz4lId9OlkzRJReizpuZ1IorZbzHgfZfj1QhLTh5TIMr9eRud yDB7KRcgIvHerzzJKVx/kGqOBceYJoYUxkYWxYRXNeOgwk5fwo4dK6iilmFBYDOzwXxBCn yN2sYdYIqiIrFA4huRSmLRvtUgTVjHk= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=KKMaIo2j; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="q3vtoZ/D"; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=KKMaIo2j; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="q3vtoZ/D"; dmarc=none; spf=pass (imf30.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.130 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747065371; 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=Tnje18TSkZvQ01oa5Qf7ZCcFzYVyVvw2JPB7RKiqgcI=; b=JkiYPFbXgsgdjvhoRBtW+DQiWNV5RdF+kODLo/9cpIs4/MTrR34y1Q0h2zC2z+Ji1DI9Y/ GgYPh5khuGCcoWAgA/8HYcw45jf+49YGnaXTyjxs+R1qI3kaF3ZeAalyAHpD0b/b1Hxvnu U7+kmd/gxRxn1g4Yj+g4ZdsMp1UafNA= Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 5FB3F21180; Mon, 12 May 2025 15:56:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1747065369; h=from:from:reply-to: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; bh=Tnje18TSkZvQ01oa5Qf7ZCcFzYVyVvw2JPB7RKiqgcI=; b=KKMaIo2jKbpBGkx/fBNsQS+Z+VWI5kTkYrJ95CpK/fczbBsRUOv/rYInjEW9AJI4aoHvrs lLG4L1aBQDT76uppQxClwIgM+FL/XJolkekRaTfzbGh62Y78KrotxQIshRcfWptXEDW236 X65jU5Iatd2FJ/CmTGr7VsiDW5yDjZ0= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1747065369; h=from:from:reply-to: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; bh=Tnje18TSkZvQ01oa5Qf7ZCcFzYVyVvw2JPB7RKiqgcI=; b=q3vtoZ/DRldVfOtcjsrqEFeV3/LXb691myGUPK/O6Fd8T2qHtzagR6dYbrz3pElKtNVUFM 7MKhYj+/BF0H8LAg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1747065369; h=from:from:reply-to: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; bh=Tnje18TSkZvQ01oa5Qf7ZCcFzYVyVvw2JPB7RKiqgcI=; b=KKMaIo2jKbpBGkx/fBNsQS+Z+VWI5kTkYrJ95CpK/fczbBsRUOv/rYInjEW9AJI4aoHvrs lLG4L1aBQDT76uppQxClwIgM+FL/XJolkekRaTfzbGh62Y78KrotxQIshRcfWptXEDW236 X65jU5Iatd2FJ/CmTGr7VsiDW5yDjZ0= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1747065369; h=from:from:reply-to: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; bh=Tnje18TSkZvQ01oa5Qf7ZCcFzYVyVvw2JPB7RKiqgcI=; b=q3vtoZ/DRldVfOtcjsrqEFeV3/LXb691myGUPK/O6Fd8T2qHtzagR6dYbrz3pElKtNVUFM 7MKhYj+/BF0H8LAg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 4739B1397F; Mon, 12 May 2025 15:56:09 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id WZAPERkaImhdWQAAD6G6ig (envelope-from ); Mon, 12 May 2025 15:56:09 +0000 Message-ID: <2e2f0568-3687-4574-836d-c23d09614bce@suse.cz> Date: Mon, 12 May 2025 17:56:09 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 0/4] memcg: nmi-safe kmem charging Content-Language: en-US To: Shakeel Butt , Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Alexei Starovoitov , Sebastian Andrzej Siewior , bpf@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team References: <20250509232859.657525-1-shakeel.butt@linux.dev> From: Vlastimil Babka In-Reply-To: <20250509232859.657525-1-shakeel.butt@linux.dev> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: ED0838000F X-Stat-Signature: fjbwi3bpn4cbwuyhw637kxsyk1fsezj6 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1747065370-511580 X-HE-Meta: U2FsdGVkX1/EQXvXSIyL8u07A8B5bcpEuaIogpWOu3IYb46h24EjITyPQdv4i4ppwKsXr43i74JXopWdroO/MJL/VbW+hxUvnz0JOuxHt5joH4UqtoZUtle7q2/vbv3VvjbKUkSoiZxaE9zF2wti1qpbRoHdQE8kciGAtxcZnYZiJjEkAmMQe0UviCixGj9a1iq3p+KwKZhqhM9nSZF0/flau+ZgDJdHOg5CU2kZVku/57hZ5hiB+cYDIC8dIb3yA4+txyVsQ//Knx12Tryz8MJUuAncmEdcKFynJ7B82PAe790EzBhs9BaA0CymRIpOU7fhjEIcS6XP98ycpqm96YQz48xJ0hF+TcfmbGYIxilQHIB1KkQYKHbvjJErKTkxO8ejfCslwEAkiN2HoenEHxdl5KvmCRZAGChWfC4Uj3eU0oFOVcn3VLOCMYZnrvYiGpI6nEgPT35WsyRn4xCztG35oGlZLUTLuudeyUPvll9n1cRL6NbQw+P38BGHheXjiY2AQCVhBPd+62L+rnGcxQByZPEKm7t18BJgmlRVwHTT5yAcbe9pfXhTFw8b7tTnLQPYjVov5+a2Cg8SKyubMNUUkkkeilTbJdkeg8JSEW4TkUu4GdTxswf8geSs1ZdzmP3W9eg48I9dyWO+UAIRl98ZGDCcf7Z7/BszLQlMymXq1E8krIOCtVtQ0VTVTYZEDMN0tUGbEc98bn+6ZvQT2ZiSrMz2tlzfWw9tCoEAzublQX9f5ZdKTy3A1eUuYYSSPEYlU234fE6XtIVjdIWPN8WFk4scElbIFP4xdJxAiSWwXn6/viR5OBG905zjI9B7O5FgCKORbpLHgxOcQiT+R24hZyJEGQGYeYfG/l+WLInY6vIH8zJvMbAX/rNBTf3FSzD2w+oRkHMPljOoMrpkjx/9DngqS0qRp34jUVITnsvNgspPnf6dbMqG3nQ/M1fbjQlmMDRhFOccdmZb4Wb aF5Hq3+5 dzPtjKIKr3Y4me85xJHG4PRqyppVnsAEM5MZpTmkZP7ZB3hWN2NI0B85TZ3f/ZjD4+CxXKAWJs0X54yzAjjzwoDY1Eiajb+HSwWoTHFlomtK7drh62NqACBCxVIrYbSErOzRaHfI4gH5UJZtX6cVC480LBn+6ad984PNoOgUGKMST+NlgWKOIqjdyYc6iKR58QuOBrhE9ABpjfZ9YajiymFnxb+5gieP9akssKL37pcFlz/F4sm7liZSTPyC47Vik/S5nRsZEya5cCq4YN4FnPoXFJgZd02f325P8 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 5/10/25 01:28, Shakeel Butt wrote: > BPF programs can trigger memcg charged kernel allocations in nmi > context. However memcg charging infra for kernel memory is not equipped > to handle nmi context. This series adds support for kernel memory > charging for nmi context. > > The initial prototype tried to make memcg charging infra for kernel > memory re-entrant against irq and nmi. However upon realizing that > this_cpu_* operations are not safe on all architectures (Tejun), this I assume it was an off-list discussion? Could we avoid this for the architectures where these are safe, which should be the major ones I hope? > series took a different approach targeting only nmi context. Since the > number of stats that are updated in kernel memory charging path are 3, > this series added special handling of those stats in nmi context rather > than making all >100 memcg stats nmi safe. Hmm so from patches 2 and 3 I see this relies on atomic64_add(). But AFAIU lib/atomic64.c has the generic fallback implementation for architectures that don't know better, and that would be using the "void generic_atomic64_##op" macro, which AFAICS is doing: local_irq_save(flags); \ arch_spin_lock(lock); \ v->counter c_op a; \ arch_spin_unlock(lock); \ local_irq_restore(flags); \ so in case of a nmi hitting after the spin_lock this can still deadlock? Hm or is there some assumption that we only use these paths when already in_nmi() and then another nmi can't come in that context? But even then, flush_nmi_stats() in patch 1 isn't done in_nmi() and uses atomic64_xchg() which in generic_atomic64_xchg() implementation also has the irq_save+spin_lock. So can't we deadlock there? > > There will be a followup series which will make kernel memory charging > reentrant for irq and will be able to do without disabling irqs. > > We ran network intensive workload on this series and have not seen any > significant performance differences with and without the series. > > Shakeel Butt (4): > memcg: add infra for nmi safe memcg stats > memcg: add nmi-safe update for MEMCG_KMEM > memcg: nmi-safe slab stats updates > memcg: make objcg charging nmi safe > > include/linux/memcontrol.h | 6 +++ > mm/memcontrol.c | 87 +++++++++++++++++++++++++++++++++++--- > 2 files changed, 88 insertions(+), 5 deletions(-) >