def _cpu_timing(self, pid): records = [] now = time.time() jiffies_per_sec = os.sysconf(os.sysconf_names['SC_CLK_TCK']) statfile = "/proc/%d/stat" % pid with open(statfile, "r") as fh: stat = fh.readline() fields = stat.split(" ") stime = int(fields[13]) utime = int(fields[14]) return TimingRecord(pid, now, 1000 * (stime + utime) / jiffies_per_sec)
def _vcpu_timing(self, pid, tid_list): records = [] now = time.time() jiffies_per_sec = os.sysconf(os.sysconf_names['SC_CLK_TCK']) for tid in tid_list: statfile = "/proc/%d/task/%d/stat" % (pid, tid) with open(statfile, "r") as fh: stat = fh.readline() fields = stat.split(" ") stime = int(fields[13]) utime = int(fields[14]) records.append(TimingRecord(tid, now, 1000 * (stime + utime) / jiffies_per_sec)) return records
def _get_timings(self, vm): log = vm.get_log() if not log: return [] if self._debug: print(log) regex = r"[^\s]+\s\((\d+)\):\sINFO:\s(\d+)ms\scopied\s\d+\sGB\sin\s(\d+)ms" matcher = re.compile(regex) records = [] for line in log.split("\n"): match = matcher.match(line) if match: records.append(TimingRecord(int(match.group(1)), int(match.group(2)) / 1000.0, int(match.group(3)))) return records