예제 #1
0
파일: getsolid.py 프로젝트: tomaso/goove
def print_summary(start, end, snodes, neg_snodes, comment):
#  alljobs = Job.objects.filter(jobslots__node__in=snodes,comp_time__range=(start,end)).exclude(jobslots__node__in=neg_snodes)
  alljobs = Job.objects.filter(jobslots__node__in=snodes,comp_time__range=(start,end)).distinct()
  sq = Queue.objects.get(name='solid',server__name='torque.farm.particle.cz')
  isq = Queue.objects.get(name='isolid',server__name='torque.farm.particle.cz')
  nisolidjobs = alljobs.filter(queue=sq)
  isolidjobs = alljobs.filter(queue=isq)
  solidjobs = nisolidjobs  #|isolidjobs

  str = "Summary from %s to %s for %s:" % (start, end, comment)
  print
  print str
  print "=" * len(str)

  do_agg(alljobs, "All jobs")
  do_agg(solidjobs, "Solid jobs")
  return
  # this is damn slow :(
  # see http://groups.google.com/group/django-users/browse_thread/thread/87cc286019c7d57c
  agg = Job.objects.filter(pk__in=alljobs).aggregate(
    Sum("walltime"), Sum("cput"), 
    Count("pk"), SumTimeDiff("comp_time", diff="start_time"),
    AvgTimeDiff("start_time", diff="qtime")
    )
  solidagg = Job.objects.filter(pk__in=solidjobs).aggregate(
    Sum("walltime"), Sum("cput"), 
    Count("pk"), SumTimeDiff("comp_time", diff="start_time"),
    AvgTimeDiff("start_time", diff="qtime")
    )

  print "All jobs"
  print "--------"

  print "Job count: %d\nCputime: %s\nWalltime: %s\nReal walltime: %s\nAverage wait time: %s" % (agg['pk__count'], secondsToHours(agg['cput__sum']), secondsToHours(agg['walltime__sum']), secondsToHours(int(agg['comp_time__start_time__sumtimediff'])), secondsToHours(int(agg['start_time__qtime__avgtimediff'])) )
  print "Jobs real walltime * jobslots: %s" % secondsToHours(sum([j.jobslots.count()*tosec(j.comp_time-j.start_time) for j in alljobs]))
  print

  print "Solid jobs"
  print "--------"

  print "Job count: %d\nCputime: %s\nWalltime: %s\nReal walltime: %s\nAverage wait time: %s" % (solidagg['pk__count'], secondsToHours(solidagg['cput__sum']), secondsToHours(solidagg['walltime__sum']), secondsToHours(int(solidagg['comp_time__start_time__sumtimediff'])), secondsToHours(int(solidagg['start_time__qtime__avgtimediff'])) )
  print "Jobs real walltime * jobslots: %s" % secondsToHours(sum([j.jobslots.count()*tosec(j.comp_time-j.start_time) for j in solidjobs]))
  print
예제 #2
0
파일: getsolid.py 프로젝트: tomaso/goove
def do_agg(jobs, header):
  print header
  print "-"*len(header)

  count_jobs = sum_cput = sum_walltime = sum_realwalltime = sum_realwalltime_slots = sum_waittime = 0
  for j in jobs:
    count_jobs += 1
    sum_cput += j.cput
    sum_walltime += j.walltime
    realwalltime = tosec(j.comp_time - j.start_time)
    sum_realwalltime += realwalltime
    sum_realwalltime_slots += (j.jobslots.count()*realwalltime)
    sum_waittime += tosec(j.start_time - j.qtime)

  avg_waittime = sum_waittime/count_jobs

  print "Job count: %d" % count_jobs
  print "Cputime: %s" % secondsToHours(sum_cput)
  print "Walltime: %s" % secondsToHours(sum_walltime)
  print "Real walltime: %s" % secondsToHours(sum_realwalltime)
  print "Real walltime*jobslots: %s" % secondsToHours(sum_realwalltime_slots)
  print "Avg wait time: %s" % secondsToHours(avg_waittime)
  print