Thread (16 messages) 16 messages, 2 authors, 2018-08-22

Re: [PATCH 8/9] psi: pressure stall information for CPU, memory, and IO

From: Johannes Weiner <hannes@cmpxchg.org>
Date: 2018-08-06 15:21:01
Also in: linux-mm, lkml

Possibly related (same subject, not in this thread)

On Fri, Aug 03, 2018 at 07:07:33PM +0200, Peter Zijlstra wrote:
On Wed, Aug 01, 2018 at 11:19:57AM -0400, Johannes Weiner wrote:
quoted
+static bool psi_update_stats(struct psi_group *group)
+{
+	u64 deltas[NR_PSI_STATES - 1] = { 0, };
+	unsigned long missed_periods = 0;
+	unsigned long nonidle_total = 0;
+	u64 now, expires, period;
+	int cpu;
+	int s;
+
+	mutex_lock(&group->stat_lock);
+
+	/*
+	 * Collect the per-cpu time buckets and average them into a
+	 * single time sample that is normalized to wallclock time.
+	 *
+	 * For averaging, each CPU is weighted by its non-idle time in
+	 * the sampling period. This eliminates artifacts from uneven
+	 * loading, or even entirely idle CPUs.
+	 *
+	 * We don't need to synchronize against CPU hotplugging. If we
+	 * see a CPU that's online and has samples, we incorporate it.
+	 */
+	for_each_online_cpu(cpu) {
I'm still puzzled by this.. for 99% of the machines online == possible.
Why not always iterate possible and leave it at that? This is hardly a
fast path.
Hmm, you're right, that makes things much simpler. I guess I'm mostly
worried about the 1% where this significantly differs, but it looks
like we're smarter than simply doing CONFIG_NR_CPUS for the possible
map, and we can easily stomach a bit of discrepancy in this path.

I'll change that to possible and delete/update the third paragraph.

Thanks
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help