xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: dongxiao.xu@intel.com
To: xen-devel@lists.xen.org
Subject: [PATCH 0/8] enable Cache QoS Monitoring (CQM) feature
Date: Wed, 20 Nov 2013 11:27:30 +0800	[thread overview]
Message-ID: <1384918058-128466-1-git-send-email-dongxiao.xu@intel.com> (raw)

From: Dongxiao Xu <dongxiao.xu@intel.com>

Future generations of Intel Xeon processor may offer monitoring capability in
each logical processor to measure specific quality-of-service metric,
for example, the Cache QoS Monitoring to get L3 cache occupancy.
Detailed information please refer to Intel SDM chapter 17.14.

Cache QoS Monitoring provides a layer of abstraction between applications and
logical processors through the use of Resource Monitoring IDs (RMIDs).
In Xen design, each guest in the system can be assigned an RMID independently,
while RMID=0 is reserved for monitoring domains that doesn't enable CQM service.
When any of the domain's vcpu is scheduled on a logical processor, the domain's
RMID will be activated by programming the value into one specific MSR, and when
the vcpu is scheduled out, a RMID=0 will be programmed into that MSR.
The Cache QoS Hardware tracks cache utilization of memory accesses according to
the RMIDs and reports monitored data via a counter register. With this solution,
we can get the knowledge how much L3 cache is used by a certain guest.

To attach CQM service to a certain guest, two approaches are provided:
1) Create the guest with "pqos_cqm=1" set in configuration file.
2) Use "xl pqos-attach cqm domid" for a running guest.

To detached CQM service from a guest, users can:
1) Use "xl pqos-detach cqm domid" for a running guest.
2) Also destroying a guest will detach the CQM service.

To get the L3 cache usage, users can use the command of:
$ xl pqos-list cqm (domid)

The below data is just an example showing how the CQM related data is exposed to
end user.

[root@localhost]# xl pqos-list cqm
RMID count    56        RMID available    53
Name               ID  SocketID        L3C_Usage       SocketID        L3C_Usage
Domain-0            0         0         20127744              1         25231360
ExampleHVMDomain    1         0          3211264              1         10551296

Dongxiao Xu (8):
  x86: detect and initialize Cache QoS Monitoring feature
  x86: handle CQM resource when creating/destroying guests
  tools: handle CQM resource when creating/destroying guests
  x86: dynamically attach/detach CQM service for a guest
  tools: dynamically attach/detach CQM service for a guest
  x86: get per domain CQM information
  tools: get per domain CQM information
  x86: enable CQM monitoring for each domain RMID

 tools/libxc/xc_domain.c          |   51 +++++++++
 tools/libxc/xenctrl.h            |    7 ++
 tools/libxl/Makefile             |    3 +-
 tools/libxl/libxl.h              |    8 ++
 tools/libxl/libxl_create.c       |    3 +
 tools/libxl/libxl_pqos.c         |  100 +++++++++++++++++
 tools/libxl/libxl_types.idl      |    1 +
 tools/libxl/xl.h                 |    3 +
 tools/libxl/xl_cmdimpl.c         |  129 ++++++++++++++++++++++
 tools/libxl/xl_cmdtable.c        |   15 +++
 xen/arch/x86/Makefile            |    1 +
 xen/arch/x86/cpu/intel.c         |    6 +
 xen/arch/x86/domain.c            |   17 +++
 xen/arch/x86/domctl.c            |   66 +++++++++++
 xen/arch/x86/pqos.c              |  226 ++++++++++++++++++++++++++++++++++++++
 xen/arch/x86/setup.c             |    3 +
 xen/arch/x86/sysctl.c            |   64 +++++++++++
 xen/common/domctl.c              |    5 +-
 xen/include/asm-x86/cpufeature.h |    1 +
 xen/include/asm-x86/domain.h     |    2 +
 xen/include/asm-x86/msr-index.h  |    5 +
 xen/include/asm-x86/pqos.h       |   56 ++++++++++
 xen/include/public/domctl.h      |   32 ++++++
 xen/include/public/sysctl.h      |   23 ++++
 xen/include/xen/sched.h          |    3 +
 25 files changed, 828 insertions(+), 2 deletions(-)
 create mode 100644 tools/libxl/libxl_pqos.c
 create mode 100644 xen/arch/x86/pqos.c
 create mode 100644 xen/include/asm-x86/pqos.h

-- 
1.7.9.5

             reply	other threads:[~2013-11-20  3:27 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-20  3:27 dongxiao.xu [this message]
2013-11-20  3:27 ` [PATCH 1/8] x86: detect and initialize Cache QoS Monitoring feature dongxiao.xu
2013-11-20 11:11   ` Andrew Cooper
2013-11-20 12:40     ` Xu, Dongxiao
2013-11-20  3:27 ` [PATCH 2/8] x86: handle CQM resource when creating/destroying guests dongxiao.xu
2013-11-20 11:32   ` Andrew Cooper
2013-11-20 12:49     ` Xu, Dongxiao
2013-11-20  3:27 ` [PATCH 3/8] tools: " dongxiao.xu
2013-11-20  3:27 ` [PATCH 4/8] x86: dynamically attach/detach CQM service for a guest dongxiao.xu
2013-11-20 11:44   ` Andrew Cooper
2013-11-20 13:19     ` Xu, Dongxiao
2013-11-20  3:27 ` [PATCH 5/8] tools: " dongxiao.xu
2013-11-20  3:27 ` [PATCH 6/8] x86: get per domain CQM information dongxiao.xu
2013-11-20 11:56   ` Andrew Cooper
2013-11-20 13:22     ` Xu, Dongxiao
2013-11-20  3:27 ` [PATCH 7/8] tools: " dongxiao.xu
2013-11-20  3:27 ` [PATCH 8/8] x86: enable CQM monitoring for each domain RMID dongxiao.xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1384918058-128466-1-git-send-email-dongxiao.xu@intel.com \
    --to=dongxiao.xu@intel.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).