mirror of
https://github.com/ARM-software/devlib.git
synced 2025-01-31 02:00:45 +00:00
Merge pull request #68 from bjackman/cpuidle-trace-all
ftrace: Poke all CPUs before collecting trace
This commit is contained in:
commit
02696e99e0
@ -46,6 +46,18 @@ cpufreq_trace_all_frequencies() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# CPUIdle Utility Functions
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
cpuidle_wake_all_cpus() {
|
||||||
|
CPU_PATHS=/sys/devices/system/cpu/cpu[0-9]*
|
||||||
|
MASK=0x1; for F in $CPU_PATHS; do
|
||||||
|
$BUSYBOX taskset $MASK true
|
||||||
|
MASK=$($BUSYBOX printf '0x%x' $((MASK * 2)))
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# FTrace Utility Functions
|
# FTrace Utility Functions
|
||||||
################################################################################
|
################################################################################
|
||||||
@ -185,6 +197,9 @@ cpufreq_get_all_governors)
|
|||||||
cpufreq_trace_all_frequencies)
|
cpufreq_trace_all_frequencies)
|
||||||
cpufreq_trace_all_frequencies $*
|
cpufreq_trace_all_frequencies $*
|
||||||
;;
|
;;
|
||||||
|
cpuidle_wake_all_cpus)
|
||||||
|
cpuidle_wake_all_cpus $*
|
||||||
|
;;
|
||||||
cgroups_get_attributes)
|
cgroups_get_attributes)
|
||||||
cgroups_get_attributes $*
|
cgroups_get_attributes $*
|
||||||
;;
|
;;
|
||||||
|
@ -152,3 +152,9 @@ class Cpuidle(Module):
|
|||||||
for state in self.get_states(cpu):
|
for state in self.get_states(cpu):
|
||||||
state.disable()
|
state.disable()
|
||||||
|
|
||||||
|
def perturb_cpus(self):
|
||||||
|
"""
|
||||||
|
Momentarily wake each CPU. Ensures cpu_idle events in trace file.
|
||||||
|
"""
|
||||||
|
output = self.target._execute_util('cpuidle_wake_all_cpus')
|
||||||
|
print(output)
|
||||||
|
@ -170,6 +170,9 @@ class FtraceCollector(TraceCollector):
|
|||||||
if 'cpufreq' in self.target.modules:
|
if 'cpufreq' in self.target.modules:
|
||||||
self.logger.debug('Trace CPUFreq frequencies')
|
self.logger.debug('Trace CPUFreq frequencies')
|
||||||
self.target.cpufreq.trace_frequencies()
|
self.target.cpufreq.trace_frequencies()
|
||||||
|
if 'cpuidle' in self.target.modules:
|
||||||
|
self.logger.debug('Trace CPUIdle states')
|
||||||
|
self.target.cpuidle.perturb_cpus()
|
||||||
# Enable kernel function profiling
|
# Enable kernel function profiling
|
||||||
if self.functions:
|
if self.functions:
|
||||||
self.target.execute('echo nop > {}'.format(self.current_tracer_file),
|
self.target.execute('echo nop > {}'.format(self.current_tracer_file),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user