From patchwork Thu Jan 13 02:38:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CGEL X-Patchwork-Id: 12712167 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 B834DC433F5 for ; Thu, 13 Jan 2022 02:39:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 07DFE6B0072; Wed, 12 Jan 2022 21:39:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 02DC56B0073; Wed, 12 Jan 2022 21:39:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E36F86B0074; Wed, 12 Jan 2022 21:39:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0240.hostedemail.com [216.40.44.240]) by kanga.kvack.org (Postfix) with ESMTP id D41CF6B0072 for ; Wed, 12 Jan 2022 21:39:21 -0500 (EST) Received: from smtpin31.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 7DEA59528E for ; Thu, 13 Jan 2022 02:39:21 +0000 (UTC) X-FDA: 79023707322.31.9C0AED4 Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) by imf14.hostedemail.com (Postfix) with ESMTP id 0F141100004 for ; Thu, 13 Jan 2022 02:39:20 +0000 (UTC) Received: by mail-qv1-f45.google.com with SMTP id q4so5185745qvh.9 for ; Wed, 12 Jan 2022 18:39:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=lqQJYTBMH8B+bnFx1VA3RJyA//jI2a1rkVu0LgwSkjk=; b=hIsGUzSYfWNfEXCNlEJXcw6YjqgD0bx3I4IR6WezFYBf2X3fXortLDD2U/JQbeoW7f pwOiJV/MiVLV33INNOhlkWKKZZXE8TEUSnZM0trp2QH37OrISpifxFeQZLlavpMtN5wo 1iupVVIZKzo5Xca+tzTCibSZNy/FuN4HwHdvX6ckUgyGwkp19sVGf1lYqqhNyw1VxZfm DCmSackQ/R7Em8euzwVYdeaxgL3je/Qucf7hfODNYzLM+CKwExNvt4xvASOza1WVfAf0 f+ZF6y1pb7uZKBVltVnl39HSAUOv3i7IQVgOG4xSomfGgae+UvI0rEsa92gQ+oTmVqfe /P9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=lqQJYTBMH8B+bnFx1VA3RJyA//jI2a1rkVu0LgwSkjk=; b=ME0k3igDR0F4zom29xv2dq4jwSVXhauQTBDL23OGVOHcPRW04OaAEXAITrFJP+kwuk CqPgNbtidbxxMm5IQjA978TQzlWGTV/Fu47CuInAJUD8w+Sn3yQik9Iap8qN5gdOPoF/ rLLasBdR+6C8IuxESRmfX+GsgiB/9W92JlyhHdXLvtTwOUtERpnBDdMiHrQAXyESL4Oz oW2nlQv6IODdvFfGdxxeYTNGJRp56mIbnYsgJopa3zMqDnPwWqzSdQ/puajpt+QTX52i /5AaC4dRlw8xs9fKwcCpBQNLDpdBCQ13vtXSU4X2p0tHBhJ5rnG6hV8Azj51ucHM1k8O hCdg== X-Gm-Message-State: AOAM531AJ8Q3nGvJf/Ig5HDkJdN/vhuQAIXFmhjzLWhrYAK6b2OPh9Ab VBfP57yUBEsv0c4tZnUjZnE= X-Google-Smtp-Source: ABdhPJwnteAz+SPrNj6aAHpP32YYEOHGwrk67ByNbeZw1HmQAR/CwtX1Mvkidt4Sn/vIQ/j5PcwqNA== X-Received: by 2002:a05:6214:4009:: with SMTP id kd9mr2403842qvb.3.1642041560431; Wed, 12 Jan 2022 18:39:20 -0800 (PST) Received: from localhost.localdomain ([193.203.214.57]) by smtp.gmail.com with ESMTPSA id v10sm1065991qkp.105.2022.01.12.18.39.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jan 2022 18:39:18 -0800 (PST) From: cgel.zte@gmail.com X-Google-Original-From: yang.yang29@zte.com.cn To: akpm@linux-foundation.org, yang.shi@linux.alibaba.com, ying.huang@intel.com Cc: yang.yang29@zte.com.cn, dave.hansen@linux.intel.com, minchan@kernel.org, saravanand@fb.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Ran Xiaokai Subject: [PATCH v2] mm/vmstat: add event for ksm swapping in copy Date: Thu, 13 Jan 2022 02:38:40 +0000 Message-Id: <20220113023839.758845-1-yang.yang29@zte.com.cn> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 0F141100004 X-Stat-Signature: g13b9o9tk548mnki49gz4eje4ddd3pj7 Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=hIsGUzSY; spf=pass (imf14.hostedemail.com: domain of cgel.zte@gmail.com designates 209.85.219.45 as permitted sender) smtp.mailfrom=cgel.zte@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1642041560-910038 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: From: Yang Yang When faults in from swap what used to be a KSM page and that page had been swapped in before, system has to make a copy, and leaves remerging the pages to a later pass of ksmd. That is not good for performace, we'd better to reduce this kind of copy. There are some ways to reduce it, for example lessen swappiness or madvise(, , MADV_MERGEABLE) range. So add this event to support doing this tuning. Just like this patch: "mm, THP, swap: add THP swapping out fallback counting". Signed-off-by: Yang Yang Reviewed-by: Ran Xiaokai --- v2: - fix compile error when CONFIG_SWAP is not set --- include/linux/vm_event_item.h | 3 +++ mm/ksm.c | 3 +++ mm/vmstat.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h index 7b2363388bfa..16a0a4fd000b 100644 --- a/include/linux/vm_event_item.h +++ b/include/linux/vm_event_item.h @@ -129,6 +129,9 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, #ifdef CONFIG_SWAP SWAP_RA, SWAP_RA_HIT, +#ifdef CONFIG_KSM + KSM_SWPIN_COPY, +#endif #endif #ifdef CONFIG_X86 DIRECT_MAP_LEVEL2_SPLIT, diff --git a/mm/ksm.c b/mm/ksm.c index c20bd4d9a0d9..4a7f8614e57d 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2595,6 +2595,9 @@ struct page *ksm_might_need_to_copy(struct page *page, SetPageDirty(new_page); __SetPageUptodate(new_page); __SetPageLocked(new_page); +#ifdef CONFIG_SWAP + count_vm_event(KSM_SWPIN_COPY); +#endif } return new_page; diff --git a/mm/vmstat.c b/mm/vmstat.c index 4057372745d0..d2b9f27eb1c4 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -1385,6 +1385,9 @@ const char * const vmstat_text[] = { #ifdef CONFIG_SWAP "swap_ra", "swap_ra_hit", +#ifdef CONFIG_KSM + "ksm_swpin_copy", +#endif #endif #ifdef CONFIG_X86 "direct_map_level2_splits",