[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3 01/15] docs: create Memory Bandwidth Allocation (MBA) feature document



On 17-09-18 18:16:40, Roger Pau Monn� wrote:
> On Tue, Sep 05, 2017 at 05:32:23PM +0800, Yi Sun wrote:
> > +* xl interfaces:
> > +
> > +  1. `psr-mba-show [domain-id]`:
> 
> Is this limited to domain-id, or one can also use the domain name?
> Most of the xl commands accept either a domain-id or a domain-name.
> 
Both domain-id and domain-name can show it. I thought this is by default and
no need to explicitly declare. If I am wrong, I will change it as below:
    `psr-mba-show [domain-id/domain-name]`

[...]

> > +  2. `psr-mba-set [OPTIONS] <domain-id> <throttling>`:
> > +
> > +     Set memory bandwidth throttling for domain.
> > +
> > +     Options:
> > +     '-s': Specify the socket to process, otherwise all sockets are 
> > processed.
> > +
> > +     Throttling value set in register implies the approximate amount of 
> > delaying
> > +     the traffic between core and memory. The higher throttling value 
> > results in
> > +     lower bandwidth. The max throttling value (MBA_MAX) supported can be 
> > got
> 
> s/got/obtained/
> 
Thanks!

> > +     through CPUID.
> 
> How can one get this value empirically? Do I need to use a external
> tool?
> 
Sorry for confusion. In fact, the MBA_MAX is got through CPUID in hypervisor.
User can know it through psr-hwinfo. Will explain it.

> > +
> > +     Linear mode: the input precision is defined as 100-(MBA_MAX). For 
> > instance,
> > +     if the MBA_MAX value is 90, the input precision is 10%. Values not an 
> > even
> > +     multiple of the precision (e.g., 12%) will be rounded down (e.g., to 
> > 10%
> > +     delay applied) by HW automatically.
> > +
> > +     Non-linear mode: input delay values are powers-of-two from zero to the
> > +     MBA_MAX value from CPUID. In this case any values not a power of two 
> > will
> > +     be rounded down the next nearest power of two by HW automatically.
> 
> Both of the above descriptions should be moved to mba-show IMHO, the
> description there is incomplete and not helpful.
> 
Ok, thanks!

> > +
> > +# Technical details
> > +
> > +MBA is a member of Intel PSR features, it shares the base PSR 
> > infrastructure
> > +in Xen.
> > +
> > +## Hardware perspective
> > +
> > +  MBA defines a range of MSRs to support specifying a delay value (Thrtl) 
> > per
> > +  COS, with details below.
> > +
> > +  ```
> > +   +----------------------------+----------------+
> > +   | MSR (per socket)           |    Address     |
> > +   +----------------------------+----------------+
> > +   | IA32_L2_QOS_Ext_BW_Thrtl_0 |     0xD50      |
> > +   +----------------------------+----------------+
> > +   | ...                        |  ...           |
> > +   +----------------------------+----------------+
> > +   | IA32_L2_QOS_Ext_BW_Thrtl_n |     0xD50+n    |
> > +   +----------------------------+----------------+
> > +  ```
> > +
> > +  When context switch happens, the COS ID of domain is written to 
> > per-thread MSR
> > +  `IA32_PQR_ASSOC`, and then hardware enforces bandwidth allocation 
> > according
> 
> I think this is missing some context of the relation between a thread
> and the MSR. I assume it's related to IA32_PQR_ASSOC, but I have no
> idea what that constant means.
> 
> What's more, Xen doesn't have threads, so you should maybe speak about
> vCPUs instead?
> 
As Jan's comment, this is for 'per-hyper-thread'.

[...]

> > +## Implementation Description
> > +
> > +* Hypervisor interfaces:
> > +
> > +  1. Boot line param: "psr=mba" to enable the feature.
> > +
> > +  2. SYSCTL:
> > +          - XEN_SYSCTL_PSR_MBA_get_info: Get system MBA information.
> 
> So this is likely how one gets the mentioned MBA_MAX?
> 
Yup.

> > +
> > +  3. DOMCTL:
> > +          - XEN_DOMCTL_PSR_MBA_OP_GET_THRTL: Get throttling for a domain.
> > +          - XEN_DOMCTL_PSR_MBA_OP_SET_THRTL: Set throttling for a domain.
> > +
> > +* xl interfaces:
> > +
> > +  1. psr-mba-show [domain-id]
> > +          Show system/domain runtime MBA throttling value. For linear mode,
> > +          it shows the decimal value. For non-linear mode, it shows 
> > hexadecimal
> > +          value.
> > +          => XEN_SYSCTL_PSR_MBA_get_info/XEN_DOMCTL_PSR_MBA_OP_GET_THRTL
> > +
> > +  2. psr-mba-set [OPTIONS] <domain-id> <throttling>
> > +          Set bandwidth throttling for a domain.
> > +          => XEN_DOMCTL_PSR_MBA_OP_SET_THRTL
> > +
> > +  3. psr-hwinfo
> > +          Show PSR HW information, including L3 CAT/CDP/L2 CAT/MBA.
> > +          => XEN_SYSCTL_PSR_MBA_get_info
> 
> 'psr-hwinfo' seems to be completely missing from the 'xl interfaces:'
> section above.
> 
Because this is not a newly added interface, I do not describe it in 'xl
interfaces'. Is that necessary?

> > +* Key data structure:
> > +
> > +  1. Feature HW info
> > +
> > +     ```
> > +     struct {
> > +         unsigned int thrtl_max;
> > +         bool linear;
> > +     } mba;
> > +
> > +     - Member `thrtl_max`
> > +
> > +       `thrtl_max` is the max throttling value to be set, i.e. MBA_MAX.
> > +
> > +     - Member `linear`
> > +
> > +       `linear` means the response of delay value is linear or not.
> > +
> > +     As mentioned above, MBA is a member of Intel PSR features, it would
> > +     share the base PSR infrastructure in Xen. For example, the 'cos_max'
> > +     is a common HW property for all features. So, for other data structure
> > +     details, please refer 'intel_psr_cat_cdp.pandoc'.
>                              ^ to
Thanks!

> > +
> > +# Limitations
> > +
> > +MBA can only work on HW which enables it (check by CPUID).
>                                  ^ s/enables/supports/.
Thanks!

> > +
> > +# Testing
> > +
> > +We can execute these commands to verify MBA on different HWs supporting 
> > them.
> > +
> > +For example:
> > +  1. User can get the MBA hardware info through 'psr-hwinfo' command. From
> > +     result, user can know if this hardware works under linear mode or non-
> > +     linear mode, the max throttling value (MBA_MAX) and so on.
> > +
> > +    root@:~$ xl psr-hwinfo --mba
> > +    Memory Bandwidth Allocation (MBA):
> > +    Socket ID       : 0
> > +    Linear Mode     : Enabled
> > +    Maximum COS     : 7
> > +    Maximum Throttling Value: 90
> > +    Default Throttling Value: 0
> > +
> > +  2. Then, user can set a throttling value to a domain. For example, set 
> > '0xa',
> > +     i.e 10% delay.
> > +
> > +    root@:~$ xl psr-mba-set 1 0xa
> > +
> > +  3. User can check the current configuration of the domain through
> > +     'psr-mab-show'. For linear mode, the decimal value is shown.
> > +
> > +    root@:~$ xl psr-mba-show 1
> > +    Socket ID       : 0
> > +    Default THRTL   : 0
> > +       ID                     NAME            THRTL
> > +        1                 ubuntu14             10
> 
> The example seems better now IMHO.
> 
> Thanks, Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.