From patchwork Thu Mar 24 10:43:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: CGEL X-Patchwork-Id: 12790590 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 62FE7C433EF for ; Thu, 24 Mar 2022 10:45:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CB3626B0074; Thu, 24 Mar 2022 06:45:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C62046B0075; Thu, 24 Mar 2022 06:45:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ADC576B0078; Thu, 24 Mar 2022 06:45:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0218.hostedemail.com [216.40.44.218]) by kanga.kvack.org (Postfix) with ESMTP id 9BC366B0074 for ; Thu, 24 Mar 2022 06:45:31 -0400 (EDT) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 44E5F18294F9A for ; Thu, 24 Mar 2022 10:45:31 +0000 (UTC) X-FDA: 79278948462.21.AA6F17F Received: from mail-qv1-f54.google.com (mail-qv1-f54.google.com [209.85.219.54]) by imf13.hostedemail.com (Postfix) with ESMTP id B8ADD20020 for ; Thu, 24 Mar 2022 10:45:30 +0000 (UTC) Received: by mail-qv1-f54.google.com with SMTP id ke15so3355832qvb.11 for ; Thu, 24 Mar 2022 03:45:30 -0700 (PDT) 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=G8zhnrV08p17+f/+gNNScolaBaJcAcXfoOQXYyrrgDE=; b=Mm+O9C0xL0T+nNzNpEaD+PhIpQNXz5grexWao4VJhBqHPCGilN4AfkVRmcNRLJvDdI 9cBFVqjXbu1R/AusGiRFtru5gW45YTSe6m8YdA8TPYsMdQ+Xs7PnfrS88McW8VD5Elyq QZfu/V3dGH1NBFWDtC2WBVpCu2/1Vc3aX4ikXxPjaEHu0okbc3GsuXBclZTELz1VfUqY +Ao8t0ipDti1gUauyJE/C9xSEPAz+GfvmnAQch3L4Knhtw3tsD64j6nLpCohWdbxq3XC jBnJuT2gaZPhEyyx12A+RPtG81cFmXQxYiM/5yjKKaRjgTwCVXP/KmyPdw0pGeUrOP1i 7Wzw== 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=G8zhnrV08p17+f/+gNNScolaBaJcAcXfoOQXYyrrgDE=; b=IzyQSIlZiOi9oudC2uFPDvQJ5l2j5agVWMlmPQ415Z4dunLBncE1CeYOaIr6P9jOxa eobD8LOkgG3DWBu2yOL/fP5V4BVZv3Mgja0Eky7NN86dEBegK2WX8P0yTYFP8+i9xri1 m4hv6634OKLz/4rPWyxShUIgGk2Zd7gDzTvUqk/XFnbRtS9Gzg0vF6KXhcfnac1EXSiD M+VNZxyzErzIUrE3yl8sXWe2S8PpjvABDuM+tlA7pAACgKskPsDnaa5PUhppqg/0g4UN irKKnVkEkcyj0HSMjou5kOj44SGRqK5ie6iiLc6GlV0xCr/1Qw9oPauFP+VydFO1iNfE ue8w== X-Gm-Message-State: AOAM530KEuJVPcSCDH5z1SJBIGFSjgQP0dIunaLwFzAf/RgObaI3iXGJ saOAf3JLPe/NPOf++PtwrhM= X-Google-Smtp-Source: ABdhPJzaz6EJmZsgf1YNGCQp9DRhfTbLRVTapwTUq/OhC/AFGKr3c5tLAktQaeGMArKkjlo1RgQnTw== X-Received: by 2002:a05:6214:268a:b0:440:ce23:7ee1 with SMTP id gm10-20020a056214268a00b00440ce237ee1mr3724244qvb.112.1648118730061; Thu, 24 Mar 2022 03:45:30 -0700 (PDT) Received: from localhost.localdomain ([193.203.214.57]) by smtp.gmail.com with ESMTPSA id f18-20020a05622a105200b002e1eb06ece3sm2102330qte.31.2022.03.24.03.45.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Mar 2022 03:45:29 -0700 (PDT) From: cgel.zte@gmail.com X-Google-Original-From: yang.yang29@zte.com.cn To: akpm@linux-foundation.org, david@redhat.com Cc: yang.yang29@zte.com.cn, ran.xiaokai@zte.com.cn, yang.shi@linux.alibaba.com, dave.hansen@linux.intel.com, minchan@kernel.org, saravanand@fb.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, xu xin Subject: [PATCH v3] mm/vmstat: add events for ksm cow Date: Thu, 24 Mar 2022 10:43:33 +0000 Message-Id: <20220324104332.2350482-1-yang.yang29@zte.com.cn> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Stat-Signature: cx7z3zkg9ft3qihwifrxnx45j3ggmzpa Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Mm+O9C0x; spf=pass (imf13.hostedemail.com: domain of cgel.zte@gmail.com designates 209.85.219.54 as permitted sender) smtp.mailfrom=cgel.zte@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: B8ADD20020 X-HE-Tag: 1648118730-618083 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 Users may use ksm by calling madvise(, , MADV_MERGEABLE) when they want to save memory, it's a tradeoff by suffering delay on ksm cow. Users can get to know how much memory ksm saved by reading /sys/kernel/mm/ksm/pages_sharing, but they don't know what's the costs of ksm cow, and this is important of some delay sensitive tasks. So add ksm cow events to help users evaluate whether or how to use ksm. Signed-off-by: Yang Yang Reviewed-by: David Hildenbrand Reviewed-by: xu xin Reviewed-by: Ran Xiaokai --- v2: - fix compile error when CONFIG_KSM is not set v3: - delete KSM_COW_FAIL event --- include/linux/vm_event_item.h | 1 + mm/memory.c | 4 ++++ mm/vmstat.c | 1 + 3 files changed, 6 insertions(+) diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h index 16a0a4fd000b..d817ba541851 100644 --- a/include/linux/vm_event_item.h +++ b/include/linux/vm_event_item.h @@ -131,6 +131,7 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, SWAP_RA_HIT, #ifdef CONFIG_KSM KSM_SWPIN_COPY, + COW_KSM, #endif #endif #ifdef CONFIG_X86 diff --git a/mm/memory.c b/mm/memory.c index 4111f97c91a0..12925ceaf745 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3339,6 +3339,10 @@ static vm_fault_t do_wp_page(struct vm_fault *vmf) get_page(vmf->page); pte_unmap_unlock(vmf->pte, vmf->ptl); +#ifdef CONFIG_KSM + if (PageKsm(vmf->page)) + count_vm_event(COW_KSM); +#endif return wp_page_copy(vmf); } diff --git a/mm/vmstat.c b/mm/vmstat.c index d5cc8d739fac..710d71af2285 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -1390,6 +1390,7 @@ const char * const vmstat_text[] = { "swap_ra_hit", #ifdef CONFIG_KSM "ksm_swpin_copy", + "cow_ksm", #endif #endif #ifdef CONFIG_X86