Exemple #1
0
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
Exemple #2
0
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')