[libvirt] [v6 00/10] Support cache tune in libvirt

Martin Kletzander mkletzan at redhat.com
Wed Feb 15 12:00:29 UTC 2017


On Wed, Feb 15, 2017 at 01:41:43PM +0800, Eli Qiao wrote:
>Addressed comment from v6 -> v5
>
>Marcelo:
>       * Support other APPs to operate /sys/fs/resctrl at same time
>
>         Libvirt will scan /sys/fs/resctrl again before doing cache allocation.
>         patch 10 will address this.
>
>Addressed comment from v4 -> v5:
>
>Marcelo:
>       * Several typos
>       * Use flock instead of virFileLock
>
>Addressed comment from v3 -> v4:
>
>Daniel & Marcelo:
>       * Added concurrence support
>
>Addressed comment from v2 -> v3:
>
>Daniel:
>      * Fixed coding style, passed `make check` and `make syntax-check`
>
>      * Variables renaming and move from header file to c file.
>
>      * For locking/mutex support, no progress.
>
>      There are some discussion from mailing list, but I can not find a better
>      way to add locking support without performance impact.
>
>      I'll explain the process and please help to advice what shoud we do.
>
>      VM create:
>      1) Get the cache left value on each bank of the host. This should be
>         shared amount all VMs.
>      2) Calculate the schemata on the bank based on all created resctrl
>         domain's schemata
>      3) Calculate the default schemata by scaning all domain's schemata.
>      4) Flush default schemata to /sys/fs/resctrl/schemata
>
>      VM destroy:
>      1) Remove the resctrl domain of that VM
>      2) Recalculate default schemata
>      3) Flush default schemata to /sys/fs/resctrl/schemata
>
>      The key point is that all VMs shares /sys/fs/resctrl/schemata, and
>      when a VM create a resctrl domain, the schemata of that VM depends on
>      the default schemata and all other exsited schematas. So a global
>      mutex is reqired.
>
>      Before calculate a schemata or update default schemata, libvirt
>      should gain this global mutex.
>
>      I will try to think more about how to support this gracefully in next
>      patch set.
>
>Marcelo:
>      * Added vcpu support for cachetune, this will allow user to define which
>        vcpu using which cache allocation bank.
>
>        <cachetune id='0' host_id=0 size='3072' unit='KiB' vcpus='0,1'/>
>
>        vcpus is a cpumap, the vcpu pids will be added to tasks file
>
>      * Added cdp compatible, user can specify l3 cache even host enable cdp.
>        See patch 8.
>        On a cdp enabled host, specify l3code/l3data by
>
>        <cachetune id='0' host_id='0' type='l3' size='3072' unit='KiB'/>
>
>        This will create a schemata like:
>            L3data:0=0xff00;...
>            L3code:0=0xff00;...
>
>      * Would you please help to test if the functions work.
>
>Martin:
>      * Xml test case, I have no time to work on this yet, would you please
>        show me an example, would like to amend it later.
>

look at tests/qemuxml2xmltest, it is called 'qemu...', but it actually
just parses XML and then formats it back and checks the result (that
there is no information lost.  Input XMLs are in tests/qemuxml2argvdata/
and the desired outputs are in tests/qemuxml2xmloutdata/.  For XMLs that
should not change, the output XML is a symlink to the input one.  For
negative tests, there doesn't have to be any output XML (of course).

>This series patches are for supportting CAT featues, which also
>called cache tune in libvirt.
>
>First to expose cache information which could be tuned in capabilites XML.
>Then add new domain xml element support to add cacahe bank which will apply
>on this libvirt domain.
>
>This series patches add a util file `resctrl.c/h`, an interface to talk with
>linux kernel's system fs.
>
>There are still one TODO left:
>    1. Expose a new public interface to get free cache information.
>    2. Expose a new public interface to set cachetune lively.
>
>Some discussion about this feature support can be found from:
>https://www.redhat.com/archives/libvir-list/2017-January/msg00644.html
>
>
>Eli Qiao (10):
>  Resctrl: Add some utils functions
>  Resctrl: expose cache information to capabilities
>  Resctrl: Add new xml element to support cache tune
>  Resctrl: Add private interface to set cachebanks
>  Qemu: Set cache banks
>  Resctrl: enable l3code/l3data
>  Resctrl: Make sure l3data/l3code are pairs
>  Resctrl: Compatible mode for cdp enabled
>  Resctrl: concurrence support
>  Resctrl: Scan resctrl before doing cache allocation
>
> docs/schemas/domaincommon.rng |   46 ++
> include/libvirt/virterror.h   |    1 +
> po/POTFILES.in                |    1 +
> src/Makefile.am               |    1 +
> src/conf/capabilities.c       |   56 ++
> src/conf/capabilities.h       |   23 +
> src/conf/domain_conf.c        |  182 +++++++
> src/conf/domain_conf.h        |   19 +
> src/libvirt_private.syms      |   11 +
> src/nodeinfo.c                |   64 +++
> src/nodeinfo.h                |    1 +
> src/qemu/qemu_capabilities.c  |    8 +
> src/qemu/qemu_driver.c        |    6 +
> src/qemu/qemu_process.c       |   53 ++
> src/util/virerror.c           |    1 +
> src/util/virresctrl.c         | 1208 +++++++++++++++++++++++++++++++++++++++++
> src/util/virresctrl.h         |   88 +++
> 17 files changed, 1769 insertions(+)
> create mode 100644 src/util/virresctrl.c
> create mode 100644 src/util/virresctrl.h
>
>--
>1.9.1
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170215/f2b82918/attachment-0001.sig>


More information about the libvir-list mailing list