Exemplo n.º 1
0
 def _open_trace(self):
     self._babeltrace_version = trace_utils.read_babeltrace_version()
     if self._babeltrace_version >= self._BT_INTERSECT_VERSION:
         traces = TraceCollection(intersect_mode=self._args.intersect_mode)
     else:
         if self._args.intersect_mode:
             self._print('Warning: intersect mode not available - '
                         'disabling')
             self._print('         Use babeltrace {} or later to '
                         'enable'.format(
                             trace_utils.BT_INTERSECT_VERSION))
             self._args.intersect_mode = False
         traces = TraceCollection()
     handles = traces.add_traces_recursive(self._args.path, 'ctf')
     if handles == {}:
         self._gen_error('Failed to open ' + self._args.path, -1)
     self._handles = handles
     self._traces = traces
     self._ts_begin = traces.timestamp_begin
     self._ts_end = traces.timestamp_end
     self._process_date_args()
     self._read_tracer_version()
     if not self._args.skip_validation:
         self._check_lost_events()
     if not self._check_period_args():
         self._gen_error('Invalid period parameters')
Exemplo n.º 2
0
 def _open_trace(self):
     self._babeltrace_version = trace_utils.read_babeltrace_version()
     if self._babeltrace_version >= self._BT_INTERSECT_VERSION:
         traces = TraceCollection(intersect_mode=self._args.intersect_mode)
     else:
         if self._args.intersect_mode:
             self._print('Warning: intersect mode not available - '
                         'disabling')
             self._print('         Use babeltrace {} or later to '
                         'enable'.format(trace_utils.BT_INTERSECT_VERSION))
             self._args.intersect_mode = False
         traces = TraceCollection()
     handles = traces.add_traces_recursive(self._args.path, 'ctf')
     if handles == {}:
         self._gen_error('Failed to open ' + self._args.path, -1)
     self._handles = handles
     self._traces = traces
     self._ts_begin = traces.timestamp_begin
     self._ts_end = traces.timestamp_end
     self._process_date_args()
     self._read_tracer_version()
     if not self._args.skip_validation:
         self._check_lost_events()
     if not self._check_period_args():
         self._gen_error('Invalid period parameters')
Exemplo n.º 3
0
 def _open_trace(self):
     traces = TraceCollection()
     handle = traces.add_traces_recursive(self._arg_path, "ctf")
     if handle == {}:
         self._gen_error("Failed to open " + self._arg_path, -1)
     self._handle = handle
     self._traces = traces
     common.process_date_args(self)
Exemplo n.º 4
0
    def _open_trace(self, path):
        traces = TraceCollection()
        handles = traces.add_traces_recursive(path, 'ctf')
        if not handles:
            print('Failed to open ' + path, file=sys.stderr)
            sys.exit(-1)

        self._handles = handles
        self._traces = traces
Exemplo n.º 5
0
    def _open_trace(self, path):
        traces = TraceCollection()
        handles = traces.add_traces_recursive(path, 'ctf')
        if not handles:
            print('Failed to open ' + path, file=sys.stderr)
            sys.exit(-1)

        self._handles = handles
        self._traces = traces
Exemplo n.º 6
0
 def _open_trace(self):
     traces = TraceCollection()
     handles = traces.add_traces_recursive(self._args.path, 'ctf')
     if handles == {}:
         self._gen_error('Failed to open ' + self._args.path, -1)
     self._handles = handles
     self._traces = traces
     self._process_date_args()
     if not self._args.skip_validation:
         self._check_lost_events()
Exemplo n.º 7
0
 def _open_trace(self):
     traces = TraceCollection()
     handle = traces.add_traces_recursive(self._arg_path, "ctf")
     if handle == {}:
         self._gen_error("Failed to open " + self._arg_path, -1)
     self._handle = handle
     self._traces = traces
     common.process_date_args(self)
     if not self._arg_skip_validation:
         self._check_lost_events()
Exemplo n.º 8
0
 def _open_trace(self):
     traces = TraceCollection()
     handles = traces.add_traces_recursive(self._arg_path, 'ctf')
     if handles == {}:
         self._gen_error('Failed to open ' + self._arg_path, -1)
     self._handles = handles
     self._traces = traces
     self._process_date_args()
     if not self._arg_skip_validation:
         self._check_lost_events()
Exemplo n.º 9
0
class CTFBabeltrace():
    def __init__(self, path):
        self.traces = dict()
        self.tc = TraceCollection()
        if self.tc:
            # add traces to the collection
            if self.tc.add_traces_recursive(path, "ctf") is None:
                raise RuntimeError('Cannot add trace')
        else:
            print("no TraceCollection available...")

    def get_events(self):
        if self.tc:
            for event in self.tc.events:
                yield event
    parser = argparse.ArgumentParser(description='Trace parser')
    parser.add_argument('path', metavar="<path/to/trace>", help='Trace path')
    parser.add_argument('-t', '--test', type=int, help='Test to validate')
    parser.add_argument('-p', '--pid', type=int, help='PID of the app')
    args = parser.parse_args()

    if not args.test:
        print("Need to pass a test to validate (-t)")
        sys.exit(1)

    if not args.pid:
        print("Need to pass the PID to check (-p)")
        sys.exit(1)

    traces = TraceCollection()
    handle = traces.add_traces_recursive(args.path, "ctf")
    if handle is None:
        sys.exit(1)

    t = None

    if args.test == 1:
        t = Test1(traces, args.pid)
    elif args.test == 2:
        t = Test2(traces, args.pid)
    elif args.test == 3:
        t = Test3(traces, args.pid)
    elif args.test == 4:
        t = Test4(traces, args.pid)
    elif args.test == 5:
        t = Test5(traces, args.pid)
Exemplo n.º 11
0
    def reset_total(self, start_ts):
        for tid in self.state.tids.keys():
            self.state.tids[tid].allocated_pages = 0
            self.state.tids[tid].freed_pages = 0
        self.state.mm["allocated_pages"] = 0
        self.state.mm["freed_pages"] = 0

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Memory usage analysis')
    parser.add_argument('path', metavar="<path/to/trace>", help='Trace path')
    parser.add_argument('-r', '--refresh', type=int,
                        help='Refresh period in seconds', default=0)
    parser.add_argument('--top', type=int, default=10,
                        help='Limit to top X TIDs (default = 10)')
    parser.add_argument('--no-progress', action="store_true",
                        help='Don\'t display the progress bar')
    args = parser.parse_args()

    traces = TraceCollection()
    handle = traces.add_traces_recursive(args.path, "ctf")
    if handle is None:
        sys.exit(1)

    c = MemTop(traces)

    c.run(args)

    for h in handle.values():
        traces.remove_trace(h)