From: Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
To: "Waskiewicz Jr,
Peter P"
<peter.p.waskiewicz.jr-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: "containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Ingo Molnar <mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
"H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>,
Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
"cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
Subject: Re: [PATCH 0/4] x86: Add Cache QoS Monitoring (CQM) support
Date: Mon, 13 Jan 2014 08:55:28 +0100 [thread overview]
Message-ID: <20140113075528.GR7572@laptop.programming.kicks-ass.net> (raw)
In-Reply-To: <1389380100.32504.172.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
On Fri, Jan 10, 2014 at 06:55:11PM +0000, Waskiewicz Jr, Peter P wrote:
> I've spoken with the CPU architect, and he's set me straight. I was
> getting some simulation data and reality mixed up, so apologies.
>
> The cacheline is tagged with the RMID being tracked when it's brought
> into the cache. That is the only time it's tagged, it does not get
> updated (I was looking at data showing impacts if it was updated).
>
> If there are frequent RMID updates for a particular process, then there
> is the possibility that any remaining old data for that process can be
> accounted for on a different RMID. This really is workload dependent,
> and my architect provided their data showing that this occurrence is
> pretty much in the noise.
What change frequency and what sided workloads did they test?
I can make it significant; take a multi-threaded workload that mostly
fits in cache, then assign all theads but one RMDI 0, then fairly
quickly rotate RMID 1 between the threads.
The problem is, since there's a limited number of RMIDs we have to
rotate at some point, but since changing RMIDs is nondeterministic we
can't.
> Also, I did ask about the granularity of the RMID, and it is
> per-cacheline. So if there is a non-exclusive cacheline, then the
> occupancy data in the other part of the cacheline will count against the
> RMID.
One more question:
u64 i;
u64 rmid_val[];
for (i = 0; i < rmid_max; i++) {
wrmsr(IA32_QM_EVTSEL, 1 | (i << 32));
rdmsr(IA32_QM_CTR, rmid_val[i]);
}
Is this the right way of reading these values? I couldn't find anything
that says the event must 'run' to accumulate a value at all, so all it
seems it a direct value read with a multiplexer to the RMID.
> > So my current mental model would tag a line with the current (ASSOC)
> > RMID on:
> > - load from DRAM -> L*, even for non-exclusive
> > - any to exclusive transition
> >
> > The result of such rules is that when the effective RMID of a task
> > changes it takes an indeterminate amount of time before the residency
> > stats reflect reality again.
> >
> > Furthermore; the IA32_QM_CTR is a misnomer as its a VALUE not a COUNTER.
> > Not to mention the entire SDM 17.14.2 section is a mess; it purports to
> > describe how to detect the thing using CPUID but then also maybe
> > describes how to program it.
>
> I've given this feedback to the section owner in the SDM. There is an
> update due this month, and there will be some updates to this section
> (along with some additions).
>
> I should have my alternate implementation sent out shortly, just working
> a few kinks out of it. This is the proc-based and sysfs-based interface
> that will rely on a userspace program to handle the logic of grouping
> and assigning stuff together.
I've not figured out how to deal with this stuff yet; exposing RMIDs to
userspace is a guaranteed fail though. Any interface that disallows the
kernel to manage the RMIDs is broken.
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: "Waskiewicz Jr, Peter P" <peter.p.waskiewicz.jr@intel.com>
Cc: Tejun Heo <tj@kernel.org>, Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Li Zefan <lizefan@huawei.com>,
"containers@lists.linux-foundation.org"
<containers@lists.linux-foundation.org>,
"cgroups@vger.kernel.org" <cgroups@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 0/4] x86: Add Cache QoS Monitoring (CQM) support
Date: Mon, 13 Jan 2014 08:55:28 +0100 [thread overview]
Message-ID: <20140113075528.GR7572@laptop.programming.kicks-ass.net> (raw)
In-Reply-To: <1389380100.32504.172.camel@ppwaskie-mobl.amr.corp.intel.com>
On Fri, Jan 10, 2014 at 06:55:11PM +0000, Waskiewicz Jr, Peter P wrote:
> I've spoken with the CPU architect, and he's set me straight. I was
> getting some simulation data and reality mixed up, so apologies.
>
> The cacheline is tagged with the RMID being tracked when it's brought
> into the cache. That is the only time it's tagged, it does not get
> updated (I was looking at data showing impacts if it was updated).
>
> If there are frequent RMID updates for a particular process, then there
> is the possibility that any remaining old data for that process can be
> accounted for on a different RMID. This really is workload dependent,
> and my architect provided their data showing that this occurrence is
> pretty much in the noise.
What change frequency and what sided workloads did they test?
I can make it significant; take a multi-threaded workload that mostly
fits in cache, then assign all theads but one RMDI 0, then fairly
quickly rotate RMID 1 between the threads.
The problem is, since there's a limited number of RMIDs we have to
rotate at some point, but since changing RMIDs is nondeterministic we
can't.
> Also, I did ask about the granularity of the RMID, and it is
> per-cacheline. So if there is a non-exclusive cacheline, then the
> occupancy data in the other part of the cacheline will count against the
> RMID.
One more question:
u64 i;
u64 rmid_val[];
for (i = 0; i < rmid_max; i++) {
wrmsr(IA32_QM_EVTSEL, 1 | (i << 32));
rdmsr(IA32_QM_CTR, rmid_val[i]);
}
Is this the right way of reading these values? I couldn't find anything
that says the event must 'run' to accumulate a value at all, so all it
seems it a direct value read with a multiplexer to the RMID.
> > So my current mental model would tag a line with the current (ASSOC)
> > RMID on:
> > - load from DRAM -> L*, even for non-exclusive
> > - any to exclusive transition
> >
> > The result of such rules is that when the effective RMID of a task
> > changes it takes an indeterminate amount of time before the residency
> > stats reflect reality again.
> >
> > Furthermore; the IA32_QM_CTR is a misnomer as its a VALUE not a COUNTER.
> > Not to mention the entire SDM 17.14.2 section is a mess; it purports to
> > describe how to detect the thing using CPUID but then also maybe
> > describes how to program it.
>
> I've given this feedback to the section owner in the SDM. There is an
> update due this month, and there will be some updates to this section
> (along with some additions).
>
> I should have my alternate implementation sent out shortly, just working
> a few kinks out of it. This is the proc-based and sysfs-based interface
> that will rely on a userspace program to handle the logic of grouping
> and assigning stuff together.
I've not figured out how to deal with this stuff yet; exposing RMIDs to
userspace is a guaranteed fail though. Any interface that disallows the
kernel to manage the RMIDs is broken.
next prev parent reply other threads:[~2014-01-13 7:55 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-03 20:34 [PATCH 0/4] x86: Add Cache QoS Monitoring (CQM) support Peter P Waskiewicz Jr
2014-01-03 20:34 ` Peter P Waskiewicz Jr
2014-01-03 20:34 ` [PATCH 1/4] x86: Add support for Cache QoS Monitoring (CQM) detection Peter P Waskiewicz Jr
2014-01-03 20:34 ` [PATCH 2/4] x86: Add Cache QoS Monitoring support to x86 perf uncore Peter P Waskiewicz Jr
[not found] ` <1388781285-18067-1-git-send-email-peter.p.waskiewicz.jr-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-01-03 20:34 ` [PATCH 3/4] cgroup: Add new cacheqos cgroup subsys to support Cache QoS Monitoring Peter P Waskiewicz Jr
2014-01-03 20:34 ` Peter P Waskiewicz Jr
2014-01-03 20:34 ` [PATCH 4/4] Documentation: Add documentation for cacheqos cgroup Peter P Waskiewicz Jr
2014-01-03 20:34 ` Peter P Waskiewicz Jr
2014-01-04 16:10 ` [PATCH 0/4] x86: Add Cache QoS Monitoring (CQM) support Tejun Heo
2014-01-04 16:10 ` Tejun Heo
[not found] ` <20140104161050.GA24306-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-01-04 22:43 ` Waskiewicz Jr, Peter P
2014-01-04 22:43 ` Waskiewicz Jr, Peter P
[not found] ` <1388875369.9761.25.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-01-04 22:50 ` Tejun Heo
2014-01-04 22:50 ` Tejun Heo
[not found] ` <20140104225058.GC24306-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2014-01-05 5:23 ` Waskiewicz Jr, Peter P
2014-01-05 5:23 ` Waskiewicz Jr, Peter P
[not found] ` <1388899376.9761.45.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-01-06 11:16 ` Peter Zijlstra
2014-01-06 11:16 ` Peter Zijlstra
[not found] ` <20140106111624.GB5623-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2014-01-06 16:34 ` Waskiewicz Jr, Peter P
2014-01-06 16:34 ` Waskiewicz Jr, Peter P
[not found] ` <1389026035.32504.3.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-01-06 16:41 ` Peter Zijlstra
2014-01-06 16:41 ` Peter Zijlstra
[not found] ` <20140106164150.GQ31570-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2014-01-06 16:47 ` Waskiewicz Jr, Peter P
2014-01-06 16:47 ` Waskiewicz Jr, Peter P
2014-01-06 16:47 ` Waskiewicz Jr, Peter P
[not found] ` <1389026867.32504.16.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-01-06 17:53 ` Peter Zijlstra
2014-01-06 17:53 ` Peter Zijlstra
[not found] ` <20140106175338.GF30183-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2014-01-06 18:05 ` Waskiewicz Jr, Peter P
2014-01-06 18:05 ` Waskiewicz Jr, Peter P
2014-01-06 18:06 ` Peter Zijlstra
2014-01-06 18:06 ` Peter Zijlstra
[not found] ` <20140106180636.GG30183-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2014-01-06 20:10 ` Waskiewicz Jr, Peter P
2014-01-06 20:10 ` Waskiewicz Jr, Peter P
[not found] ` <1389039035.32504.35.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-01-06 21:26 ` Peter Zijlstra
2014-01-06 21:26 ` Peter Zijlstra
2014-01-06 21:26 ` Peter Zijlstra
[not found] ` <20140106212623.GH30183-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2014-01-06 21:48 ` Waskiewicz Jr, Peter P
2014-01-06 21:48 ` Waskiewicz Jr, Peter P
[not found] ` <1389044899.32504.43.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-01-06 22:12 ` Peter Zijlstra
2014-01-06 22:12 ` Peter Zijlstra
[not found] ` <20140106221251.GJ30183-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2014-01-06 22:45 ` Waskiewicz Jr, Peter P
2014-01-06 22:45 ` Waskiewicz Jr, Peter P
[not found] ` <1389048315.32504.57.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-01-07 8:34 ` Peter Zijlstra
2014-01-07 8:34 ` Peter Zijlstra
[not found] ` <20140107083440.GL30183-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2014-01-07 15:15 ` Waskiewicz Jr, Peter P
2014-01-07 15:15 ` Waskiewicz Jr, Peter P
[not found] ` <1389107743.32504.69.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-01-07 21:12 ` Peter Zijlstra
2014-01-07 21:12 ` Peter Zijlstra
[not found] ` <20140107211229.GF2480-RM5+C6weyIYnLiPH7yDmwOa11wxjtiyuLtmvbW2Dspo@public.gmane.org>
2014-01-10 18:55 ` Waskiewicz Jr, Peter P
2014-01-10 18:55 ` Waskiewicz Jr, Peter P
[not found] ` <1389380100.32504.172.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-01-13 7:55 ` Peter Zijlstra [this message]
2014-01-13 7:55 ` Peter Zijlstra
[not found] ` <20140113075528.GR7572-RM5+C6weyIYnLiPH7yDmwOa11wxjtiyuLtmvbW2Dspo@public.gmane.org>
2014-01-14 17:58 ` H. Peter Anvin
2014-01-14 17:58 ` H. Peter Anvin
2014-01-14 17:58 ` H. Peter Anvin
[not found] ` <52D57AC2.3090109-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2014-01-27 17:34 ` Peter Zijlstra
2014-01-27 17:34 ` Peter Zijlstra
[not found] ` <20140127173420.GA9636-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2014-02-18 17:29 ` Waskiewicz Jr, Peter P
2014-02-18 17:29 ` Waskiewicz Jr, Peter P
[not found] ` <1392744567.3069.42.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-02-18 19:35 ` Peter Zijlstra
2014-02-18 19:35 ` Peter Zijlstra
2014-02-18 19:35 ` Peter Zijlstra
[not found] ` <20140218193528.GQ14089-RM5+C6weyIYnLiPH7yDmwOa11wxjtiyuLtmvbW2Dspo@public.gmane.org>
2014-02-18 19:54 ` Waskiewicz Jr, Peter P
2014-02-18 19:54 ` Waskiewicz Jr, Peter P
[not found] ` <1392753259.607.9.camel-29DAm2eTeB2q+SSgkFU3IPooFf0ArEBIu+b9c/7xato@public.gmane.org>
2014-02-20 16:58 ` Peter Zijlstra
2014-02-20 16:58 ` Peter Zijlstra
2014-01-14 20:46 ` Waskiewicz Jr, Peter P
2014-01-14 20:46 ` Waskiewicz Jr, Peter P
2014-01-14 20:46 ` Waskiewicz Jr, Peter P
2014-01-04 16:10 ` Tejun Heo
2014-01-06 11:08 ` Peter Zijlstra
2014-01-06 11:08 ` Peter Zijlstra
[not found] ` <20140106110803.GA5623-ndre7Fmf5hadTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2014-01-06 16:42 ` Waskiewicz Jr, Peter P
2014-01-06 16:42 ` Waskiewicz Jr, Peter P
2014-01-06 16:42 ` Waskiewicz Jr, Peter P
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=20140113075528.GR7572@laptop.programming.kicks-ass.net \
--to=peterz-wegcikhe2lqwvfeawa7xhq@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=peter.p.waskiewicz.jr-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.