def get_workload(wf_name): qs = BalsamJob.objects.filter(workflow=wf_name) time_data = process_job_times(qs) times, num_running = utilization_report(time_data) times = [str(t) for t in times] num_running = [int(n) for n in num_running] return times, num_running
def main(): ''' simple starter program that can be copied for use when starting a new script. ''' logging_format = '%(asctime)s %(levelname)s:%(name)s:%(message)s' logging_datefmt = '%Y-%m-%d %H:%M:%S' logging_level = logging.INFO parser = argparse.ArgumentParser(description='') parser.add_argument('-w', '--workflow', help='workflow name to analyze', required=True) parser.add_argument('--debug', dest='debug', default=False, action='store_true', help="Set Logger to DEBUG") parser.add_argument('--error', dest='error', default=False, action='store_true', help="Set Logger to ERROR") parser.add_argument('--warning', dest='warning', default=False, action='store_true', help="Set Logger to ERROR") parser.add_argument('--logfilename', dest='logfilename', default=None, help='if set, logging information will go to file') args = parser.parse_args() if args.debug and not args.error and not args.warning: logging_level = logging.DEBUG elif not args.debug and args.error and not args.warning: logging_level = logging.ERROR elif not args.debug and not args.error and args.warning: logging_level = logging.WARNING logging.basicConfig(level=logging_level, format=logging_format, datefmt=logging_datefmt, filename=args.logfilename) qs = BalsamJob.objects.filter(workflow=args.workflow) dat = process_job_times(qs) times, utils = utilization_report(dat) plt.step(times, utils, where="post") plt.waitforbuttonpress()
import matplotlib matplotlib.use('Agg') from balsam.core import models from matplotlib import pyplot as plt fig, ax = plt.subplots() plt.title('Balsam Utilization: Running Jobs v Date/Time') plt.xlabel('Time of Day (H:M)') plt.ylabel('Num. Jobs Running') times, utilization = models.utilization_report() plt.step(times, utilization, where='post') import matplotlib.dates as mdates myFmt = mdates.DateFormatter('%H:%M') ax.xaxis.set_major_formatter(myFmt) fig.autofmt_xdate() plt.savefig('balsam_util_v_time.png')