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 C1300CD11C2 for ; Fri, 5 Apr 2024 15:26:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3B00B6B008A; Fri, 5 Apr 2024 11:26:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 35F096B008C; Fri, 5 Apr 2024 11:26:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 226D06B0093; Fri, 5 Apr 2024 11:26:29 -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 048DA6B008A for ; Fri, 5 Apr 2024 11:26:28 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B3D24803C6 for ; Fri, 5 Apr 2024 15:26:28 +0000 (UTC) X-FDA: 81975854856.03.BB08BEA Received: from mail-qk1-f169.google.com (mail-qk1-f169.google.com [209.85.222.169]) by imf04.hostedemail.com (Postfix) with ESMTP id 8E7BE40007 for ; Fri, 5 Apr 2024 15:26:26 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=iI3Y0SNe; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf04.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.169 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712330787; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=7egvzgt9f/+4/rS4d4Ep6v/hZKTSJpzgLfFJthInX5s=; b=0x9+5KJT6AzGl+tXbSlt0B3NvP9izAoN1jzAfudJpBdBjgokVpEIPc+mDsw+tQ3zpe6PPg kdmfLkyNnXtAqgT493NRUCq1V6b1wBMOlCF2Mg4PMtKooaP2IfXZieGof1KKcilYa+2W4g ecPwaaIhyCWwBXKyk4zsZVjRyaQsP84= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=iI3Y0SNe; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf04.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.169 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712330787; a=rsa-sha256; cv=none; b=hOkiix+6hokXhr25spXW3Uh5CPzYmlibKKJxU+Ksyh6nUP9pIkelnu6DXFIpC/npKnzLPy C5za5CB+f1wO34i6wGk94MPpAf1dCDy1OiNRA9iWYtMkTj9m/Yj9K3sOCTdw4hvIgrHtqR C81zCU4nh9BvZHSXfrEHb2LpInCWN3E= Received: by mail-qk1-f169.google.com with SMTP id af79cd13be357-78d3c66ee65so183155985a.1 for ; Fri, 05 Apr 2024 08:26:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1712330785; x=1712935585; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=7egvzgt9f/+4/rS4d4Ep6v/hZKTSJpzgLfFJthInX5s=; b=iI3Y0SNe15UWJoOCziwMJSHjI3oPiuzK0t0IuBFzrscsh70mdhPxiA8w99n1GWHH/X dYyd0WNbBmX8FP1SlL7HmMWbjeVPnvYnda94RBPPrNRzeSBRwSmIGvsrF4NCEG8Rtvgi h0DvcuQwCu1CqlQXkmhoPnqKhDHcEByP+9ugH6Z60H3GE5h39oQtEkAxfkQn9qIcocMC O4m9UJ9GMRu8YXL+vkQCpVTPt3rV+vh3BP2ZRlhvrKc0ulJFbWpD1S4FWqSlXDoLBLSm Tp1PC8tFv+5HGmL3pYT0ZJzgWMxA/zujnQdl6peEEax9GFskQGaxC5fVvDYZHvtlWGxw 6m0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712330785; x=1712935585; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7egvzgt9f/+4/rS4d4Ep6v/hZKTSJpzgLfFJthInX5s=; b=gd0ZxyrY8Fs7MNNIKdCZIQ8QehqutT7tSslMwcc78dW8yILjvhL/nFqjre+8liuoLk 0p6PxArN2tODsXb9xsPN3y+wHm2rZh/IdMfPFE9ymlPJhguCPcQUdlqW2QxSszItAmiz t+xHu4uoPh6ADGhMsd05nFYgiYtaROoe/NFYHB49B/cmDZ1WvjJqE7v1E9XVm06baBAx f6br84ggBd1obnXsdIx1rOhhrpTltQphpEG6KI++1JbbN+gDVdYTDxZlQ36PaGjWiBCl /n7tpWQRAjysDfs/LI3uyD9DkVvXQeL6mh6aD2f1njIchkivGiac/fUiMnG2m63OGrKE /6FA== X-Forwarded-Encrypted: i=1; AJvYcCVm5y6MtNSG8r03VMi6BcbxM1SYOKL/1g3Gj+hxl2++pZlTVS3bWgwvEuLQeECDLLL7hIKQi9qavS/S56b0DQdNg8o= X-Gm-Message-State: AOJu0YyBZiA1VeLVk1YruGfBzyrHPSNGWFON+iSTKTqES+oEm8ACPCFW WSUNdFRpOS+bKYTEEDrx7FnZ0MSRbacGAJoKwh4eyr0P8qVD9iloMEk5oLpNJNTCvuhI4Yx5vvT 5 X-Google-Smtp-Source: AGHT+IFZlYtHK9H9NQkqEujS+EyV6KdvNcWq0KOgdHxCZ0lHfjpS8D/j/RpR3jzXkZX6xv5m2UAjHw== X-Received: by 2002:a05:6214:3019:b0:699:336b:666 with SMTP id ke25-20020a056214301900b00699336b0666mr6427813qvb.7.1712330785555; Fri, 05 Apr 2024 08:26:25 -0700 (PDT) Received: from localhost ([2620:10d:c091:400::5:bdbd]) by smtp.gmail.com with ESMTPSA id y18-20020ad457d2000000b0069903c37a36sm688198qvx.100.2024.04.05.08.26.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Apr 2024 08:26:24 -0700 (PDT) Date: Fri, 5 Apr 2024 11:26:19 -0400 From: Johannes Weiner To: Yosry Ahmed Cc: Andrew Morton , Nhat Pham , Chengming Zhou , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 2/5] mm: zswap: calculate limits only when updated Message-ID: <20240405152619.GA866431@cmpxchg.org> References: <20240405053510.1948982-1-yosryahmed@google.com> <20240405053510.1948982-3-yosryahmed@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240405053510.1948982-3-yosryahmed@google.com> X-Rspam-User: X-Stat-Signature: w7ax4o8xpr6mmd1jde7g7ndkxm7t4w38 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 8E7BE40007 X-HE-Tag: 1712330786-829966 X-HE-Meta: U2FsdGVkX1+S6KKiwnBzH2RxyPufZbSR4MqLKYi37GpOgy2xWYP4wli51r43q9fAwF8uLwvf3Qj0Jg+4+szJxnvUa5HBTZUP7aTL/HNTaDOHM+CRyGgxRUwDALHzjpMcXrveKFC4IJlz8BzRr8CyUMqBGsbMp+IDkO9D8E060hPewiEuKnUIqptWzh7rwpIL4Qknv+lyf2nn2V6skPDXD1AGiClfC5hLmgb+p+RQTsyergf6MLrW/tiZw1gSXqqoYfbRAyTh3AT4W2h1iYRgVvSoPw2pJvvS0snF9Nv1FYGtgsnpdQ9LSIMT1d36fZPET1T7YRQwHPaZSNEEFgyFsijmYbqHnQBnGjifyaZz0cynt3FYuYZd33w1vqaKOxwJyvkGZQs9rXWwsvq08bCQYoykHubLd8hIoJRpr0iaVVzRYy9lj+Pz1k0XQjiNtNg7SIRrMDRbnnfdqHot6pnqjrbwdfYahNP71JJoxUpkSc7knYcAAg2DESLXbzaxUHEbR67QfDE7/rP8/CYzfE1j78pwG5hSZRS58N+Noqd5KIc4ENl5vmXXp2nHG4zoyRCJrV7m79NKxHa1DcZkbwe7t23vn1wCm33hnu0MO6uj/KEp2k7/ag8gh2Zz0ctY+ga4Xl+I7BufPtj/uaHHOD3QjpV/+LpJUAgo3OoImnHzfDJj93EWEh8pDmbjjOxbJTEw4lY4pQ5cjWK2Mkl32Sl/iV2hHjXoFKwCRzDyGBOLQRMSviyu+0U7NCcluDWvdm3eMNDsvMebEvzj6lc1TovHjm5lFTqi0xO5a7n9227Lyd7nd/BYOOnIqeXoA+3Oh+LyWXtOuGOorhp4vCjJUDwB9ivh2mZkqB5jwLvH3oeXHQEssMY1xnrd8ianV9kB9J5yHrqtoDO6RFO6VO3cVn25QDPDUabLKnYL4o6k+TQLCWQb5qH9EHzllt1k5L8CSyaNx5pVm37BUsKcMo7fDFd fjVXYGST vFYbn4OCqJ3bZqfO6cxqhg3b4xQYIFMau0f66u29NQ3P9hBee79fSVg0SaTBs7HKXdXr2MznL2yjYJ9qvN/hFJYSJkoGZUWDsoBGNwNzXrGwJkRmwLgx71Rvgrd6Lj0H5igWStDeNHyzZqII= 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, Apr 05, 2024 at 05:35:07AM +0000, Yosry Ahmed wrote: > Currently, we calculate the zswap global limit, and potentially the > acceptance threshold in the zswap, in pages in the zswap store path. > This is unnecessary because the values rarely change. > > Instead, precalculate the them when the module parameters are updated, > which should be rare. Since we are adding custom handlers for setting > the percentages now, add proper validation that they are <= 100. > > Suggested-by: Johannes Weiner > Signed-off-by: Yosry Ahmed Nice! Getting that stuff out of the hotpath! Two comments below: > @@ -684,6 +703,43 @@ static int zswap_enabled_param_set(const char *val, > return ret; > } > > +static int __zswap_percent_param_set(const char *val, > + const struct kernel_param *kp) > +{ > + unsigned int n; > + int ret; > + > + ret = kstrtouint(val, 10, &n); > + if (ret || n > 100) > + return -EINVAL; > + > + return param_set_uint(val, kp); > +} > + > +static int zswap_max_pool_param_set(const char *val, > + const struct kernel_param *kp) > +{ > + int err = __zswap_percent_param_set(val, kp); > + > + if (!err) { > + zswap_update_max_pages(); > + zswap_update_accept_thr_pages(); > + } > + > + return err; > +} > + > +static int zswap_accept_thr_param_set(const char *val, > + const struct kernel_param *kp) > +{ > + int err = __zswap_percent_param_set(val, kp); > + > + if (!err) > + zswap_update_accept_thr_pages(); > + > + return err; > +} I think you can keep this simple and just always update both if anything changes for whatever reason. It's an extremely rare event after all. That should cut it from 3 functions to 1. Note that totalram_pages can also change during memory onlining and offlining. For that you need a memory notifier that also calls that refresh function. It's simple enough, though, check out the code around register_memory_notifier() in drivers/xen/balloon.c.