Linux CXL
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Dave Jiang <dave.jiang@intel.com>
Cc: <linux-cxl@vger.kernel.org>, <dan.j.williams@intel.com>,
	<ira.weiny@intel.com>, <vishal.l.verma@intel.com>,
	<alison.schofield@intel.com>, <dave@stgolabs.net>,
	<brice.goglin@gmail.com>, <nifan.cxl@gmail.com>
Subject: Re: [PATCH v2 2/3] cxl/region: Add sysfs attribute for locality attributes of CXL regions
Date: Tue, 19 Dec 2023 14:58:07 +0000	[thread overview]
Message-ID: <20231219145807.000016a8@Huawei.com> (raw)
In-Reply-To: <170268216573.1381493.1848451783927736490.stgit@djiang5-mobl3>

On Fri, 15 Dec 2023 16:16:05 -0700
Dave Jiang <dave.jiang@intel.com> wrote:

> Add read/write latencies and bandwidth sysfs attributes for the enabled CXL
> region. The bandwidth is the aggregated bandwidth of all devices that
> contribute to the CXL region. The latency is the worst latency of the
> device amongst all the devices that contribute to the CXL region.
> 
> Signed-off-by: Dave Jiang <dave.jiang@intel.com>
A few comments inline.

Jonathan

> ---
> v2:
> - Add units for documentation (Brice, Dan)
> - Add explanation initiator/target relation. (Brice)
> - Fix issue in commit log (Fan)
> ---
>  Documentation/ABI/testing/sysfs-bus-cxl |   56 +++++++++++++++++++++++++++++++
>  drivers/cxl/core/region.c               |   24 +++++++++++++
>  2 files changed, 80 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-bus-cxl b/Documentation/ABI/testing/sysfs-bus-cxl
> index fff2581b8033..e859f466a6b5 100644
> --- a/Documentation/ABI/testing/sysfs-bus-cxl
> +++ b/Documentation/ABI/testing/sysfs-bus-cxl
> @@ -552,3 +552,59 @@ Description:
>  		attribute is only visible for devices supporting the
>  		capability. The retrieved errors are logged as kernel
>  		events when cxl_poison event tracing is enabled.
> +
> +
> +What:		/sys/bus/cxl/devices/regionZ/read_bandwidth
> +Date:		Apr, 2023
> +KernelVersion:	v6.8
> +Contact:	linux-cxl@vger.kernel.org
> +Description:
> +		(RO) The aggregated read bandwidth of the region. The number is
> +		the accumulated read bandwidth of all CXL memory devices that
> +		contributes to the region in MB/s. Should be equivalent to
> +		attributes in /sys/devices/system/node/nodeX/accessY/. See
> +		Documentation/ABI/stable/sysfs-devices-node.
> +		The host bus latency in the calculation is from proximity
> +		domain 0 to the host bus proximity domain.

If it's equivalent to /sys/devices/system/node/nodeX/accessY then it isn't
the domain 0 value it's the domain Y one. (IIRC how that works!)

> +
> +
> +What:		/sys/bus/cxl/devices/regionZ/write_bandwidth
> +Date:		Apr, 2023
> +KernelVersion:	v6.8
> +Contact:	linux-cxl@vger.kernel.org
> +Description:
> +		(RO) The aggregated write bandwidth of the region. The number is
> +		the accumulated write bandwidth of all CXL memory devices that
> +		contributes to the region in MB/s. Should be equivalent to
> +		attributes in /sys/devices/system/node/nodeX/accessY/. See
> +		Documentation/ABI/stable/sysfs-devices-node.
> +		The host bus latency in the calculation is from proximity
> +		domain 0 to the host bus proximity domain.
> +
> +
> +What:		/sys/bus/cxl/devices/regionZ/read_latency
> +Date:		Apr, 2023
> +KernelVersion:	v6.8
> +Contact:	linux-cxl@vger.kernel.org
> +Description:
> +		(RO) The read latency of the region. The number is
> +		the worst read latency of all CXL memory devices that
> +		contributes to the region in nanoseconds. Should be
> +		equivalent to attributes in /sys/devices/system/node/nodeX/accessY/.
> +		See Documentation/ABI/stable/sysfs-devices-node.
> +		The host bus latency in the calculation is from proximity
> +		domain 0 to the host bus proximity domain.
> +
> +
> +What:		/sys/bus/cxl/devices/regionZ/write_latency
> +Date:		Apr, 2023
> +KernelVersion:	v6.8
> +Contact:	linux-cxl@vger.kernel.org
> +Description:
> +		(RO) The write latency of the region. The number is
> +		the worst write latency of all CXL memory devices that
> +		contributes to the region in nanoseconds. Should be
> +		equivalent to attributes in /sys/devices/system/node/nodeX/accessY/.
> +		See Documentation/ABI/stable/sysfs-devices-node.
> +		The host bus latency in the calculation is from proximity
> +		domain 0 to the host bus proximity domain.
> diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
> index be7383e74ef5..d97fa5f32e86 100644
> --- a/drivers/cxl/core/region.c
> +++ b/drivers/cxl/core/region.c
> @@ -645,6 +645,26 @@ static ssize_t size_show(struct device *dev, struct device_attribute *attr,
>  }
>  static DEVICE_ATTR_RW(size);
>  
> +#define ACCESS_ATTR(attrib)					\
> +static ssize_t attrib##_show(struct device *dev,		\
> +			   struct device_attribute *attr,	\
> +			   char *buf)				\
> +{								\
> +	struct cxl_region *cxlr = to_cxl_region(dev);		\
> +								\
> +	if (cxlr->coord.write_bandwidth == 0)			\

Fun questions for long run.  Does a RO DC region ever supply a write bandwidth?
Also, I'd prefer returning an error to say it's not provided than
returning that it is, but the length of the string is 0.
coord.attrib seems better in general.

I'd prefer to hide these attributes entirely if the value isn't available.
Is that tricky to do for some reason?  There is already a cxl_region_visible()
callback.

> +		return 0;					\
> +								\
> +	return sysfs_emit(buf, "%u\n",				\
> +			  cxlr->coord.attrib);			\

Oddly short line wrap.

> +}								\
> +static DEVICE_ATTR_RO(attrib)
> +
> +ACCESS_ATTR(read_bandwidth);
> +ACCESS_ATTR(read_latency);
> +ACCESS_ATTR(write_bandwidth);
> +ACCESS_ATTR(write_latency);
> +
>  static struct attribute *cxl_region_attrs[] = {
>  	&dev_attr_uuid.attr,
>  	&dev_attr_commit.attr,
> @@ -653,6 +673,10 @@ static struct attribute *cxl_region_attrs[] = {
>  	&dev_attr_resource.attr,
>  	&dev_attr_size.attr,
>  	&dev_attr_mode.attr,
> +	&dev_attr_read_bandwidth.attr,
> +	&dev_attr_write_bandwidth.attr,
> +	&dev_attr_read_latency.attr,
> +	&dev_attr_write_latency.attr,
>  	NULL,
>  };
>  
> 
> 


  reply	other threads:[~2023-12-19 14:58 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-15 23:15 [PATCH v2 0/3] cxl: Add support to report region access coordinates to numa nodes Dave Jiang
2023-12-15 23:15 ` [PATCH v2 1/3] cxl/region: Calculate performance data for a region Dave Jiang
2023-12-19 14:51   ` Jonathan Cameron
2023-12-21 22:51     ` Dave Jiang
2024-01-08 13:58       ` Jonathan Cameron
2023-12-15 23:16 ` [PATCH v2 2/3] cxl/region: Add sysfs attribute for locality attributes of CXL regions Dave Jiang
2023-12-19 14:58   ` Jonathan Cameron [this message]
2023-12-15 23:16 ` [PATCH v2 3/3] cxl: Add memory hotplug notifier for cxl region Dave Jiang
2023-12-19 15:15   ` Jonathan Cameron
2023-12-22 18:17     ` Dave Jiang
2024-01-08 13:56       ` Jonathan Cameron

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=20231219145807.000016a8@Huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=alison.schofield@intel.com \
    --cc=brice.goglin@gmail.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.jiang@intel.com \
    --cc=dave@stgolabs.net \
    --cc=ira.weiny@intel.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=nifan.cxl@gmail.com \
    --cc=vishal.l.verma@intel.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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox