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 B9186C77B75 for ; Tue, 18 Apr 2023 00:41:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 026FE8E0003; Mon, 17 Apr 2023 20:41:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F18B38E0002; Mon, 17 Apr 2023 20:41:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E074C8E0003; Mon, 17 Apr 2023 20:41:35 -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 D3A808E0002 for ; Mon, 17 Apr 2023 20:41:35 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 958EF1205E5 for ; Tue, 18 Apr 2023 00:41:35 +0000 (UTC) X-FDA: 80692658550.27.D6FA761 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf26.hostedemail.com (Postfix) with ESMTP id BD90C140003 for ; Tue, 18 Apr 2023 00:41:33 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=hACjk0Lz; spf=pass (imf26.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1681778493; 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=bQVpIM5Uc4T1d2TOZWP/Fc5U5vvRgJXCExGEUKM3bp0=; b=40pGroZwFedkdZmF4PZREQ1gvhK3AJViUubvgZHcttOZbGZUB+4rvSQaiLP3csZ1hlMrdo ahMKveUK9jS3+JK0HN3TjjxdKr7SZZE0hPr0to3ZjoP0LH/A81kfKHEplY/GuidYYQ4cU/ 5QtkyBN4kKqHQD42/cRofugL3iCbxxo= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=hACjk0Lz; spf=pass (imf26.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1681778493; a=rsa-sha256; cv=none; b=Sa/X0/8GnDoHEkj0AiUXQMruaJtYGmEQG/bzsYVf8MSJ5/IvLQiuQffVZts1eTboxb87b/ CzIgk5Y6s+e5H99wKdyHdhOfjhENdgo+OA/2KtJQJsBPz+zdASZ4o34lqjw937NmS68EiS 0/KJ/kSjmJNT0w0nMkvEQSKRz8uuNa8= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D422862B68; Tue, 18 Apr 2023 00:41:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 234A7C433D2; Tue, 18 Apr 2023 00:41:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1681778492; bh=NDF5RERKBTV++O0srQwGL0/bYyfwjsDkNiG58kuLKlc=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=hACjk0Lz/j0DG53leFvmdfDdqQ9KUp4Z+Ou4HeMOjYhjmJaq90aSNKRNeNAJPjdEt BfuhYxYq3M/RoK8yHTLT6df+Ac33RHjUfyRsk+Y93zn/p7UNb6nGz9JbYJdTjPSPb7 oxK4AIfBe0d656niLEsHioESG2gO8srcSZjwzibc= Date: Mon, 17 Apr 2023 17:41:31 -0700 From: Andrew Morton To: Sergey Senozhatsky Cc: Minchan Kim , Yosry Ahmed , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCHv2] zsmalloc: allow only one active pool compaction context Message-Id: <20230417174131.44de959204814209ef73e53e@linux-foundation.org> In-Reply-To: <20230417135420.1836741-1-senozhatsky@chromium.org> References: <20230417135420.1836741-1-senozhatsky@chromium.org> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: BD90C140003 X-Rspam-User: X-Stat-Signature: mwtwdokwbrrfdgkcyxiob8ey513ys8yi X-HE-Tag: 1681778493-291081 X-HE-Meta: U2FsdGVkX1+mrfUgQMzriRg3d2ayWTDfW55pp+JDRfhpixPA8wlPM7v5HAcPNfhT2w1WMu5B2BG5h56Zl79uxg9f/lT4bx3KQcuCz7KyhTEzumq7jXpV43yVusLnK50wAjyOjRGu4Q32WAYMYKDW0icLDC1lYs6RTFrX7wl5+DHBpaFwZgKR5TaRRykrFJEjBx/dho5lOf5dKmBtIgzaAKKjRk9UZiPlGfegRTDbpkzaSUhhCOxZomqtQEDYxZAYi/mQp96aTPsMwWhMWFC4uG/kBDcWtFMASO+KJB/Jg4GImbUcyKs8mtUFrj6SCJLuYQaXNWKqnhN9qRiXSPef53QZ8PVa/871EXN/nc1XWsJwm3f9YM2zfA0TxA3XpCOr1XgDuAo8vS+Cx5orZtKMzuDmFKKRUdU2ag61MObU+QYIh7BDRlZmvui6E1Vdcz8wwSn0ZE/pnbXlAq4JnqdY9qFxY5yI1SRZjWtrRSq2cM4UVKTA7vnujh+JfSC9rSGjxiJXcyOVBP98KnUNrB5udvAeOd8qUWS+hQADFOd2QU8fUIIg1sPWmUa65I+KC/kweAvxlVPwtVtGLbf97rAFJs+hnST13yQ3YBN8Ih0UaIlMwrcgylMewkfY9VA1tGS6AOJrdXGuproUwrftH1V5/RFxPm8no3nDoLUXkR5AdteQPiuAzYq0bUXT4E7WU8FNEf6PL9MOqA8loQtMisSYuO/hShi0QTzAAq/E2r86SLkERIn/5Z4K9/E3r2bENTU1Y+RFP4RJv4jCFXjoyqR0aruT655h/6JsLZWaLDSbslK6mcVlvqzH2rjSlSJUfT0yZBAM8Nm+q9yS7omtWC01HTDwOuZ74nPTB9G6CFIP1ySBL/8Lnbtjy9efY7fzb/eXCPMJZL+n3k6RmmdnF7XgXdevu+8GkIGBqDjaUrgbhcPrjFbocwKAYfGhHVql9jiDl1R0e/3CFUcTbIH7fCW AtffqpA7 72TfDgjfGZsv7QDWdFPHzoqWGMpCbptt6LPrRm1sltHnlC/75N+tFr1XeUvUV2M8gU7TggDyVA/WJfO4KfgltlGOwzzu1i3Qga5TCoW/ahGE5C/jqHjWggAWAmT+CSg01C4xcS0l7GlaBMe96AqHpSYCSRcncnqnfi9852aSyMyqWeLR9S/W/HWiyZb+DBOQH+grmgDW9M/RE8TXmnTOp1z0Sc5qLPOiYmLPVbrPQ5iq7H30XAzKG5NIx/hxqyKbeXkjpYwu6By5Ac42cFkCAkeJsA7FQXMnBGl63sH8GVlftDXXoSxsN866PSF0D3ZaFa08nQtrm19bgaTXIIK1R04g7hayPqpQyQ9A2Jd8pKWilREVal4aoQQea4EjFYLDBN2HnS0kk1uW1P7u/J10gJmoDKg== 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, 17 Apr 2023 22:54:20 +0900 Sergey Senozhatsky wrote: > zsmalloc pool can be compacted concurrently by many contexts, > e.g. > > cc1 handle_mm_fault() > do_anonymous_page() > __alloc_pages_slowpath() > try_to_free_pages() > do_try_to_free_pages( > lru_gen_shrink_node() > shrink_slab() > do_shrink_slab() > zs_shrinker_scan() > zs_compact() > > This creates unnecessary contention as all those processes > compete for access to the same classes. A single compaction > process is enough. Moreover contention that is created by > multiple compaction processes impact other zsmalloc functions, > e.g. zs_malloc(), since zsmalloc uses "global" pool->lock to > synchronize access to pool. > > Introduce pool compaction mutex and permit only one compaction > context at a time. This reduces overall pool->lock contention. That isn't what the patch does! Perhaps an earlier version used a mutex? > /proc/lock-stat after make -j$((`nproc`+1)) linux kernel for > &pool->lock#3: > > Base Patched > ------------------------------------------ > con-bounces 2035730 1540066 > contentions 2343871 1774348 > waittime-min 0.10 0.10 > waittime-max 4004216.24 2745.22 > waittime-total 101334168.29 67865414.91 > waittime-avg 43.23 38.25 > acq-bounces 2895765 2186745 > acquisitions 6247686 5136943 > holdtime-min 0.07 0.07 > holdtime-max 2605507.97 482439.16 > holdtime-total 9998599.59 5107151.01 > holdtime-avg 1.60 0.99 > > Test run time: > Base > 2775.15user 1709.13system 2:13.82elapsed 3350%CPU > > Patched > 2608.25user 1439.03system 2:03.63elapsed 3273%CPU > > ... > > @@ -2274,6 +2275,9 @@ unsigned long zs_compact(struct zs_pool *pool) > struct size_class *class; > unsigned long pages_freed = 0; > > + if (atomic_xchg(&pool->compaction_in_progress, 1)) > + return 0; > + A code comment might be appropriate here. Is the spin_is_contended() test in __zs_compact() still relevant? And.... single-threading the operation seems a pretty sad way of addressing a contention issue. zs_compact() is fairly computationally expensive - surely a large machine would like to be able to concurrently run many instances of zs_compact()?