import ray import numpy as np import time import dumb_raylet #ray.connect("localhost:50051") object_store = dumb_raylet.ObjectStore() executor = dumb_raylet.SimpleExecutor(object_store) task_servicer = dumb_raylet.TaskServicer(object_store, executor) executor.set_task_servicer(task_servicer) def test_timing(): @ray.remote def empty_function(): pass @ray.remote def trivial_function(): return 1 # Measure the time required to submit a remote task to the scheduler. elapsed_times = [] for _ in range(1000): start_time = time.time() empty_function.remote() end_time = time.time() elapsed_times.append(end_time - start_time) elapsed_times = np.sort(elapsed_times) average_elapsed_time = sum(elapsed_times) / 1000 print("Time required to submit an empty function call:") print(" Average: {}".format(average_elapsed_time)) print(" 90th percentile: {}".format(elapsed_times[900])) print(" 99th percentile: {}".format(elapsed_times[990])) print(" worst: {}".format(elapsed_times[999])) # average_elapsed_time should be about 0.00038. # Measure the time required to submit a remote task to the scheduler # (where the remote task returns one value). elapsed_times = [] for _ in range(1000): start_time = time.time() trivial_function.remote() end_time = time.time() elapsed_times.append(end_time - start_time) elapsed_times = np.sort(elapsed_times) average_elapsed_time = sum(elapsed_times) / 1000 print("Time required to submit a trivial function call:") print(" Average: {}".format(average_elapsed_time)) print(" 90th percentile: {}".format(elapsed_times[900])) print(" 99th percentile: {}".format(elapsed_times[990])) print(" worst: {}".format(elapsed_times[999])) # Measure the time required to submit a remote task to the scheduler # and get the result. elapsed_times = [] for _ in range(1000): start_time = time.time() x = trivial_function.remote() ray.get(x) end_time = time.time() elapsed_times.append(end_time - start_time) elapsed_times = np.sort(elapsed_times) average_elapsed_time = sum(elapsed_times) / 1000 print("Time required to submit a trivial function call and get the " "result:") print(" Average: {}".format(average_elapsed_time)) print(" 90th percentile: {}".format(elapsed_times[900])) print(" 99th percentile: {}".format(elapsed_times[990])) print(" worst: {}".format(elapsed_times[999])) # average_elapsed_time should be about 0.0013. # Measure the time required to do do a put. elapsed_times = [] for _ in range(1000): start_time = time.time() ray.put(1) end_time = time.time() elapsed_times.append(end_time - start_time) elapsed_times = np.sort(elapsed_times) average_elapsed_time = sum(elapsed_times) / 1000 print("Time required to put an int:") print(" Average: {}".format(average_elapsed_time)) print(" 90th percentile: {}".format(elapsed_times[900])) print(" 99th percentile: {}".format(elapsed_times[990])) print(" worst: {}".format(elapsed_times[999])) # average_elapsed_time should be about 0.00087. def run(): test_timing() if __name__ == "__main__": run()