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 9FE1DC38A2D for ; Mon, 24 Oct 2022 16:12:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4014A94000F; Mon, 24 Oct 2022 12:12:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3B172940007; Mon, 24 Oct 2022 12:12:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 27A3294000F; Mon, 24 Oct 2022 12:12:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 1AB76940007 for ; Mon, 24 Oct 2022 12:12:43 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id D8180AB17D for ; Mon, 24 Oct 2022 16:12:42 +0000 (UTC) X-FDA: 80056336164.12.C93642A Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) by imf15.hostedemail.com (Postfix) with ESMTP id 6ED2CA0007 for ; Mon, 24 Oct 2022 16:12:42 +0000 (UTC) Received: by mail-pf1-f181.google.com with SMTP id f140so9387511pfa.1 for ; Mon, 24 Oct 2022 09:12:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6K/W/tGQbEGTcjFYFF7obhZCetWTg/joFwdMrcbbg88=; b=h/ytl5e9/k/342yB1H8BeaL02HxFJn4GIfjrkkGet6ZLG4cPmCYS/DpaC6IXsHL+CF Dqi4snGmU88lbGI0yHxHTbbvOMuiht6icq3YEZzVWdCQhtsW7U7x/xCJt2ThlpE5kCpa Ai42HwHKaNshye+8lyPpeRjxySViQ+q8azKSc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6K/W/tGQbEGTcjFYFF7obhZCetWTg/joFwdMrcbbg88=; b=KoUxEHNw4QwaTOBSQv7Q9nvGEM1Lp54FXrPagGwKvdNLG9iXUFD0/NjwdLtBCbrdIO ZwtHEVOGR53AOjdPhXjlBua3bHSaFVIkYeGy6Cb5JQF0++kcg6mm+4aWvRcmmk8Y35fd Ct1F1SnXC9Q8Z9TKS+qNXecGGov2K6MXxvl//xlJ1raY0AGv6YhlePmi8uIyXUVEk4K9 df6S0dRhGxu+5/JKGXnAosXGEyhZYpNbX/Ckffwb8OmFNkGtN4W9BbJ5HEIeTCiXoEmO 4XPyMeC/4gkXl6oRO0A3PnSoL0qkU21jpikvXFtVCdkmBpnksr6e25Vc9TELlKhpTdiH FlZQ== X-Gm-Message-State: ACrzQf1/xKcn3jutSd4NVXVjwjlqICBzzo+Mqr5IYfnC+8HsVcYauaS3 ldwmJ25/d7oJvJTlnuES4V3OhA== X-Google-Smtp-Source: AMsMyM6r66uB7r6D2ptdiXjTVDlaxnxa9zKkBZ7u4HiaYC5rYlVx5f3Cp2DY+F+I/EBCylyyXNBZBg== X-Received: by 2002:a05:6a00:1799:b0:56c:1495:70bc with SMTP id s25-20020a056a00179900b0056c149570bcmr119687pfg.12.1666627961483; Mon, 24 Oct 2022 09:12:41 -0700 (PDT) Received: from tigerii.tok.corp.google.com ([2401:fa00:8f:203:5f9c:c5bc:902f:3da4]) by smtp.gmail.com with ESMTPSA id u70-20020a627949000000b0056b8726d2d3sm5162pfc.157.2022.10.24.09.12.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Oct 2022 09:12:40 -0700 (PDT) From: Sergey Senozhatsky To: Andrew Morton , Minchan Kim Cc: Nitin Gupta , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Sergey Senozhatsky Subject: [PATCH 6/6] zsmalloc: make sure we select best zspage size Date: Tue, 25 Oct 2022 01:12:13 +0900 Message-Id: <20221024161213.3221725-7-senozhatsky@chromium.org> X-Mailer: git-send-email 2.38.0.135.g90850a2211-goog In-Reply-To: <20221024161213.3221725-1-senozhatsky@chromium.org> References: <20221024161213.3221725-1-senozhatsky@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1666627962; a=rsa-sha256; cv=none; b=nhGQlpkSQDJJshbiBYEpoTsZsbVvjI6HivrKIklXxuCnelDM2YCdC2CYDs2pyw4RpVWzWq SBRX3Tj+yQ0uGemAb6Fj6Iq42+4JJ7oyOWSEILziCx7H7KHtwTAZkVE3wioSkVlsNW+Ppx EFQSPmuvPUlU6HN6DFegtrHFi13UUYc= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b="h/ytl5e9"; spf=pass (imf15.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.210.181 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1666627962; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=6K/W/tGQbEGTcjFYFF7obhZCetWTg/joFwdMrcbbg88=; b=U2YTO3Yx7T2Ol6EFqK8GQZVI1ZLJ6UKHr4GCJSo6zNRshN/Gp7ydP7q886OEmz6U2nqH4E MUgmrYTNPzyfveMFuzR973XE8vx/961zZhXfjW07SLp8vq4Ck5sQNxCO5brh5JMPILjPo3 P10V1p2Uo6KBkIFbdXY/Da9paLz1UHM= X-Rspamd-Queue-Id: 6ED2CA0007 X-Rspam-User: Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b="h/ytl5e9"; spf=pass (imf15.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.210.181 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org X-Rspamd-Server: rspam04 X-Stat-Signature: asuf5yupf5k3jhbp96wiumz9zqf1nzor X-HE-Tag: 1666627962-86225 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: We currently decide the best zspage size by looking at used percentage value. This is not exactly enough as zspage usage percentage calculation is not accurate. For example, let's look at size class 208 pages per zspage wasted bytes used% 1 144 96 2 80 99 3 16 99 4 160 99 We will select 2 page per zspage configuration, as it is the first one to reach 99%. However, 3 pages per zspage wastes less memory. Hence we need to also consider wasted space metrics when device zspage size. Additionally, rename max_usedpc_order because it does not hold zspage order, it holds maximum pages per-zspage value. Signed-off-by: Sergey Senozhatsky --- mm/zsmalloc.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 40a09b1f63b5..5de56f4cd16a 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -775,8 +775,9 @@ static enum fullness_group fix_fullness_group(struct size_class *class, static int get_pages_per_zspage(struct zs_pool *pool, int class_size) { int i, max_usedpc = 0; - /* zspage order which gives maximum used size per KB */ - int max_usedpc_order = 1; + /* zspage size which gives maximum used size per KB */ + int pages_per_zspage = 1; + int min_waste = INT_MAX; for (i = 1; i <= pool->max_pages_per_zspage; i++) { int zspage_size; @@ -788,14 +789,19 @@ static int get_pages_per_zspage(struct zs_pool *pool, int class_size) if (usedpc > max_usedpc) { max_usedpc = usedpc; - max_usedpc_order = i; + pages_per_zspage = i; } if (usedpc == 100) break; + + if (waste < min_waste) { + min_waste = waste; + pages_per_zspage = i; + } } - return max_usedpc_order; + return pages_per_zspage; } static struct zspage *get_zspage(struct page *page) -- 2.38.0.135.g90850a2211-goog