From patchwork Tue Oct 24 00:07:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nhat Pham X-Patchwork-Id: 13433738 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 F3D86C25B67 for ; Tue, 24 Oct 2023 00:07:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 189B36B0163; Mon, 23 Oct 2023 20:07:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 13AC36B0164; Mon, 23 Oct 2023 20:07:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F1CEF6B0165; Mon, 23 Oct 2023 20:07:06 -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 DDD0B6B0163 for ; Mon, 23 Oct 2023 20:07:06 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B120EC04F1 for ; Tue, 24 Oct 2023 00:07:06 +0000 (UTC) X-FDA: 81378414852.05.AF80D8B Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) by imf22.hostedemail.com (Postfix) with ESMTP id EF9A3C0029 for ; Tue, 24 Oct 2023 00:07:04 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UIXMoZ+9; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.214.171 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1698106025; 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:references:dkim-signature; bh=FVGJ5sudlybAUoU4/L69TVsLsQEiCat6/Z6vYWRvA+k=; b=1cxK1LNrML1ZXtPPfESkxrefMu39KBfVFnOUWVMH8V8FgIuNBh0h2WHm810vyV04mWgI5G vLUOKKMIt/ZWiSkKOUI2y8AVy8AKHSTUqwqbZsueuu1jrPJX6LLzPaDSnz3zyx1mufGXvE gtsJKtqspoJLat3J0gZrTGhbaAs/w84= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UIXMoZ+9; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.214.171 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1698106025; a=rsa-sha256; cv=none; b=DHvVM4OzkRXvoRzIIE9Ox9pUyxhYTaVNo5WGXnfJ1B2ICPWodkS1VQJcMrS6dVjgR8cLWv D3erO27sZ//jYMGzxp9hJyQInLXly1G+Yx13vuHwHwWjFmFamUUuo23mytjxEYvAVou3w5 dZl07ftp3kEyJracmDkVJpdIYth2aNU= Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-1c434c33ec0so24354245ad.3 for ; Mon, 23 Oct 2023 17:07:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698106024; x=1698710824; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=FVGJ5sudlybAUoU4/L69TVsLsQEiCat6/Z6vYWRvA+k=; b=UIXMoZ+9yrOPxlVRbjWdXlgMUrKxnEv6oV7ddl7MSEQ9rsjJVc6B3M5GeN8YjV96V/ p6f3AYSHt1hb/jbIXjuqrEXu4tx6d/dtpNrPfEnGuEc5f+GohAzYPozJefOUPMipEiAU uXlxNgQHQS/454u3qQWwRR2LXyK5HMbPn05Jc0V2hMdfICvZ0sk+9Y6ATEH/P5/nYl18 HwIo+JGyPtzKD4P/xFtLWaqgUoDUXao5T5I1ngTonD8XHH3zS0YakEruO76GD36OFuiZ mKZiqrhGanVND+XRSEBeiacS6d1r0ZTpDlMfpYLApa5jJnm4K2moznTsLzgONq6Kv5s2 o8qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698106024; x=1698710824; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=FVGJ5sudlybAUoU4/L69TVsLsQEiCat6/Z6vYWRvA+k=; b=u8PBbQGCspxDczF8uyiLIj5JUsJpBlOjmnZ/OdAuguRRl+jRbPAah+V3x26F4A56Ti JyFrQ6OYfYlKbb00iymvJGyj2S0hkJwiHxLYgAZrEfXUGxxT+TnLJG8W9KDlj99Ugtgj qbvFhmhejeMd4YHmo2CSQD6FtsIi4wGKV/P2QcTJa8nko3S47+zsuXKcQYZfEQilkUWk IPxw376Q4dJnv4LXkApKdn1nY/we/Xk8heEP5DbcbsJi7Bn0VSYd5uzNDAVBnzqSnyxm HS0niFmhDq4QGpJ8k3cMqGuvvRe/r7e92Y7ygGDs/iBkLJi7kTc0hYzbymQLjLhkDUBK rCYQ== X-Gm-Message-State: AOJu0YxuWQlpSUCb4OlPGaUV/8eTR1o8KTSpSBc1Wq3knSrPaZaWrpKM Zh+vaicKhhjyepD3vglk2b8= X-Google-Smtp-Source: AGHT+IE7EC9NzWgKAl37wbTsKByqXoQg4bH181CdHJEGVy0sZwB5krK0Q6/inRU8TgnzAMx4IqTjzQ== X-Received: by 2002:a17:902:ea09:b0:1c8:9d32:339e with SMTP id s9-20020a170902ea0900b001c89d32339emr8958779plg.50.1698106023659; Mon, 23 Oct 2023 17:07:03 -0700 (PDT) Received: from localhost (fwdproxy-prn-008.fbsv.net. [2a03:2880:ff:8::face:b00c]) by smtp.gmail.com with ESMTPSA id u8-20020a170902e5c800b001bc2831e1a8sm6438314plf.80.2023.10.23.17.07.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 17:07:03 -0700 (PDT) From: Nhat Pham To: akpm@linux-foundation.org Cc: hannes@cmpxchg.org, cerasuolodomenico@gmail.com, yosryahmed@google.com, sjenning@redhat.com, ddstreet@ieee.org, vitaly.wool@konsulko.com, mhocko@kernel.org, roman.gushchin@linux.dev, shakeelb@google.com, muchun.song@linux.dev, linux-mm@kvack.org, kernel-team@meta.com, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org Subject: [PATCH] zswap: export more zswap store failure stats Date: Mon, 23 Oct 2023 17:07:02 -0700 Message-Id: <20231024000702.1387130-1-nphamcs@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: uajtnxr19c1jd4kkmmg4w1ctd46tm93d X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: EF9A3C0029 X-HE-Tag: 1698106024-125641 X-HE-Meta: U2FsdGVkX18579p4UTPC/8Hrksk4c7QzSFCb4EZhIoktdaRktDyTJM7nDG3EEVTz5usr/DWJQYTIKVmvCllKo76IH7FenHigCyYjGxjZXr9VagFhZ0S8fHmWiTbPOiCF2LObza2S3fl5SSIQ2q0t2sNuBA3ITa1RcCx+rOYQutIYwfv02shs/g+FegH9KZjg46bsGySUnta3WL+kjlVFK5l97q7BwWl5OkwjTD39kFRnteAKzd2vsHXNlwRer4SucrjGFi4m4TyDaHmClSvhyMmqNXEgzKrVZsHu56FptXlGG7SDFD8iQfYm5Zr5N8zkk4OwM9g6YgeK/2kM/b3AFOPuxAQKHBjprQLE8+BBVOoo46yd7tlMZnHrhl+tP9ZYgF8SO6tcHTsKmFcBhCgqlXi4+lW3uQMun6BaIj8cLjuVKBjkeRX7AKtYfgBVwpnop2FV4i09TgXF3qlAjSLWVK9wHbLiYOleBX/N1zQqQPpIiZRopVOWIr8NYHOZJr+j1W/QKrJ4HJfvfQ5Z4lrstDsd+nSRbtdihQIXvNKpuoNANXFfoGC9kWKAsWIIN01fCUwTERMH9GGK0XQux3ysP6hby/QqZ7/JwhqIY4dHNeve1g9do8l6kBqoJxkLOeiVi+7M4jODBp2tdph9Gyl3jgpmSlnysEJXym7zu7jZTv/SQjU69l2VPq3OJx+IJSlOlziiNqLcBNbdE8eEvTiL04VZzNzMoicz/8durC92LWJTbUOy0VT75js0cAVgA7m8Lw/CKdTf5OydVP1Ub8YOqsi/RhlIXgOz7KvJDKy4qQud3up4Hxb30S4rQnB6zsQxSswYtTtRUFihtCWZisnTzh2nPKpRPg4J9lQskKwSgzydprk8nY+xWloPRK2LJWow510d8QHM82hClru1jdv5RORaLUvvpPcv4md3n+1TRktppNalZI8naMAi+uGj2CvpB4xGgqfSttnRLxAXOYS +q2Jfx0X ttknAd+0wNdiwQelr1EGho13aAUa27bMKxSzakU0qQvq1LxCDwE7XSxNjNtcEYVlPqpIQr1tBV/2vHexnl3HX4yDiJrf7JU2sjXj8EhxcQxGyz7Qj3L2KOs19pf72VSijSA2fIVd23WVh227DZLR4gwjAA0MGKRneU8lzm02XFN5WuXiiGWJGdu58uFjAGRFY1tyxprCUPxdEfZJNs2hnHMQAix51BdmPLO7+Sl1hCwAwlLnLz6lxE+E0tTCNd6/av2AqWgV1PiAGwjDxYWm8VMjpo/0ZlkqYr3/pIa2/nI/PX2sBc5ljROh3MMYuPjWH6CnIzvowgSr2DSLMJvJlVUhh3/y2Re2ZSN5KMI47rHsRm/lzSS98k8yv1sWmDJPLazhxRJXMm3XrRn088SSy7XrjU6s6v3383X39TjdlgtLZ/dM= 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: Since: "42c06a0e8ebe mm: kill frontswap" we no longer have a counter to tracks the number of zswap store failures. This makes it hard to investigate and monitor for zswap issues. This patch adds a global and a per-cgroup zswap store failure counter, as well as a dedicated debugfs counter for compression algorithm failure (which can happen for e.g when random data are passed to zswap). Signed-off-by: Nhat Pham --- include/linux/vm_event_item.h | 1 + mm/memcontrol.c | 1 + mm/vmstat.c | 1 + mm/zswap.c | 18 ++++++++++++++---- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h index 8abfa1240040..7b2b117b193d 100644 --- a/include/linux/vm_event_item.h +++ b/include/linux/vm_event_item.h @@ -145,6 +145,7 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, #ifdef CONFIG_ZSWAP ZSWPIN, ZSWPOUT, + ZSWPOUT_FAIL, #endif #ifdef CONFIG_X86 DIRECT_MAP_LEVEL2_SPLIT, diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 61c0c46c2d62..0e247e72a379 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -593,6 +593,7 @@ static const unsigned int memcg_vm_event_stat[] = { #if defined(CONFIG_MEMCG_KMEM) && defined(CONFIG_ZSWAP) ZSWPIN, ZSWPOUT, + ZSWPOUT_FAIL, #endif #ifdef CONFIG_TRANSPARENT_HUGEPAGE THP_FAULT_ALLOC, diff --git a/mm/vmstat.c b/mm/vmstat.c index 359460deb377..85cc79449355 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -1401,6 +1401,7 @@ const char * const vmstat_text[] = { #ifdef CONFIG_ZSWAP "zswpin", "zswpout", + "zswpout_fail", #endif #ifdef CONFIG_X86 "direct_map_level2_splits", diff --git a/mm/zswap.c b/mm/zswap.c index 37d2b1cb2ecb..38e6620f8b58 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -61,6 +61,8 @@ static u64 zswap_pool_limit_hit; static u64 zswap_written_back_pages; /* Store failed due to a reclaim failure after pool limit was reached */ static u64 zswap_reject_reclaim_fail; +/* Store failed due to compression algorithm failure */ +static u64 zswap_reject_compress_fail; /* Compressed page was too big for the allocator to (optimally) store */ static u64 zswap_reject_compress_poor; /* Store failed because underlying allocator could not get memory */ @@ -1213,10 +1215,10 @@ bool zswap_store(struct folio *folio) /* Large folios aren't supported */ if (folio_test_large(folio)) - return false; + goto out_reject; if (!zswap_enabled || !tree) - return false; + goto out_reject; /* * If this is a duplicate, it must be removed before attempting to store @@ -1309,8 +1311,10 @@ bool zswap_store(struct folio *folio) ret = crypto_wait_req(crypto_acomp_compress(acomp_ctx->req), &acomp_ctx->wait); dlen = acomp_ctx->req->dlen; - if (ret) + if (ret) { + zswap_reject_compress_fail++; goto put_dstmem; + } /* store */ zpool = zswap_find_zpool(entry); @@ -1377,8 +1381,12 @@ bool zswap_store(struct folio *folio) freepage: zswap_entry_cache_free(entry); reject: - if (objcg) + if (objcg) { + count_objcg_event(objcg, ZSWPOUT_FAIL); obj_cgroup_put(objcg); + } +out_reject: + count_vm_event(ZSWPOUT_FAIL); return false; shrink: @@ -1550,6 +1558,8 @@ static int zswap_debugfs_init(void) zswap_debugfs_root, &zswap_reject_alloc_fail); debugfs_create_u64("reject_kmemcache_fail", 0444, zswap_debugfs_root, &zswap_reject_kmemcache_fail); + debugfs_create_u64("reject_compress_fail", 0444, + zswap_debugfs_root, &zswap_reject_compress_fail); debugfs_create_u64("reject_compress_poor", 0444, zswap_debugfs_root, &zswap_reject_compress_poor); debugfs_create_u64("written_back_pages", 0444,