From: Kajol Jain <kjain@linux.ibm.com> To: mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, nvdimm@lists.linux.dev, linux-kernel@vger.kernel.org, peterz@infradead.org Cc: maddy@linux.vnet.ibm.com, santosh@fossix.org, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, dan.j.williams@intel.com, ira.weiny@intel.com, atrajeev@linux.vnet.ibm.com, tglx@linutronix.de, kjain@linux.ibm.com, rnsastry@linux.ibm.com Subject: [PATCH 0/4] Add perf interface to expose nvdimm Date: Tue, 8 Jun 2021 17:26:56 +0530 [thread overview] Message-ID: <20210608115700.85933-1-kjain@linux.ibm.com> (raw) Patchset adds performance stats reporting support for nvdimm. Added interface includes support for pmu register/unregister functions. A structure is added called nvdimm_pmu to be used for adding arch/platform specific data such as supported events, cpumask pmu event functions like event_init/add/read/del. User could use the standard perf tool to access perf events exposed via pmu. Added implementation to expose IBM pseries platform nmem* device performance stats using this interface. Result from power9 pseries lpar with 2 nvdimm device: command:# perf list nmem nmem0/cchrhcnt/ [Kernel PMU event] nmem0/cchwhcnt/ [Kernel PMU event] nmem0/critrscu/ [Kernel PMU event] nmem0/ctlresct/ [Kernel PMU event] nmem0/ctlrestm/ [Kernel PMU event] nmem0/fastwcnt/ [Kernel PMU event] nmem0/hostlcnt/ [Kernel PMU event] nmem0/hostldur/ [Kernel PMU event] nmem0/hostscnt/ [Kernel PMU event] nmem0/hostsdur/ [Kernel PMU event] nmem0/medrcnt/ [Kernel PMU event] nmem0/medrdur/ [Kernel PMU event] nmem0/medwcnt/ [Kernel PMU event] nmem0/medwdur/ [Kernel PMU event] nmem0/memlife/ [Kernel PMU event] nmem0/noopstat/ [Kernel PMU event] nmem0/ponsecs/ [Kernel PMU event] nmem1/cchrhcnt/ [Kernel PMU event] nmem1/cchwhcnt/ [Kernel PMU event] nmem1/critrscu/ [Kernel PMU event] ... nmem1/noopstat/ [Kernel PMU event] nmem1/ponsecs/ [Kernel PMU event] Patch1: Introduces the nvdimm_pmu structure Patch2: Adds common interface to add arch/platform specific data includes supported events, pmu event functions. It also adds code for cpu hotplug support. Patch3: Add code in arch/powerpc/platform/pseries/papr_scm.c to expose nmem* pmu. It fills in the nvdimm_pmu structure with event attrs cpumask andevent functions and then registers the pmu by adding callbacks to register_nvdimm_pmu. Patch4: Sysfs documentation patch Changelog --- RFC v3 -> PATCH - Link to the RFC v3 patchset : https://lkml.org/lkml/2021/5/29/28 - Remove RFC tag. - Add nvdimm_pmu_cpu_online function. - A new variable 'arch_cpumask' is added to the struct nvdimm_pmu which can be used to provide cpumask by the arch specific code. It will used incase cpu hotplug is not handled by arch code. Now common interface first check for any active cpu in arch_cpumask to designate cpu to collect counter data and incase we dont have any active cpu in that mask, it will look into cpumask of the device numa node. -Add code in papr_scm to fill arch_cpumask variable with required cpumask. - Some optimizations/fixes from previous RFC code v2 -> v3 - Link to the RFC v2 patchset : https://lkml.org/lkml/2021/5/25/591 - Moved hotplug code changes from papr_scm code to generic interface with required functionality as suggested by Peter Zijlstra - Changed function parameter of unregister_nvdimm_pmu function from struct pmu to struct nvdimm_pmu. - Now cpumask will get updated based on numa node of corresponding nvdimm device as suggested by Peter Zijlstra. v1 -> v2 - Link to the RFC v1 patchset : https://lkml.org/lkml/2021/5/12/2747 - Removed intermediate functions nvdimm_pmu_read/nvdimm_pmu_add/ nvdimm_pmu_del/nvdimm_pmu_event_init and directly assigned platfrom specific routines. Also add check for any NULL functions. Suggested by: Peter Zijlstra - Add macros for event attribute array index which can be used to assign dynamically allocated attr_groups. - New function 'nvdimm_pmu_mem_free' is added to free dynamic memory allocated for attr_groups in papr_scm.c - PMU register call moved from papr_scm_nvdimm_init() to papr_scm_probe() - Move addition of cpu/node/cpuhp_state attributes in struct nvdimm_pmu to patch 4 where cpu hotplug code added - Removed device attribute from the attribute list of add/del/read/event_init functions in nvdimm_pmu structure as we need to assign them directly to pmu structure. --- Kajol Jain (4): drivers/nvdimm: Add nvdimm pmu structure drivers/nvdimm: Add perf interface to expose nvdimm performance stats powerpc/papr_scm: Add perf interface support powerpc/papr_scm: Document papr_scm sysfs event format entries Documentation/ABI/testing/sysfs-bus-papr-pmem | 31 ++ arch/powerpc/include/asm/device.h | 5 + arch/powerpc/platforms/pseries/papr_scm.c | 365 ++++++++++++++++++ drivers/nvdimm/Makefile | 1 + drivers/nvdimm/nd_perf.c | 230 +++++++++++ include/linux/nd.h | 46 +++ 6 files changed, 678 insertions(+) create mode 100644 drivers/nvdimm/nd_perf.c -- 2.27.0
WARNING: multiple messages have this Message-ID (diff)
From: Kajol Jain <kjain@linux.ibm.com> To: mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org, nvdimm@lists.linux.dev, linux-kernel@vger.kernel.org, peterz@infradead.org Cc: santosh@fossix.org, maddy@linux.vnet.ibm.com, rnsastry@linux.ibm.com, aneesh.kumar@linux.ibm.com, atrajeev@linux.vnet.ibm.com, kjain@linux.ibm.com, vaibhav@linux.ibm.com, dan.j.williams@intel.com, ira.weiny@intel.com, tglx@linutronix.de Subject: [PATCH 0/4] Add perf interface to expose nvdimm Date: Tue, 8 Jun 2021 17:26:56 +0530 [thread overview] Message-ID: <20210608115700.85933-1-kjain@linux.ibm.com> (raw) Patchset adds performance stats reporting support for nvdimm. Added interface includes support for pmu register/unregister functions. A structure is added called nvdimm_pmu to be used for adding arch/platform specific data such as supported events, cpumask pmu event functions like event_init/add/read/del. User could use the standard perf tool to access perf events exposed via pmu. Added implementation to expose IBM pseries platform nmem* device performance stats using this interface. Result from power9 pseries lpar with 2 nvdimm device: command:# perf list nmem nmem0/cchrhcnt/ [Kernel PMU event] nmem0/cchwhcnt/ [Kernel PMU event] nmem0/critrscu/ [Kernel PMU event] nmem0/ctlresct/ [Kernel PMU event] nmem0/ctlrestm/ [Kernel PMU event] nmem0/fastwcnt/ [Kernel PMU event] nmem0/hostlcnt/ [Kernel PMU event] nmem0/hostldur/ [Kernel PMU event] nmem0/hostscnt/ [Kernel PMU event] nmem0/hostsdur/ [Kernel PMU event] nmem0/medrcnt/ [Kernel PMU event] nmem0/medrdur/ [Kernel PMU event] nmem0/medwcnt/ [Kernel PMU event] nmem0/medwdur/ [Kernel PMU event] nmem0/memlife/ [Kernel PMU event] nmem0/noopstat/ [Kernel PMU event] nmem0/ponsecs/ [Kernel PMU event] nmem1/cchrhcnt/ [Kernel PMU event] nmem1/cchwhcnt/ [Kernel PMU event] nmem1/critrscu/ [Kernel PMU event] ... nmem1/noopstat/ [Kernel PMU event] nmem1/ponsecs/ [Kernel PMU event] Patch1: Introduces the nvdimm_pmu structure Patch2: Adds common interface to add arch/platform specific data includes supported events, pmu event functions. It also adds code for cpu hotplug support. Patch3: Add code in arch/powerpc/platform/pseries/papr_scm.c to expose nmem* pmu. It fills in the nvdimm_pmu structure with event attrs cpumask andevent functions and then registers the pmu by adding callbacks to register_nvdimm_pmu. Patch4: Sysfs documentation patch Changelog --- RFC v3 -> PATCH - Link to the RFC v3 patchset : https://lkml.org/lkml/2021/5/29/28 - Remove RFC tag. - Add nvdimm_pmu_cpu_online function. - A new variable 'arch_cpumask' is added to the struct nvdimm_pmu which can be used to provide cpumask by the arch specific code. It will used incase cpu hotplug is not handled by arch code. Now common interface first check for any active cpu in arch_cpumask to designate cpu to collect counter data and incase we dont have any active cpu in that mask, it will look into cpumask of the device numa node. -Add code in papr_scm to fill arch_cpumask variable with required cpumask. - Some optimizations/fixes from previous RFC code v2 -> v3 - Link to the RFC v2 patchset : https://lkml.org/lkml/2021/5/25/591 - Moved hotplug code changes from papr_scm code to generic interface with required functionality as suggested by Peter Zijlstra - Changed function parameter of unregister_nvdimm_pmu function from struct pmu to struct nvdimm_pmu. - Now cpumask will get updated based on numa node of corresponding nvdimm device as suggested by Peter Zijlstra. v1 -> v2 - Link to the RFC v1 patchset : https://lkml.org/lkml/2021/5/12/2747 - Removed intermediate functions nvdimm_pmu_read/nvdimm_pmu_add/ nvdimm_pmu_del/nvdimm_pmu_event_init and directly assigned platfrom specific routines. Also add check for any NULL functions. Suggested by: Peter Zijlstra - Add macros for event attribute array index which can be used to assign dynamically allocated attr_groups. - New function 'nvdimm_pmu_mem_free' is added to free dynamic memory allocated for attr_groups in papr_scm.c - PMU register call moved from papr_scm_nvdimm_init() to papr_scm_probe() - Move addition of cpu/node/cpuhp_state attributes in struct nvdimm_pmu to patch 4 where cpu hotplug code added - Removed device attribute from the attribute list of add/del/read/event_init functions in nvdimm_pmu structure as we need to assign them directly to pmu structure. --- Kajol Jain (4): drivers/nvdimm: Add nvdimm pmu structure drivers/nvdimm: Add perf interface to expose nvdimm performance stats powerpc/papr_scm: Add perf interface support powerpc/papr_scm: Document papr_scm sysfs event format entries Documentation/ABI/testing/sysfs-bus-papr-pmem | 31 ++ arch/powerpc/include/asm/device.h | 5 + arch/powerpc/platforms/pseries/papr_scm.c | 365 ++++++++++++++++++ drivers/nvdimm/Makefile | 1 + drivers/nvdimm/nd_perf.c | 230 +++++++++++ include/linux/nd.h | 46 +++ 6 files changed, 678 insertions(+) create mode 100644 drivers/nvdimm/nd_perf.c -- 2.27.0
next reply other threads:[~2021-06-08 11:58 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-08 11:56 Kajol Jain [this message] 2021-06-08 11:56 ` [PATCH 0/4] Add perf interface to expose nvdimm Kajol Jain 2021-06-08 11:56 ` [PATCH 1/4] drivers/nvdimm: Add nvdimm pmu structure Kajol Jain 2021-06-08 11:56 ` Kajol Jain 2021-06-08 11:56 ` [PATCH 2/4] drivers/nvdimm: Add perf interface to expose nvdimm performance stats Kajol Jain 2021-06-08 11:56 ` Kajol Jain 2021-06-08 17:36 ` Peter Zijlstra 2021-06-08 17:36 ` Peter Zijlstra 2021-06-09 12:12 ` kajoljain 2021-06-09 12:12 ` kajoljain 2021-06-08 11:56 ` [PATCH 3/4] powerpc/papr_scm: Add perf interface support Kajol Jain 2021-06-08 11:56 ` Kajol Jain 2021-06-08 11:57 ` [PATCH 4/4] powerpc/papr_scm: Document papr_scm sysfs event format entries Kajol Jain 2021-06-08 11:57 ` Kajol Jain
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210608115700.85933-1-kjain@linux.ibm.com \ --to=kjain@linux.ibm.com \ --cc=aneesh.kumar@linux.ibm.com \ --cc=atrajeev@linux.vnet.ibm.com \ --cc=dan.j.williams@intel.com \ --cc=ira.weiny@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=maddy@linux.vnet.ibm.com \ --cc=mpe@ellerman.id.au \ --cc=nvdimm@lists.linux.dev \ --cc=peterz@infradead.org \ --cc=rnsastry@linux.ibm.com \ --cc=santosh@fossix.org \ --cc=tglx@linutronix.de \ --cc=vaibhav@linux.ibm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.