Re: [PATCH 21/24] selftests/resctrl: Get resource id from cache id

From: Ilpo Järvinen
Date: Fri Oct 27 2023 - 09:30:47 EST


On Fri, 27 Oct 2023, Maciej Wieczór-Retman wrote:

> On 2023-10-24 at 12:26:31 +0300, Ilpo Järvinen wrote:
> >Resource id is acquired differently depending on CPU. AMD tests use id
> >from L3 cache, whereas CPUs from other vendors base the id on topology
> >package id. In order to support L2 CAT test, this has to be
> >generalized.
> >
> >The driver side code seems to get the resource ids from cache ids so
> >the approach used by the AMD branch seems to match the kernel-side
> >code. It will also work with L2 resource IDs as long as the cache level
> >is generalized.
> >
> >Using the topology id was always fragile due to mismatch with the
> >kernel-side way to acquire the resource id. It got incorrect resource
> >id, e.g., when Cluster-on-Die (CoD) is enabled for CPU (but CoD is not
> >well suited for resctrl in the first place so it has not been a big
> >issues if test don't work correctly with it).
>
> "not been a big issues" -> "not been a big issue"?
>
> "if test don't work correctly" -> "if test doesn't work correctly" / "if tests
> don't work correctly"?
>
> >
> >Taking all the above into account, generalize the resource id
> >calculation by taking it from the cache id and do not hard-code the
> >cache level.
>
> In x86/resctrl files group of CPUs sharing a resctrl resource is called a
> domain. Because of that I think "resource id" terms should be substituted with
> "domain id" to match core resctrl code.

Okay, I was just using the terminology which pre-existed in the selftest
code.

I've really tried to look how I should call it but things were quite
inconsistent. The selftest uses resource id and reads it from cache id.
Documentation uses "instances of that resource" or "cache id" or "domain
x".


Documentation/arch/x86/resctrl.rst is very misleading btw and should be
IMHO updated:

Memory bandwidth Allocation (default mode)
------------------------------------------

Memory b/w domain is L3 cache.
::

MB:<cache_id0>=bandwidth0;<cache_id1>=bandwidth1;...

It claims "domain" is L3 cache (and the value we're talking about is
called "cache_id" here which is what you just called "domain id"). I
suppose it should say "b/w resource is L3 cache"?


--
i.