From: Punit Agrawal <punit1.agrawal@xxxxxxxxxxxxx> The cyclictest.py module recently gained the capability to parse max latency values as reported by cyclictest. When the max latency exceeds the range of the latency histogram (or in other words, the number of configured buckets), statistics such as mean and standard deviation can not be calculated correctly due to lost samples during measurement. In the case of lost samples, skip statistics generation and report the max latency warning the user to rerun the measurement. Signed-off-by: Punit Agrawal <punit1.agrawal@xxxxxxxxxxxxx> --- rteval/modules/measurement/cyclictest.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/rteval/modules/measurement/cyclictest.py b/rteval/modules/measurement/cyclictest.py index 50a734c75047..7a619dd1c852 100644 --- a/rteval/modules/measurement/cyclictest.py +++ b/rteval/modules/measurement/cyclictest.py @@ -67,6 +67,9 @@ class RunData: retval += "mean: %f\n" % self.__mean return retval + def get_max(self): + return self.__max + def update_max(self, value): if value > self.__max: self.__max = value @@ -423,6 +426,13 @@ class Cyclictest(rtevalModulePrototype): if abrt: rep_n.addChild(abrt_n) + # Let the user know if max latency overshot the number of buckets + if self.__cyclicdata["system"].get_max() > self.__buckets: + self._log(Log.ERR, "Max latency(%dus) exceeded histogram range(%dus). Skipping statistics" % + (self.__cyclicdata["system"].get_max(), self.__buckets)) + self._log(Log.ERR, "Increase number of buckets to avoid lost samples") + return rep_n + rep_n.addChild(self.__cyclicdata["system"].MakeReport()) for thr in self.__cpus: if str(thr) not in self.__cyclicdata: -- 2.33.0