show speed summary after benchmarking

pull/15/head
unknown 2023-06-08 08:46:57 -05:00
parent e61af7ec3a
commit 45daddfc2a
No known key found for this signature in database
GPG Key ID: CA376082283AF69A
2 changed files with 17 additions and 10 deletions

View File

@ -409,8 +409,6 @@ class Worker:
if self.master is True: if self.master is True:
return -1 return -1
logger.info(f"benchmarking worker '{self.uuid}'")
def ipm(seconds: float) -> float: def ipm(seconds: float) -> float:
""" """
Determines the rate of images per minute. Determines the rate of images per minute.
@ -446,7 +444,7 @@ class Worker:
f"minute\n") f"minute\n")
results.append(sample_ipm) results.append(sample_ipm)
elif i == warmup_samples - 1: elif i == warmup_samples - 1:
logger.info(f"{self.uuid} finished warming up\n") logger.debug(f"{self.uuid} finished warming up\n")
# average the sample results for accuracy # average the sample results for accuracy
ipm_sum = 0 ipm_sum = 0
@ -454,7 +452,7 @@ class Worker:
ipm_sum += ipm ipm_sum += ipm
avg_ipm = math.floor(ipm_sum / samples) avg_ipm = math.floor(ipm_sum / samples)
logger.info(f"Worker '{self.uuid}' average ipm: {avg_ipm}") logger.debug(f"Worker '{self.uuid}' average ipm: {avg_ipm}")
self.avg_ipm = avg_ipm self.avg_ipm = avg_ipm
# noinspection PyTypeChecker # noinspection PyTypeChecker
self.response = None self.response = None

View File

@ -238,6 +238,7 @@ class World:
t = Thread(target=benchmark_wrapped, args=(worker, ), name=f"{worker.uuid}_benchmark") t = Thread(target=benchmark_wrapped, args=(worker, ), name=f"{worker.uuid}_benchmark")
benchmark_threads.append(t) benchmark_threads.append(t)
t.start() t.start()
logger.info(f"benchmarking worker '{worker.uuid}'")
# wait for all benchmarks to finish and update stats on newly benchmarked workers # wait for all benchmarks to finish and update stats on newly benchmarked workers
if len(benchmark_threads) > 0: if len(benchmark_threads) > 0:
@ -253,6 +254,8 @@ class World:
# save benchmark results to workers.json # save benchmark results to workers.json
json.dump(workers_info, worker_info_file, indent=3) json.dump(workers_info, worker_info_file, indent=3)
logger.info(self.speed_summary())
def get_current_output_size(self) -> int: def get_current_output_size(self) -> int:
""" """
@ -266,19 +269,25 @@ class World:
return num_images return num_images
# TODO broken def speed_summary(self) -> str:
def print_speed_stats(self):
""" """
Prints workers by their ipm in descending order. Returns string listing workers by their ipm in descending order.
""" """
workers_copy = copy.deepcopy(self.workers) workers_copy = copy.deepcopy(self.workers)
workers_copy.sort(key=lambda w: w.avg_ipm, reverse=True)
total_ipm = 0
for worker in workers_copy:
total_ipm += worker.avg_ipm
i = 1 i = 1
workers_copy.sort(key=lambda w: w.avg_ipm, reverse=True) output = "World composition:\n"
print("Worker speed hierarchy:")
for worker in workers_copy: for worker in workers_copy:
print(f"{i}. worker '{worker}' - {worker.avg_ipm} ipm") output += f"{i}. '{worker.uuid}'({worker}) - {worker.avg_ipm:.2f} ipm\n"
i += 1 i += 1
output += f"total: ~{total_ipm:.2f} ipm"
return output
def __str__(self): def __str__(self):
# print status of all jobs # print status of all jobs