[v7,4/8] x86/resctrl: Add comments on RFTYPE flags hierarchy

Message ID 169178458575.1147205.16331131496340363561.stgit@bmoger-ubuntu
State New
Headers
Series x86/resctrl: Miscellaneous resctrl features |

Commit Message

Moger, Babu Aug. 11, 2023, 8:09 p.m. UTC
  resctrl uses RFTYPE flags for creating resctrl directory structure.

Definitions and directory structures are not documented. Add
comments to improve the readability and help future additions.

Signed-off-by: Babu Moger <babu.moger@amd.com>
---
 arch/x86/kernel/cpu/resctrl/internal.h |   49 ++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
  

Comments

Reinette Chatre Aug. 15, 2023, 10:45 p.m. UTC | #1
Hi Babu,

On 8/11/2023 1:09 PM, Babu Moger wrote:
> resctrl uses RFTYPE flags for creating resctrl directory structure.
> 
> Definitions and directory structures are not documented. Add
> comments to improve the readability and help future additions.
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
>  arch/x86/kernel/cpu/resctrl/internal.h |   49 ++++++++++++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
> 
> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index 2051179a3b91..37800724e002 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -240,6 +240,55 @@ struct rdtgroup {
>  
>  /*
>   * Define the file type flags for base and info directories.
> + *
> + * RESCTRL filesystem has two main components
> + *	a. info
> + *	b. base
> + *
> + * /sys/fs/resctrl/
> + *	|
> + *	--> info (Top level directory named "info". Contains files that
> + *	|	  provide details on control and monitoring resources.)
> + *	|
> + *	--> base (Root directory associated with default resource group
> + *		  as well as directories created by user for MON and CTRL
> + *		  groups. Contains files to interact with MON and CTRL
> + *		  groups.)
> + *
> + *	info directory structure
> + *	------------------------------------------------------------------
> + *	--> RFTYPE_INFO
> + *	--> <info> directory
> + *		--> RFTYPE_TOP_INFO
> + *		    Files: last_cmd_status
> + *
> + *		--> RFTYPE_MON_INFO
> + *		--> <L3_MON> directory
> + *		    Files: max_threshold_occupancy, mon_features,
> + *			   num_rmids, mbm_total_bytes_config,
> + *			   mbm_local_bytes_config
> + *

I think the monitor files need the same split as what you did for
control files in this version. That is, there are some files
that depend on RFTYPE_MON_INFO and others that depend on
RFTYPE_MON_INFO | RFTYPE_RES_CACHE. In above it appears that
all files depend on RFTYPE_MON_INFO only.

> + *		--> RFTYPE_CTRL_INFO
> + *		    Files: num_closids
> + *

Looking at this closer I can see some potential confusion about where these
files appear. A note saying that these files appear in all sub-directories
may be helpful because at this point it appears that this file is at the
same level as the directories.

> + *			--> RFTYPE_RES_CACHE
> + *			--> <L2,L3> directories
> + *			    Files: bit_usage, cbm_mask, min_cbm_bits,
> + *				   shareable_bits
> + *
> + *			--> RFTYPE_RES_MB
> + *			--> <MB,SMBA> directories
> + *			    Files: bandwidth_gran, delay_linear,
> + *				   min_bandwidth, thread_throttle_mode
> + *
> + *	base directory structure
> + *	------------------------------------------------------------------
> + *	--> RFTYPE_BASE (Files common for both MON and CTRL groups)
> + *	    Files: cpus, cpus_list, tasks
> + *
> + *	--> RFTYPE_CTRL_BASE (Files only for CTRL group)
> + *	    Files: mode, schemata, size
> + *
>   */
>  #define RFTYPE_INFO			BIT(0)
>  #define RFTYPE_BASE			BIT(1)
> 
> 

Reinette
  
Moger, Babu Aug. 17, 2023, 7:21 p.m. UTC | #2
Hi Reinette,

On 8/17/23 12:42, Reinette Chatre wrote:
> Hi Babu,
> 
> On 8/17/2023 10:07 AM, Moger, Babu wrote:
>> On 8/17/23 10:37, Reinette Chatre wrote:
>>> On 8/17/2023 7:20 AM, Moger, Babu wrote:
> 
>>>> + *
>>>> + *             --> RFTYPE_MON (Files for all monitoring resources)
>>>> + *                 directory: L3_MON
>>>
>>> Should this not be below RFTYPE_RES_CACHE? 
>>
>> This is kind of odd. I know why you are saying it. Wouldn't it confuse the
>> user? Then, it feels like mon_features and num_rmids don't belong L3_MON.
>>
> 
> This is exactly the confusion that I attempted to highlight in my
> first response to this patch. The same issue is present for
> "num_closids" (which is currently treated differently ... at least
> these need to be consistent). How can it be made obvious that
> these files are present in all resource sub-directories while
> also capturing the hierarchy of the RFTYPE flags? I could not
> find a clear way and that is why I ended up removing the directories
> in my earlier proposal and just stick to documenting the file flags
> that only applies to files anyway. 
> 
> What do you think of something like below? It has duplication
> but may be less confusing while still capturing the flags
> accurately?

Yes. This looks good to me.

> 
> 	--> RFTYPE_MON (Files for all monitoring resources)
> 	    Directory: L3_MON
> 	    Files: mon_features, num_rmids
> 
> 	    --> RFTYPE_RES_CACHE (Files for cache monitoring resources)
> 		Directory: L3_MON
> 		Files: max_threshold_occupancy, mbm_total_bytes_config,
> 		       mbm_local_bytes_config
> 
> 	--> RFTYPE_CTRL (Files for all control resources)
> 	    Directories: L2, L3, MB, SMBA
> 	    File: num_closids
> 
> 	    --> RFTYPE_CTRL (Files for all control resources)
> 		Directories: L2, L3
> 		Files: bit_usage, cbm_mask, min_cbm_bits,
> 		       shareable_bits
> 	
> 	    --> RFTYPE_RES_MB (Files for memory control resources)
> 		Directories: MB, SMBA
> 		Files: bandwidth_gran, delay_linear,
> 		       min_bandwidth, thread_throttle_mode
> 
> 	
>>>> + *                               Files: bit_usage, cbm_mask, min_cbm_bits,
>>>> + *                                      shareable_bits
>>>
>>> The extra indent is not clear to me. Did you do it to represent
>>> a hierarchy or just to line up the ":"?
>>
>> This is to line up with :. I can fix it.
>>
>> Just wondering how do you notice these tabs? My linux diff does not show
>> any difference. Are you using any utilities to see these tabs?
> 
> My editor is configured to visualize tabs and trailing spaces. In
> this case it was just how my email client displayed it though.
> 

ok.
Thanks
Babu Moger
  

Patch

diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index 2051179a3b91..37800724e002 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -240,6 +240,55 @@  struct rdtgroup {
 
 /*
  * Define the file type flags for base and info directories.
+ *
+ * RESCTRL filesystem has two main components
+ *	a. info
+ *	b. base
+ *
+ * /sys/fs/resctrl/
+ *	|
+ *	--> info (Top level directory named "info". Contains files that
+ *	|	  provide details on control and monitoring resources.)
+ *	|
+ *	--> base (Root directory associated with default resource group
+ *		  as well as directories created by user for MON and CTRL
+ *		  groups. Contains files to interact with MON and CTRL
+ *		  groups.)
+ *
+ *	info directory structure
+ *	------------------------------------------------------------------
+ *	--> RFTYPE_INFO
+ *	--> <info> directory
+ *		--> RFTYPE_TOP_INFO
+ *		    Files: last_cmd_status
+ *
+ *		--> RFTYPE_MON_INFO
+ *		--> <L3_MON> directory
+ *		    Files: max_threshold_occupancy, mon_features,
+ *			   num_rmids, mbm_total_bytes_config,
+ *			   mbm_local_bytes_config
+ *
+ *		--> RFTYPE_CTRL_INFO
+ *		    Files: num_closids
+ *
+ *			--> RFTYPE_RES_CACHE
+ *			--> <L2,L3> directories
+ *			    Files: bit_usage, cbm_mask, min_cbm_bits,
+ *				   shareable_bits
+ *
+ *			--> RFTYPE_RES_MB
+ *			--> <MB,SMBA> directories
+ *			    Files: bandwidth_gran, delay_linear,
+ *				   min_bandwidth, thread_throttle_mode
+ *
+ *	base directory structure
+ *	------------------------------------------------------------------
+ *	--> RFTYPE_BASE (Files common for both MON and CTRL groups)
+ *	    Files: cpus, cpus_list, tasks
+ *
+ *	--> RFTYPE_CTRL_BASE (Files only for CTRL group)
+ *	    Files: mode, schemata, size
+ *
  */
 #define RFTYPE_INFO			BIT(0)
 #define RFTYPE_BASE			BIT(1)