On Thu, 2020-09-03 at 17:30 +0530, Pratik Sampat wrote:
I certainly did not know about that the Intel architecture being awareWell, things depend on platform, it is really "void", it is just
of timers and pre-wakes the CPUs which makes the timer experiment
observations void.
different and it measures an optimized case. The result may be smaller
observed latency. And things depend on the platform.
However, we are also collecting a baseline measurement wherein we runYes, this should give the idea of the overhead, but still, at least for
the same test on a 100% busy CPU and the measurement of latency from
that could be considered to the kernel-userspace overhead.
The rest of the measurements would be considered keeping this baseline
in mind.
many Intel platforms I would not be comfortable using the resulting
number (measured latency - baseline) for a cpuidle driver, because
there are just too many variables there. I am not sure I could assume
the baseline measured this way is an invariant - it could be noticeably
different depending on whether you use C-states or not.
If baseline and cpuidle latency are numbers of same order of magnitude,At least on Intel platforms, this will mean that the IPI method won'tThat's a valid point. We have similar deep idle states in POWER too.
cover deep C-states like, say, PC6, because one CPU is busy. Again, not
saying this is not interesting, just pointing out the limitation.
The idea here is that this test should be run on an already idle
system, of course there will be kernel jitters along the way
which can cause little skewness in observations across some CPUs but I
believe the observations overall should be stable.
and you are measuring in a controlled lab system, may be yes. But if
baseline is, say, in milliseconds, and you are measuring a 10
microseconds C-state, then probably no.
Another solution to this could be using isolcpus, but that justWell, I did not try to guarantee idleness. I just use timers and
increases the complexity all the more.
If you have any suggestions of any other way that could guarantee
idleness that would be great.
external device (the network card), so no CPUs needs to be busy and the
system can enter deep C-states. Then I just look at median, 99%-th
percentile, etc.
But by all means IPI is also a very interesting experiment. Just covers
a different usage scenario.
When I started experimenting in this area, one of my main early
takeaways was realization that C-state latency really depends on the
event source.