[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 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.

> +
> +     Show memory bandwidth throttling for domain. Under different modes, it
> +     shows different type of data.
> +
> +     There are two modes:
> +     Linear mode: the response of throttling value is linear.
> +     Non-linear mode: the response of throttling value is non-linear.
> +
> +     For linear mode, it shows the decimal value. For non-linear mode, it 
> shows
> +     hexadecimal value.
> +
> +  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/

> +     through CPUID.

How can one get this value empirically? Do I need to use a external
tool?

> +
> +     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.

> +
> +# 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?

> +  to the throttling value stored in the Thrtl MSR register.
> +
> +## The relationship between MBA and CAT/CDP
> +
> +  Generally speaking, MBA is completely independent of CAT/CDP, and any
> +  combination may be applied at any time, e.g. enabling MBA with CAT
> +  disabled.
> +
> +  But it needs to be noticed that MBA shares COS infrastructure with CAT,
> +  although MBA is enumerated by different CPUID leaf from CAT (which
> +  indicates that the max COS of MBA may be different from CAT). In some
> +  cases, a domain is permitted to have a COS that is beyond one (or more)
> +  of PSR features but within the others. For instance, let's assume the max
> +  COS of MBA is 8 but the max COS of L3 CAT is 16, when a domain is assigned
> +  9 as COS, the L3 CAT CBM associated to COS 9 would be enforced, but for 
> MBA,
> +  the HW works as default value is set since COS 9 is beyond the max COS (8)
> +  of MBA.
> +
> +## Design Overview
> +
> +* Core COS/Thrtl association
> +
> +  When enforcing Memory Bandwidth Allocation, all cores of domains have
> +  the same default Thrtl MSR (COS0) which stores the same Thrtl (0). The
> +  default Thrtl MSR is used only in hypervisor and is transparent to tool 
> stack
> +  and user.
> +
> +  System administrators can change PSR allocation policy at runtime by
> +  using the tool stack. Since MBA shares COS ID with CAT/CDP, a COS ID
> +  corresponds to a 2-tuple, like [CBM, Thrtl] with only-CAT enabled, when CDP
> +  is enabled, the COS ID corresponds to a 3-tuple, like [Code_CBM, Data_CBM,
> +  Thrtl]. If neither CAT nor CDP is enabled, things are easier, since one COS
> +  ID corresponds to one Thrtl.
> +
> +* VCPU schedule
> +
> +  This part reuses CAT COS infrastructure.
> +
> +* Multi-sockets
> +
> +  Different sockets may have different MBA ability (like max COS)
> +  although it is consistent on the same socket. So the capability
> +  of per-socket MBA is specified.
> +
> +  This part reuses CAT COS infrastructure.
> +
> +## 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?

> +
> +  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.

> +* 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
> +
> +# Limitations
> +
> +MBA can only work on HW which enables it (check by CPUID).
                                 ^ s/enables/supports/.
> +
> +# 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®.