1
0
mirror of https://github.com/ARM-software/devlib.git synced 2024-10-05 18:30:50 +01:00

collector: ftrace: Use trace-cmd start -b

Avoid manually setting the buffer size since trace-cmd start can do it
directly.
This commit is contained in:
Douglas Raillard 2021-09-01 10:35:51 +01:00 committed by Marc Bonnici
parent cdceba59ba
commit 27616813ea

View File

@ -77,7 +77,6 @@ class FtraceCollector(CollectorBase):
self.tracer = tracer self.tracer = tracer
self.trace_children_functions = trace_children_functions self.trace_children_functions = trace_children_functions
self.buffer_size = buffer_size self.buffer_size = buffer_size
self.buffer_size_step = buffer_size_step
self.tracing_path = tracing_path self.tracing_path = tracing_path
self.automark = automark self.automark = automark
self.autoreport = autoreport self.autoreport = autoreport
@ -102,7 +101,6 @@ class FtraceCollector(CollectorBase):
# Setup tracing paths # Setup tracing paths
self.available_events_file = self.target.path.join(self.tracing_path, 'available_events') self.available_events_file = self.target.path.join(self.tracing_path, 'available_events')
self.available_functions_file = self.target.path.join(self.tracing_path, 'available_filter_functions') self.available_functions_file = self.target.path.join(self.tracing_path, 'available_filter_functions')
self.buffer_size_file = self.target.path.join(self.tracing_path, 'buffer_size_kb')
self.current_tracer_file = self.target.path.join(self.tracing_path, 'current_tracer') self.current_tracer_file = self.target.path.join(self.tracing_path, 'current_tracer')
self.function_profile_file = self.target.path.join(self.tracing_path, 'function_profile_enabled') self.function_profile_file = self.target.path.join(self.tracing_path, 'function_profile_enabled')
self.marker_file = self.target.path.join(self.tracing_path, 'trace_marker') self.marker_file = self.target.path.join(self.tracing_path, 'trace_marker')
@ -223,8 +221,6 @@ class FtraceCollector(CollectorBase):
return self.target.read_value(self.available_functions_file).splitlines() return self.target.read_value(self.available_functions_file).splitlines()
def reset(self): def reset(self):
if self.buffer_size:
self._set_buffer_size()
self.target.execute('{} reset'.format(self.target_binary), self.target.execute('{} reset'.format(self.target_binary),
as_root=True, timeout=TIMEOUT) as_root=True, timeout=TIMEOUT)
if self.functions: if self.functions:
@ -261,11 +257,12 @@ class FtraceCollector(CollectorBase):
self.logger.debug(e) self.logger.debug(e)
self.target.execute( self.target.execute(
'{} start {events} {tracer} {functions}'.format( '{} start {buffer_size} {events} {tracer} {functions}'.format(
self.target_binary, self.target_binary,
events=self.event_string, events=self.event_string,
tracer=tracer_string, tracer=tracer_string,
functions=tracecmd_functions, functions=tracecmd_functions,
buffer_size='-b {}'.format(self.buffer_size) if self.buffer_size is not None else '',
), ),
as_root=True, as_root=True,
) )
@ -426,29 +423,6 @@ class FtraceCollector(CollectorBase):
def mark_stop(self): def mark_stop(self):
self.target.write_value(self.marker_file, TRACE_MARKER_STOP, verify=False) self.target.write_value(self.marker_file, TRACE_MARKER_STOP, verify=False)
def _set_buffer_size(self):
target_buffer_size = self.buffer_size
attempt_buffer_size = target_buffer_size
buffer_size = 0
floor = 1000 if target_buffer_size > 1000 else target_buffer_size
while attempt_buffer_size >= floor:
self.target.write_value(self.buffer_size_file, attempt_buffer_size, verify=False)
buffer_size = self.target.read_int(self.buffer_size_file)
if buffer_size == attempt_buffer_size:
break
else:
attempt_buffer_size -= self.buffer_size_step
if buffer_size == target_buffer_size:
return
while attempt_buffer_size < target_buffer_size:
attempt_buffer_size += self.buffer_size_step
self.target.write_value(self.buffer_size_file, attempt_buffer_size, verify=False)
buffer_size = self.target.read_int(self.buffer_size_file)
if attempt_buffer_size != buffer_size:
message = 'Failed to set trace buffer size to {}, value set was {}'
self.logger.warning(message.format(target_buffer_size, buffer_size))
break
def _build_trace_events(events): def _build_trace_events(events):
event_string = ' '.join(['-e {}'.format(e) for e in events]) event_string = ' '.join(['-e {}'.format(e) for e in events])