On 9/7/26 12:47, Jedrzej Wasiukiewicz wrote:
> Treat vCPU attribute absence as a request to place the whole emulator
> process in one resctrl group for both allocation and monitoring. Parsing
> such XML failed until now.
> 
> A whole-process group has no vCPU list. It formats back as a bare
> cachetune, memorytune, energytune or monitor element.
> 
> Track the scope with a whole_process flag and enforce the rules beside
> the existing monitor checks. A domain's allocations are either all
> whole-process or all per-vCPU. A whole-process monitor needs a
> whole-process allocation, does not mix with explicit monitors and is
> unique per resource type. A whole-process allocation may still carry
> explicit per-vCPU monitors, as it already spans every thread.
> Monitors that omit vcpus inside an explicit allocation inherit the
> allocation's vcpu scope instead of covering the whole process.
> This behavior represents the resctrl dependency between allocation
> and monitoring.
> 
> Out of range and empty vcpus attributes still remain silently dropped.
> 
> Signed-off-by: Jedrzej Wasiukiewicz <[email protected]>
> Reviewed-by: Christopher M. Cantalupo <[email protected]>
> ---
>  src/conf/domain_conf.c                        | 231 ++++++++++++------
>  src/conf/domain_conf.h                        |   2 +
>  .../cachetune-monitor-empty-vcpus.xml         |  30 +++
>  .../cachetune-monitor-inherit-alloc.xml       |  30 +++
>  .../cachetune-wholeprocess-duplicate.xml      |  32 +++
>  ...chetune-wholeprocess-monitor-duplicate.xml |  31 +++
>  .../cachetune-wholeprocess-monitors.xml       |  31 +++
>  .../energytune-colliding-monitor.xml          |  30 +++
>  .../energytune-wholeprocess.xml               |  29 +++
>  .../memorytune-wholeprocess.xml               |  29 +++
>  .../resctrl-wholeprocess-alloc-monitor.xml    |  32 +++
>  .../resctrl-wholeprocess-layering.xml         |  32 +++
>  .../resctrl-wholeprocess-monitors.xml         |  33 +++
>  .../cachetune-monitor-inherit-alloc.xml       |  30 +++
>  tests/genericxml2xmltest.c                    |  11 +
>  15 files changed, 545 insertions(+), 68 deletions(-)
>  create mode 100644 
> tests/genericxml2xmlindata/cachetune-monitor-empty-vcpus.xml
>  create mode 100644 
> tests/genericxml2xmlindata/cachetune-monitor-inherit-alloc.xml
>  create mode 100644 
> tests/genericxml2xmlindata/cachetune-wholeprocess-duplicate.xml
>  create mode 100644 
> tests/genericxml2xmlindata/cachetune-wholeprocess-monitor-duplicate.xml
>  create mode 100644 
> tests/genericxml2xmlindata/cachetune-wholeprocess-monitors.xml
>  create mode 100644 
> tests/genericxml2xmlindata/energytune-colliding-monitor.xml
>  create mode 100644 tests/genericxml2xmlindata/energytune-wholeprocess.xml
>  create mode 100644 tests/genericxml2xmlindata/memorytune-wholeprocess.xml
>  create mode 100644 
> tests/genericxml2xmlindata/resctrl-wholeprocess-alloc-monitor.xml
>  create mode 100644 
> tests/genericxml2xmlindata/resctrl-wholeprocess-layering.xml
>  create mode 100644 
> tests/genericxml2xmlindata/resctrl-wholeprocess-monitors.xml
>  create mode 100644 
> tests/genericxml2xmloutdata/cachetune-monitor-inherit-alloc.xml
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 34d3b00079..c1a4b8f26e 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -18814,15 +18814,17 @@ virDomainDefParseBootOptions(virDomainDef *def,
>  static int
>  virDomainResctrlParseVcpus(virDomainDef *def,
>                             xmlNodePtr node,
> -                           virBitmap **vcpus)
> +                           virBitmap **vcpus,
> +                           bool *whole_process)

Nit pick - we don't really like underscore case (though some code might
have slipped in back in the day).

Michal

Reply via email to