Message ID | 20200721124300.65615-1-psampat@linux.ibm.com (mailing list archive) |
---|---|
Headers | show |
Series | Selftest for cpuidle latency measurement | expand |
On 21/07/2020 14:42, Pratik Rajesh Sampat wrote: > v2: https://lkml.org/lkml/2020/7/17/369 > Changelog v2-->v3 > Based on comments from Gautham R. Shenoy adding the following in the > selftest, > 1. Grepping modules to determine if already loaded > 2. Wrapper to enable/disable states > 3. Preventing any operation/test on offlined CPUs > --- > > The patch series introduces a mechanism to measure wakeup latency for > IPI and timer based interrupts > The motivation behind this series is to find significant deviations > behind advertised latency and resisdency values Why do you want to measure for the timer and the IPI ? Whatever the source of the wakeup, the exit latency remains the same, no ? Is all this kernel-ish code really needed ? What about using a highres periodic timer and make it expires every eg. 50ms x 2400, so it is 120 secondes and measure the deviation. Repeat the operation for each idle states. And in order to make it as much accurate as possible, set the program affinity on a CPU and isolate this one by preventing other processes to be scheduled on and migrate the interrupts on the other CPUs. That will be all userspace code, no?
Hello Daniel, On 21/07/20 8:27 pm, Daniel Lezcano wrote: > On 21/07/2020 14:42, Pratik Rajesh Sampat wrote: >> v2: https://lkml.org/lkml/2020/7/17/369 >> Changelog v2-->v3 >> Based on comments from Gautham R. Shenoy adding the following in the >> selftest, >> 1. Grepping modules to determine if already loaded >> 2. Wrapper to enable/disable states >> 3. Preventing any operation/test on offlined CPUs >> --- >> >> The patch series introduces a mechanism to measure wakeup latency for >> IPI and timer based interrupts >> The motivation behind this series is to find significant deviations >> behind advertised latency and resisdency values > Why do you want to measure for the timer and the IPI ? Whatever the > source of the wakeup, the exit latency remains the same, no ? > > Is all this kernel-ish code really needed ? > > What about using a highres periodic timer and make it expires every eg. > 50ms x 2400, so it is 120 secondes and measure the deviation. Repeat the > operation for each idle states. > > And in order to make it as much accurate as possible, set the program > affinity on a CPU and isolate this one by preventing other processes to > be scheduled on and migrate the interrupts on the other CPUs. > > That will be all userspace code, no? > > The kernel module may not needed now that you mention it. IPI latencies could be measured using pipes and threads using pthread_attr_setaffinity_np to control the experiment, as you suggested. This should internally fire a smp_call_function_single. The original idea was to essentially measure it as closely as possible in the kernel without involving the kernel-->userspace overhead. However, the user-space approach may not be too much of a problem as we are collecting a baseline and the delta of the latency is what we would be concerned about anyways! With respect to measuring both timers and IPI latencies: In principle yes, the exit latency should remain the same but if there is a deviation in reality we may want to measure it. I'll implement this experiment in the userspace and get back with the numbers to confirm. Thanks for your comments! Best, Pratik > >