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 2D927C67861 for ; Mon, 8 Apr 2024 13:17:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A3E86B0082; Mon, 8 Apr 2024 09:17:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 655536B0085; Mon, 8 Apr 2024 09:17:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4CD516B0087; Mon, 8 Apr 2024 09:17:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 302686B0082 for ; Mon, 8 Apr 2024 09:17:08 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id A55C412014E for ; Mon, 8 Apr 2024 13:17:07 +0000 (UTC) X-FDA: 81986415294.24.E558B62 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by imf29.hostedemail.com (Postfix) with ESMTP id 17084120003 for ; Mon, 8 Apr 2024 13:17:03 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=hvJFCtR1; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=hBFBYljj; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=hvJFCtR1; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=hBFBYljj; dmarc=none; spf=pass (imf29.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712582224; a=rsa-sha256; cv=none; b=Fdg/LRKqgC6q4SWi4A+9kolI+naxPMyaf7olVK6QOIfucIsbcl8kxwKdYLL8gzElfFDEcL IuNnRM+LTGS3SAoMUdgN9Wz2O36lXrAeTRmRDd47KdJ+o2bufvYn6iorHI5dftaqB8FJO9 QHXKZV9spE6NCvHHnoe/8aM0FlvmhYA= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=hvJFCtR1; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=hBFBYljj; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=hvJFCtR1; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=hBFBYljj; dmarc=none; spf=pass (imf29.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 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=1712582224; 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=WJd8m3J+iaKajBaS4TIsuW42TKSTbAuX12JBjWaf3yI=; b=AJGZwt2D8GQnvBWMrO6eQBF8ecCSfMGk21/zmNkxbksO8aUVtDBGjLqLEo8pp3R/KElo3Y AkawGfXd8lZ4K1APnHDmvHmLth5OGL+GI0jNktGNkO40ssaFz4hdx7aJ7ObGwIn9A//y4P hQi7VWY7keUdY00jHDvQrYkOhcbGMU4= Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104: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-out2.suse.de (Postfix) with ESMTPS id 404D22035B; Mon, 8 Apr 2024 13:17:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1712582222; 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:autocrypt:autocrypt; bh=WJd8m3J+iaKajBaS4TIsuW42TKSTbAuX12JBjWaf3yI=; b=hvJFCtR1+hDFYkQYkwexEGMugZi4S8M9UUTSmr02+vPnU3ng0muPB61RSAtcDRZ5+vpcqc TKgksgyTuKKVgTyNp1l0belKsol2LAFjKmG9LD3amIEdeZe9s2U36KsXFUqsz5Y8CrWvFP 6vWjYympUm7Xt1oriZX8/6+QzCZ+I3k= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1712582222; 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:autocrypt:autocrypt; bh=WJd8m3J+iaKajBaS4TIsuW42TKSTbAuX12JBjWaf3yI=; b=hBFBYljjpShx9uUM/V7XCRMby1hQSRCbEYXVEet6HpKhMGf6ASF+F4wnZNSMqUwx16cJSh BrNY5hWdGF2JdRDQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1712582222; 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:autocrypt:autocrypt; bh=WJd8m3J+iaKajBaS4TIsuW42TKSTbAuX12JBjWaf3yI=; b=hvJFCtR1+hDFYkQYkwexEGMugZi4S8M9UUTSmr02+vPnU3ng0muPB61RSAtcDRZ5+vpcqc TKgksgyTuKKVgTyNp1l0belKsol2LAFjKmG9LD3amIEdeZe9s2U36KsXFUqsz5Y8CrWvFP 6vWjYympUm7Xt1oriZX8/6+QzCZ+I3k= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1712582222; 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:autocrypt:autocrypt; bh=WJd8m3J+iaKajBaS4TIsuW42TKSTbAuX12JBjWaf3yI=; b=hBFBYljjpShx9uUM/V7XCRMby1hQSRCbEYXVEet6HpKhMGf6ASF+F4wnZNSMqUwx16cJSh BrNY5hWdGF2JdRDQ== 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 2560A13675; Mon, 8 Apr 2024 13:17:02 +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 rlXECE7uE2YANQAAD6G6ig (envelope-from ); Mon, 08 Apr 2024 13:17:02 +0000 Message-ID: Date: Mon, 8 Apr 2024 15:17:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] mm/slub: Reduce memory consumption in extreme scenarios To: "Christoph Lameter (Ampere)" , Chen Jun Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com, akpm@linux-foundation.org, roman.gushchin@linux.dev, 42.hyeyoo@gmail.com, xuqiang36@huawei.com, wangkefeng.wang@huawei.com References: <20240330082335.29710-1-chenjun102@huawei.com> <0a59e5a1-1961-5eb2-2eb0-a930006e3f80@gentwo.org> Content-Language: en-US From: Vlastimil Babka Autocrypt: addr=vbabka@suse.cz; keydata= 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 EP+ylKVEKb0Q2A== In-Reply-To: <0a59e5a1-1961-5eb2-2eb0-a930006e3f80@gentwo.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Action: no action X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 17084120003 X-Stat-Signature: 8esttkpfgfbegytb9tkidbdos84g8mcm X-HE-Tag: 1712582223-822044 X-HE-Meta: U2FsdGVkX1/VFGmu+zOLCD546lSUmHOHGyeKgbKr50pDfApoQXJsHFR/aTM7uYTpPj3y1vbsHOldyHONpO7GjYO7G499TmanzG5aJ3ldfdgAN8qnBexd9BvZ9i4U0rSxIdcCGoNlnDdCKn7lNeTXvD3yQefv5TNiXzEVQ142Nk0npey2qZjNTWU/9UUxuhDY04HS2vbTvxxJKWvWLGhZM5CliRse68cZEsG65nVJWj1UwWD1vhjGielBVgba/t4Tv69rG2FgmI0ChxCsOw+xDbUOl7cpfBm2HnAVHWOnA0WqkiQhYOwTmrh8rHbKpfJenZMX5d8xG15AboMgU+h6T/Gn8pF9/6xxvBlQdfiLeE49TkgeIPbYwgB0vTBX9TTyc34HeuV79zpj8E1R7saswsjYMK59gm06QY67Ws8+uus19yQKkYiQtWjhv3ytCNAu4bbbJwv6eqdosWg/QFgVzIJy+R0cjTKXSCQpvrFcOumFZ5nqQxNv9tbsKRJO/yWM0zfGrBjjJuAMm9eUS+zgCVe6JNRkz8SHrDNO7JyTa82SCmJZvdu3wgcrdFiT/78Q7BpCZkhAzaahrXJDzFj7lGE3qZrmg0CioRX832CSESThUYeT40lrlJp7dDWzkDmxfIMPNXesG/RTYenL4/z5v1Hx3kieU8m8V9ZDDOZMaPYXP5JgO+lwLZWKCYN1joVz1yhTyNDO/I8Wl70TKz1tsNRL15gjcpSa7t5DXEeGyih1O8foYxmyMkPbB+LAsav6KYYoxDBFRvEY2W/xeuNwwNH9PL344uRy+Guczp/6LXrHlV+zSVV6j7fJq0LFpsK5hWSRQcG+iTs6aZoI2MZqYuW/KyMsJPzPEAIKiIfGHVLGKmc8I6HwAEN+OJb8lpVMnxXNCpKtXerwbFC/nmQCmt2CWYIg45jfG1m+mfMTemZBgspbC7N5VHi7J8/hmOch2F9aewL0xyHKHQuudrb PvLgLGAV M+JufJ76K43S/2yTDfjOQDXg2VLL1qUC4E66Bwqt2/iE77mYz3W8CqyH3LxrGCZHtOZW1lSXphkHnEb7s/MaEnq1LIdW3iwefgonb3oU2QUQ+euVjkU7Mxtpr2wy1KqtAx81QKTypF83Go3PxW88Kcnu/DkgisXeR+RZnzOMDqxmlbbsoblzJF3HUN5mGKvoka7FeOGa/riKpQFVWazzmQdpHeNLsWh0UM4qQiEUq57Kv9du9Z0EKZE+qHkqnzNZwO1+Yb+tKvOlS/lJdmXUqIAcAAf21QNOawp6I5CfuGb682clzXSoUjhIBDqyZDVOaAl19VHI0zTOIsueXtWivZPHdog== 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 4/5/24 6:50 PM, Christoph Lameter (Ampere) wrote: > On Sat, 30 Mar 2024, Chen Jun wrote: > >> When kmalloc_node() is called without __GFP_THISNODE and the target node >> lacks sufficient memory, SLUB allocates a folio from a different node >> other than the requested node, instead of taking a partial slab from it. > > Hmmm... This would mean that we do not consult the partial lists of the > other nodes. That is something to be fixed in the allocator. Which allocator? If you mean SLUB, this patch fixes it. If you mean page allocator, I don't see how. >> However, since the allocated folio does not belong to the requested >> node, it is deactivated and added to the partial slab list of the node >> it belongs to. > > That should only occur if a request for an object for node X follows a > request for an object from node Y. Are you sure? I think it's a stream of requests for node X happening on a cpu of node Y, AFAICS the first attempt will allocate the slab page from node different than X (possibly node Y because it's local and has pages available unlike node X which is full). It does get installed as the cpu slab, but then the next request is also for node X, so the node matching checks make the slab deactivate and allocate a new one. >> This behavior can result in excessive memory usage when the requested >> node has insufficient memory, as SLUB will repeatedly allocate folios >> from other nodes without reusing the previously allocated ones. > > That is bad. Can we avoid that by verifying proper allocator behavior > during deactivationand ensuring that it searches remote partial objects > first before doing something drastic as going to the page allocator? > >> To prevent memory wastage, >> when (node != NUMA_NO_NODE) && !(gfpflags & __GFP_THISNODE) is, >> 1) try to get a partial slab from target node with GFP_NOWAIT | >> __GFP_THISNODE opportunistically. > > Did we check the partial lists of that node first for available > objects before going to the page allocator? > > get_any_partial() should do that. Maybe it is not called in the > kmalloc_node case. Yes, get_any_partial() is currently skipped for requests of numa node different from NUMA_NO_NODE. I think it's a useful tradeof to first try satisfy the node preference with a GFP_NOWAIT allocation. If it succeeds, the target node is not overloaded, we get the page from the desired node and further allocations will of the same node will not deactivate it. If it doesn't succeed then we indeed fallback to slabs on partial list from other nodes before wastefully allocating new pages from the other nodes, which addresses the scenario that motivated this patch.