def _start_pidstat_for_new_pids(self, pids): started = {} for pid in pids: if not self.monitored_pids.has_key(pid): print "Auto monitoring for pid %d started!" % (pid) started[pid] = start_pid_monitoring(self.out_dir, self.interval, pid) return started
def main(interval_sec, num_rounds, pids, automonitoring_on): print "Checking if sysstat is installed and in path..." sysstat_ok = check_command_execution(['sar', '-V']) if not sysstat_ok: return stop_execution(1, "Sysstat not installed or sar not in path or permission problem.") print "Checking if sysstat is installed and in path...OK" print "Creating output directory..." (out_dir, created) = create_out_dir() if created: print "..output directory: ", out_dir else: stop_execution(3, "Cannot create output directory.") print "Creating output directory...OK" print "Starting os level monitoring..." spawns = start_os_monitoring(out_dir, interval_sec) print "Starting os level monitoring...OK" if pids: for pid in pids.split(','): print "Starting monitoring for pid %s" % (pid) spawns += start_pid_monitoring(out_dir, interval_sec, int(pid)) monitor = None if automonitoring_on: print "Automatic monitoring for interesting processes is ON" th = MonitoringThread(out_dir, interval_sec) th.setDaemon(True) th.start() monitor = th print "Sleeping for %s rounds of %s sec..." % (num_rounds, interval_sec) # no idea what to wait for, so let' sleep while num_rounds>0: time.sleep(interval_sec) num_rounds = num_rounds - 1 # hmmm, should we not stop those? print "Stopping sar/pidstat processes..." for p in spawns: p.terminate() if monitor: monitor.join() print "Stopping sar/pidstat processes...OK" print "Finished" return 0