Lines Matching refs:self

26 	def __init__(self, quiet=False, verbose=False, debug=False):  argument
27 self.normal = True
28 self.verbose = verbose
29 self.debug = debug
30 self.self_test = True
31 if self.debug:
32 self.verbose = True
33 if self.verbose:
36 self.normal = False
41 def __init__(self, cmd, pipe_to, output_dir="."): argument
42 self.popen = None
43 self.consumer = None
44 self.cmd = cmd
45 self.pipe_to = pipe_to
46 self.output_dir = output_dir
47 self.cmdout_name = f"{output_dir}/cmd.txt"
48 self.stdout_name = f"{output_dir}/out.txt"
49 self.stderr_name = f"{output_dir}/err.txt"
51 def Command(self): argument
52 sh_cmd = [ shlex.quote(x) for x in self.cmd ]
53 return " ".join(self.cmd)
55 def Stdout(self): argument
56 return open(self.stdout_name, "w")
58 def Stderr(self): argument
59 return open(self.stderr_name, "w")
61 def CreateOutputDir(self): argument
62 pathlib.Path(self.output_dir).mkdir(parents=True, exist_ok=True)
64 def Start(self): argument
65 if self.popen:
67 self.CreateOutputDir()
68 with open(self.cmdout_name, "w") as f:
69 f.write(self.Command())
71 stdout = self.Stdout()
72 stderr = self.Stderr()
73 if self.pipe_to:
74 self.popen = subprocess.Popen(self.cmd, stdout=subprocess.PIPE, stderr=stderr)
75 args = shlex.split(self.pipe_to)
76 self.consumer = subprocess.Popen(args, stdin=self.popen.stdout, stdout=stdout, stderr=stderr)
78 self.popen = subprocess.Popen(self.cmd, stdout=stdout, stderr=stderr)
80 def RemoveEmptyErrFile(self): argument
81 if os.path.exists(self.stderr_name):
82 if os.path.getsize(self.stderr_name) == 0:
83 os.unlink(self.stderr_name)
85 def Errors(self): argument
86 if os.path.exists(self.stderr_name):
87 if os.path.getsize(self.stderr_name) != 0:
91 def TidyUp(self): argument
92 self.RemoveEmptyErrFile()
94 def RawPollWait(self, p, wait): argument
99 def Poll(self, wait=False): argument
100 if not self.popen:
102 result = self.RawPollWait(self.popen, wait)
103 if self.consumer:
105 result = self.RawPollWait(self.consumer, wait)
107 self.popen.kill()
112 self.TidyUp()
115 def Wait(self): argument
116 return self.Poll(wait=True)
118 def Kill(self): argument
119 if not self.popen:
121 self.popen.kill()
122 if self.consumer:
123 self.consumer.kill()
293 def Init(self, opt_element=-1, value_element=-1, opt_pos=-1, value_pos=-1, error=None): argument
294 self.opt_element = opt_element # list element that contains option
295 self.value_element = value_element # list element that contains option value
296 self.opt_pos = opt_pos # string position of option
297 self.value_pos = value_pos # string position of value
298 self.error = error # error message string
300 def __init__(self, args, short_name, long_name, default=None): argument
301 self.args = list(args)
302 self.default = default
311 self.Init(pos, pos + 1, 0, 0)
313 self.Init(error = f"-{short_name} option missing value")
315 self.Init(pos, pos, 0, 2)
320 self.Init(pos, pos + 1, 0, 0)
322 self.Init(error = f"--{long_name} option missing value")
324 self.Init(pos, pos, 0, n + 1)
326 self.Init(error = f"--{long_name} option expected '='")
336 self.Init(pos, pos + 1, ipos, 0)
338 self.Init(error = f"-{short_name} option missing value")
340 self.Init(pos, pos, ipos, ipos + 1)
342 self.Init()
344 def Value(self): argument
345 if self.opt_element >= 0:
346 if self.opt_element != self.value_element:
347 return self.args[self.value_element]
349 return self.args[self.value_element][self.value_pos:]
350 return self.default
352 def Remove(self, args): argument
353 if self.opt_element == -1:
355 if self.opt_element != self.value_element:
356 del args[self.value_element]
357 if self.opt_pos:
358 args[self.opt_element] = args[self.opt_element][:self.opt_pos]
360 del args[self.opt_element]
404 def __init__(self, cpu): argument
405 self.cpu = cpu
406 self.sample_cnt = 0
407 self.time_ranges = None
408 self.interval = 0
409 self.interval_remaining = 0
410 self.remaining = 0
411 self.tr_pos = 0
716 def __init__(self, a): argument
718 setattr(self, arg_name, getattr(a, arg_name))
719 self.orig_nr = self.nr
720 self.orig_cmd = list(self.cmd)
721 self.perf = self.cmd[0]
722 if os.path.exists(self.output_dir):
724 if self.jobs < 0 or self.nr < 0 or self.interval < 0:
726 if self.nr != 0 and self.interval != 0:
728 if self.jobs == 0:
729 self.jobs = NumberOfCPUs()
730 if self.nr == 0 and self.interval == 0:
731 if self.per_cpu:
732 self.nr = 1
734 self.nr = self.jobs
736 def Init(self): argument
737 if self.verbosity.debug:
738 print("cmd", self.cmd)
739 self.file_name = DetermineInputFileName(self.cmd)
740 self.hdr = ReadHeader(self.perf, self.file_name)
741 self.hdr_dict = ParseHeader(self.hdr)
742 self.cmd_line = HeaderField(self.hdr_dict, "cmdline")
744 def ExtractTimeInfo(self): argument
745 self.min_time = TimeVal(HeaderField(self.hdr_dict, "time of first sample"), 0)
746 self.max_time = TimeVal(HeaderField(self.hdr_dict, "time of last sample"), 0)
747 self.time_str = ExtractPerfOption(self.cmd, "", "time")
748 self.time_ranges = ParseTimeStr(self.time_str, self.min_time, self.max_time)
749 if self.verbosity.debug:
750 print("time_ranges", self.time_ranges)
752 def ExtractCPUInfo(self): argument
753 if self.per_cpu:
754 nr_cpus = int(HeaderField(self.hdr_dict, "nrcpus avail"))
755 self.cpu_str = ExtractPerfOption(self.cmd, "C", "cpu")
756 if self.cpu_str == None or self.cpu_str == "":
757 self.cpus = [ x for x in range(nr_cpus) ]
759 self.cpus = ParseCPUStr(self.cpu_str, nr_cpus)
761 self.cpu_str = None
762 self.cpus = [-1]
763 if self.verbosity.debug:
764 print("cpus", self.cpus)
766 def IsIntelPT(self): argument
767 return self.cmd_line.find("intel_pt") >= 0
769 def SplitTimeRanges(self): argument
770 if self.IsIntelPT() and self.interval == 0:
771 self.split_time_ranges_for_each_cpu = \
772 SplitTimeRangesByTraceDataDensity(self.time_ranges, self.cpus, self.orig_nr,
773 self.orig_cmd, self.file_name, self.per_cpu,
774 self.min_size, self.min_interval, self.verbosity)
775 elif self.nr:
776self.split_time_ranges_for_each_cpu = [ SplitTimeRangesIntoN(self.time_ranges, self.nr, self.min_i…
778self.split_time_ranges_for_each_cpu = [ SplitTimeRangesByInterval(self.time_ranges, self.interval)…
780 def CheckTimeRanges(self): argument
781 for tr in self.split_time_ranges_for_each_cpu:
784 if new_tr != self.time_ranges:
785 if self.verbosity.debug:
790 def OpenTimeRangeEnds(self): argument
791 for time_ranges in self.split_time_ranges_for_each_cpu:
792 OpenTimeRangeEnds(time_ranges, self.min_time, self.max_time)
794 def CreateWorkList(self): argument
795self.worklist = CreateWorkList(self.cmd, self.pipe_to, self.output_dir, self.cpus, self.split_time…
797 def PerfDataRecordedPerCPU(self): argument
798 if "--per-thread" in self.cmd_line.split():
802 def DefaultToPerCPU(self): argument
804 if self.no_per_cpu:
806 if not self.PerfDataRecordedPerCPU():
810 if self.IsIntelPT():
814 def Config(self): argument
815 self.Init()
816 self.ExtractTimeInfo()
817 if not self.per_cpu:
818 self.per_cpu = self.DefaultToPerCPU()
819 if self.verbosity.debug:
820 print("per_cpu", self.per_cpu)
821 self.ExtractCPUInfo()
822 self.SplitTimeRanges()
823 if self.verbosity.self_test:
824 self.CheckTimeRanges()
826 self.OpenTimeRangeEnds()
827 self.CreateWorkList()
829 def Run(self): argument
830 if self.dry_run:
831 print(len(self.worklist),"jobs:")
832 for w in self.worklist:
835 result = RunWork(self.worklist, self.jobs, verbosity=self.verbosity)
836 if self.verbosity.verbose: