get_exec_time_per_workload.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #!/usr/bin/env python
  2. import sys, os, stat
  3. app_start = int(sys.argv[1])
  4. apps = int(sys.argv[2])
  5. num_of_apps = int(sys.argv[3])
  6. MS = 1000000
  7. mean_agent = 0
  8. #out_filename = './app_times.txt'
  9. #fd_w = open(out_filename, 'w')
  10. work_dir = sys.argv[4]
  11. scen_num = sys.argv[5]
  12. workld = int(sys.argv[6])
  13. app_logs_dir = work_dir + 'app_logs_' + str(num_of_apps) + '_' + scen_num + '/'#sys.argv[4]
  14. worker_time_array = [0, 0, 0, 0, 0, 0, 0]
  15. worker_num_array = [0, 0, 0, 0, 0, 0, 0]
  16. for i in range(app_start,app_start + apps):
  17. input_filename = app_logs_dir + str(i) + '.txt'
  18. fd_r = open(input_filename, 'r')
  19. #[16:12:12:509177] A matrix mul is over. Remaining workload is 40 active cores = 2 //14
  20. #[16:12:12:866558] A matrix mul is over in resizing. Remaining workload is 39 active cores = 3
  21. exec_list = []
  22. one_line = fd_r.readline().split()
  23. iter_cores = 0
  24. while one_line != []:
  25. if one_line[1] == 'A':
  26. iter_fin = one_line[0].strip('[]')
  27. if iter_cores > 0: #Not first time
  28. time_m = iter_start.split(':')
  29. time_m2 = iter_fin.split(':')
  30. dif = ((int(time_m2[0]) - int(time_m[0])) * 3600 * MS) + ((int(time_m2[1]) - int(time_m[1])) * 60 * MS) + ((int(time_m2[2]) - int(time_m[2])) * MS) + ((int(time_m2[3]) - int(time_m[3])))
  31. if (dif > 0):
  32. exec_list.append([iter_cores,dif])
  33. if len(one_line) == 14:
  34. iter_cores = int(one_line[13])
  35. else:
  36. iter_cores = int(one_line[15])
  37. iter_start = iter_fin
  38. elif one_line[1] == 'Matrix':
  39. iter_fin = one_line[0].strip('[]')
  40. time_m = iter_start.split(':')
  41. time_m2 = iter_fin.split(':')
  42. dif = ((int(time_m2[0]) - int(time_m[0])) * 3600 * MS) + ((int(time_m2[1]) - int(time_m[1])) * 60 * MS) + ((int(time_m2[2]) - int(time_m[2])) * MS) + ((int(time_m2[3]) - int(time_m[3])))
  43. if (dif > 0):
  44. exec_list.append([iter_cores,dif])
  45. one_line = fd_r.readline().split()
  46. fd_r.close()
  47. #for i in exec_list:
  48. # print str(i[0]) + ' -> ' + str(i[1])
  49. #print '\n'
  50. if workld > 1:
  51. prev_workers = -1
  52. cur_rep = 0
  53. for i in exec_list:
  54. if cur_rep == 0:
  55. workers = i[0]
  56. cur_rep = 1
  57. cur_time = i[1]
  58. else:
  59. prev_workers = workers
  60. workers = i[0]
  61. if prev_workers == workers:
  62. cur_rep += 1
  63. cur_time += i[1]
  64. if cur_rep == workld:
  65. worker_time_array[workers-1] += cur_time
  66. worker_num_array[workers-1] += 1 #+= workld
  67. #prev_workers = -1
  68. cur_rep = 0
  69. else:
  70. cur_rep = 1
  71. cur_time = i[1]
  72. else:
  73. for i in exec_list:
  74. workers = i[0]
  75. cur_time = i[1]
  76. worker_time_array[workers-1] += cur_time
  77. worker_num_array[workers-1] += 1
  78. print_str = ''
  79. for i in range(0,7):
  80. if worker_num_array[i] > 0:
  81. avg_time = worker_time_array[i] / worker_num_array[i] #* workld)
  82. else:
  83. avg_time = 0
  84. print str(i+1) + ' -> ' + str(worker_num_array[i]) + ' : ' + str(worker_time_array[i]) + ' -> ' + str(avg_time)
  85. print_str += str(avg_time) + '\n'
  86. print print_str
  87. #write_line = str(mean_idag) + '\n' + str(mean_init) + '\n' + str(mean_agent) + '\n'
  88. #fd_w.write(write_line)
  89. #fd_w.close()