From b61a7d83beb4494255724e9078873402d54cff67 Mon Sep 17 00:00:00 2001 From: victoryang00 Date: Wed, 13 Mar 2024 23:02:21 -0700 Subject: [PATCH] add more result --- artifact/common_util.py | 49 +++- artifact/result/optimistic.pdf | Bin 78928 -> 74557 bytes artifact/result/optimistic_computing.csv | 5 + artifact/result/optimistic_computing.pdf | Bin 0 -> 12609 bytes artifact/result/optimistic_cpu.pdf | Bin 0 -> 13684 bytes artifact/result/optimistic_memory.pdf | Bin 0 -> 12541 bytes artifact/run_with_cpu_monitoring.sh | 14 +- artifact/run_with_cpu_monitoring_nocommand.sh | 8 +- artifact/run_with_energy_monitoring.sh | 17 +- artifact/run_with_energy_monitoring_mac.sh | 17 +- artifact/usecase_burst_computing.py | 226 +++++++++++++++-- artifact/usecase_optimistic_computing.py | 235 +++++++++++++++--- 12 files changed, 467 insertions(+), 104 deletions(-) create mode 100644 artifact/result/optimistic_computing.csv create mode 100644 artifact/result/optimistic_computing.pdf create mode 100644 artifact/result/optimistic_cpu.pdf create mode 100644 artifact/result/optimistic_memory.pdf diff --git a/artifact/common_util.py b/artifact/common_util.py index c47c4c6..5cee1d8 100644 --- a/artifact/common_util.py +++ b/artifact/common_util.py @@ -3,11 +3,37 @@ import asyncio import time -# pwd = "/Users/victoryang00/Documents/project/MVVM-bench/" -pwd = "/mnt/MVVM" +pwd = "/Users/victoryang00/Documents/project/MVVM-bench/" +# pwd = "/mnt/MVVM" slowtier = "epyc" burst = "mac" +def parse_time(time_string): + # Split the time string into components + components = time_string.split(":") + hours = int(components[0]) + minutes = int(components[1]) + seconds, milliseconds = map(int, components[2].split(".")) + + # Calculate the total seconds + total_seconds = hours * 3600 + minutes * 60 + seconds + milliseconds / 1000 + + return total_seconds + + +def parse_time_no_msec(time_string): + # Split the time string into components + components = time_string.split(":") + hours = int(components[0]) + minutes = int(components[1]) + seconds = int(components[2]) + + # Calculate the total seconds + total_seconds = hours * 3600 + minutes * 60 + seconds + if total_seconds < 10000: + print(time_string) + raise ValueError + return total_seconds def get_func_index(func, file): cmd = ["wasm2wat", "--enable-all", file] @@ -363,6 +389,7 @@ def run_checkpoint_restore_slowtier( f"script -q /dev/null -c 'ssh -t {slowtier} {pwd}/build/MVVM_restore -t {pwd}/build/bench/{aot_file1} {extra2}' >> MVVM_restore.1.out &" ) os.system(f"ssh -t {slowtier} {pwd}/artifact/run_with_cpu_monitoring_nocommand.sh MVVM_restore &") + # print(f"ssh -t {slowtier} bash -c 'cd {pwd}/build && {pwd}/artifact/run_with_cpu_monitoring_nocommand.sh MVVM_restore' &") os.system( f"script -q /dev/null -c './MVVM_restore -t ./bench/{aot_file1} {extra3}' >> MVVM_restore.out &" ) @@ -372,10 +399,10 @@ def run_checkpoint_restore_slowtier( os.system( f"../artifact/run_with_cpu_monitoring.sh ./MVVM_checkpoint -t ./bench/{aot_file1} {' '.join(['-a ' + str(x) for x in arg1])} -e {env} {extra1} &" ) - os.system("mv MVVM_checkpoint.out MVVM_checkpoint.1.out") - os.system("mv MVVM_checkpoint.ps.out MVVM_checkpoint.ps.1.out") os.system("sleep 10") os.system(f"pkill -SIGINT -f MVVM_checkpoint") + os.system("mv MVVM_checkpoint.out MVVM_checkpoint.1.out") + os.system("mv MVVM_checkpoint.ps.out MVVM_checkpoint.ps.1.out") os.system( f"../artifact/run_with_cpu_monitoring.sh ./MVVM_checkpoint -t ./bench/{aot_file} {' '.join(['-a ' + str(x) for x in arg])} -e {env}" ) @@ -384,6 +411,7 @@ def run_checkpoint_restore_slowtier( # print(checkpoint_result, restore_result) # Return a combined result or just the checkpoint result as needed os.system("sleep 100") + os.system(f"scp -r {slowtier}:{pwd}/build/MVVM_restore.ps.out ./MVVM_restore.ps.1.out") cmd = f"cat ./MVVM_checkpoint.out ./MVVM_checkpoint.1.out ./MVVM_restore.1.out ./MVVM_restore.out" cmd = cmd.split() @@ -407,6 +435,11 @@ def run_checkpoint_restore_burst( extra1: str = "", extra2: str = "", extra3: str = "", + extra4: str = "", + extra5: str = "", + extra6: str = "", + extra7: str = "", + extra8: str = "", ): # Execute run_checkpoint and capture its result res = [] @@ -416,7 +449,7 @@ def run_checkpoint_restore_burst( os.system( f"script -q /dev/null -c 'ssh -t {burst} {pwd}/build/MVVM_restore -t {pwd}/build/bench/{aot_file1} {extra2}' >> MVVM_restore.1.out &" ) - os.system(f"ssh -t {burst} ../artifact/run_with_energy_monitoring.sh MVVM_restore 1 &") + os.system(f"ssh -t {burst} bash -c ../artifact/run_with_energy_monitoring.sh MVVM_restore 1 &") os.system( f"script -q /dev/null -c './MVVM_restore -t ./bench/{aot_file1} {extra3}' >> MVVM_restore.out &" ) @@ -431,10 +464,10 @@ def run_checkpoint_restore_burst( os.system("sleep 10") os.system(f"pkill -SIGINT -f MVVM_checkpoint") os.system( - f"../artifact/run_with_energy_monitoring_mac.sh ./MVVM_checkpoint -t ./bench/{aot_file} {' '.join(['-a ' + str(x) for x in arg])} -e {env}" - ) + f"../artifact/run_with_energy_monitoring_mac.sh ./MVVM_checkpoint -t ./bench/{aot_file} {' '.join(['-a ' + str(x) for x in arg])} -e {env} {extra4}" + ) #redis os.system(f"ssh -t {burst} pkill -SIGINT -f MVVM_restore") - + os.system(f"") # print(checkpoint_result, restore_result) # Return a combined result or just the checkpoint result as needed os.system("sleep 100") diff --git a/artifact/result/optimistic.pdf b/artifact/result/optimistic.pdf index cc1df6231d0f57816c3ebdba0de91b6af31f0d72..9d805ad31f0628f3af219206e1ce46096e14e6fa 100644 GIT binary patch delta 67406 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 B`Ii6y delta 71458 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

i>gSQ^?gAfoUlQK5av#G8U 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 EKRl&qDgXcg literal 0 HcmV?d00001 diff --git a/artifact/result/optimistic_cpu.pdf b/artifact/result/optimistic_cpu.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bd7e6f79bf4a695acfb2536c75d7fe1ee393f414 GIT binary patch literal 13684 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 literal 0 HcmV?d00001 diff --git a/artifact/result/optimistic_memory.pdf b/artifact/result/optimistic_memory.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6b3adf3356573ef9f9b4a6f7e5b303c3183eeb20 GIT binary patch literal 12541 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 GVE+eK)O=b1 literal 0 HcmV?d00001 diff --git a/artifact/run_with_cpu_monitoring.sh b/artifact/run_with_cpu_monitoring.sh index 8c87c8f..116bcab 100644 --- a/artifact/run_with_cpu_monitoring.sh +++ b/artifact/run_with_cpu_monitoring.sh @@ -2,25 +2,19 @@ echo "$@" "$@" &> $1.out & pid1=$! +echo $pid1 # echo $pid > /sys/fs/cgroup/memory/my_cgroup/cgroup.procs # echo $(($first_arg * 1024 * 1024 * 1024)) > /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes +date >> $1.ps.out while true; do line=$(ps auxh -q $pid1) if [ "$line" == "" ]; then break fi - date >> $1.ps.out echo $line >>$1.ps.out - for child in $(pgrep -P $pid1); do - line=$(ps auxh -q $child) - if [ "$line" == "" ]; then - continue - fi - date >> $1.ps.out - echo $line >>$1.ps.out - done - sleep 0.01 + sleep 0.5 if ! ps -p $pid1 >/dev/null; then sleep 0.5 + exit 0 fi done \ No newline at end of file diff --git a/artifact/run_with_cpu_monitoring_nocommand.sh b/artifact/run_with_cpu_monitoring_nocommand.sh index b2f3fe5..e03bb31 100644 --- a/artifact/run_with_cpu_monitoring_nocommand.sh +++ b/artifact/run_with_cpu_monitoring_nocommand.sh @@ -1,18 +1,20 @@ #!/bin/bash echo "$@" -pid1=`ps aux | grep $1 | grep -v grep | awk '{print $2}'|tail -n 1` +pid1=`ps aux | grep $1 | grep -v grep | grep -v nocommand | grep -v ssh | awk '{print $2}'|head -n 1` echo $pid1 +sleep 2 # echo $pid > /sys/fs/cgroup/memory/my_cgroup/cgroup.procs # echo $(($first_arg * 1024 * 1024 * 1024)) > /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes +date >> $1.ps.out while true; do line=$(ps auxh -q $pid1) if [ "$line" == "" ]; then break fi - date >> $1.ps.out echo $line >>$1.ps.out - sleep 0.01 + sleep 0.5 if ! ps -p $pid1 >/dev/null; then sleep 0.5 + exit 0 fi done \ No newline at end of file diff --git a/artifact/run_with_energy_monitoring.sh b/artifact/run_with_energy_monitoring.sh index 28d97e9..260293a 100644 --- a/artifact/run_with_energy_monitoring.sh +++ b/artifact/run_with_energy_monitoring.sh @@ -1,28 +1,21 @@ #!/bin/bash echo "$@" -pid1=`ps aux | grep $1 | grep -v grep | awk '{print $2}'|tail -n 1` +pid1=`ps aux | grep $1 | grep -v grep | awk '{print $2}'|head -n 1` # echo $pid > /sys/fs/cgroup/memory/my_cgroup/cgroup.procs # echo $(($first_arg * 1024 * 1024 * 1024)) > /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes -pcm-power 1 -m -1 &> $1.$2.energy.out & +pcm-power 1 -m -1 &> $1.energy.$2.out & pid2=$! +date >> $1.ps.$2.out while true; do line=$(ps auxh -q $pid1) if [ "$line" == "" ]; then break fi - date >> $1.$2.ps.out - echo $line >> $1.$2.ps.out - for child in $(pgrep -P $pid1); do - line=$(ps auxh -q $child) - if [ "$line" == "" ]; then - continue - fi - date >> $1.$2.ps.out - echo $line >> $1.$2.ps.out - done + echo $line >> $1.ps.$2.out sleep 0.01 if ! ps -p $pid1 >/dev/null; then sleep 0.5 sudo kill -9 $pid2 + exit 0 fi done \ No newline at end of file diff --git a/artifact/run_with_energy_monitoring_mac.sh b/artifact/run_with_energy_monitoring_mac.sh index 2137d71..3c879f1 100644 --- a/artifact/run_with_energy_monitoring_mac.sh +++ b/artifact/run_with_energy_monitoring_mac.sh @@ -1,28 +1,21 @@ #!/bin/bash echo "$@" -pid1=`ps aux | grep $1 | grep -v grep | awk '{print $2}'|tail -n 1` +pid1=`ps aux | grep $1 | grep -v grep | awk '{print $2}'|head -n 1` # echo $pid > /sys/fs/cgroup/memory/my_cgroup/cgroup.procs # echo $(($first_arg * 1024 * 1024 * 1024)) > /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes -sudo asitop --show_cores &> $1.$2.energy.out & +sudo asitop --show_cores &> $1.energy.$2.out & pid2=$! +date >> $1.ps.$2.out while true; do line=$(ps auxh -q $pid1) if [ "$line" == "" ]; then break fi - date >> $1.$2.ps.out - echo $line >> $1.$2.ps.out - for child in $(pgrep -P $pid1); do - line=$(ps auxh -q $child) - if [ "$line" == "" ]; then - continue - fi - date >> $1.$2.ps.out - echo $line >> $1.$2.ps.out - done + echo $line >> $1.ps.$2.out sleep 0.01 if ! ps -p $pid1 >/dev/null; then sleep 0.5 sudo kill -9 $pid2 + exit 0 fi done \ No newline at end of file diff --git a/artifact/usecase_burst_computing.py b/artifact/usecase_burst_computing.py index 6521904..b4af2e0 100644 --- a/artifact/usecase_burst_computing.py +++ b/artifact/usecase_burst_computing.py @@ -3,11 +3,16 @@ from multiprocessing import Pool from matplotlib import pyplot as plt import numpy as np +from common_util import parse_time, parse_time_no_msec from collections import defaultdict -ip = ["128.114.53.32", "192.168.0.1"] -port = 12346 +ip = ["128.114.53.32", "128.114.59.134"] +port = 12345 +port2 = 12346 new_port = 1235 +new_port1 = 1238 +new_port2 = 1236 +new_port12 = 1239 cmd = [ "redis", # low priority task "rgbd_tum", # high priority task @@ -44,6 +49,7 @@ def get_cloud_result(): exec_time = line.split(" ")[-2] print(exec, exec_time) results.append((exec, exec_time)) # discover 4 aot_variant + return results def get_edge_result(): @@ -55,13 +61,7 @@ def get_edge_result(): results1.append( pool.apply_async( common_util.run_slowtier, - ( - aot, - arg[i], - envs[i], - f"-i {ip[0]} -e {port}", - f"-o {ip[1]} -s {port}", - ), + (aot, arg[i], envs[i]), ) ) # print the results @@ -73,6 +73,7 @@ def get_edge_result(): exec_time = line.split(" ")[-2] print(exec, exec_time) results.append((exec, exec_time)) # discover 4 aot_variant + return results def get_snapshot_overhead(): @@ -98,6 +99,7 @@ def get_snapshot_overhead(): exec_time = line.split(" ")[-2] print(exec, exec_time) results.append((exec, exec_time)) # discover 4 aot_variant + return results def get_burst_compute(): @@ -113,7 +115,13 @@ def get_burst_compute(): envs[0], f"-o {ip[1]} -s {port}", f"-i {ip[1]} -e {port} -o {ip[0]} -s {new_port}", - f"-i {ip[0]} -e {new_port}", + f"-i {ip[0]} -e {new_port} -o {ip[1]} -s {new_port1}", + f"-i {ip[1]} -e {new_port1} -o {ip[0]} -s {port}", + f"-o {ip[0]} -s {port2}", + f"-i {ip[0]} -e {port2} -o {ip[1]} -s {new_port2}", + f"-i {ip[1]} -e {new_port2} -o {ip[0]} -s {new_port12}", + f"-i {ip[0]} -e {new_port12} -o {ip[0]} -s {port2}", + ) return results1 @@ -230,22 +238,192 @@ def plot(file_name): # %% -def plog_time(): - pass +def plot_time(reu, checkpoint, checkpoint1, restore, restore1): + # get from reu + # start time -> end time -> start time + reu = reu.split("\\n") + state = 0 + time = [] + exec_time = [[], [], [], []] + for line in reu: + try: + if line.__contains__("Trial"): + to_append = float(line.split(" ")[-1].replace("\\r", "")) + if to_append < 0.001 and to_append > 0: + exec_time[state].append(to_append) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + if line.__contains__("Snapshot ") or line.__contains__("Execution "): + time.append(parse_time(line.split(" ")[1].replace("]", ""))) + print("time ", time) + state += 1 + except: + print(line) + # print(exec_time) + # print(time) + # record time + fig, ax = plt.subplots() + base = time[1] - sum(exec_time[1]) + + time_spots2 = [time[0] - sum(exec_time[0]) - base] + + for i in exec_time[0]: + # Add the current increment to the last time spot + new_time_spot = time_spots2[-1] + i + # Append the new time spot to the sequence + time_spots2.append(new_time_spot) + time_spots2.pop(0) + + time_spots = [time[1] - sum(exec_time[1]) - base] + for i in exec_time[1]: + # Add the current increment to the last time spot + new_time_spot = time_spots[-1] + i + # Append the new time spot to the sequence + time_spots.append(new_time_spot) + time_spots.pop(0) + to_pop = len(time_spots) + time_spots.append(time[2] - sum(exec_time[2]) - base) + for i in exec_time[2]: + # Add the current increment to the last time spot + new_time_spot = time_spots[-1] + i + # Append the new time spot to the sequence + time_spots.append(new_time_spot) + time_spots.pop(len(time_spots) - 1) + + to_pop = len(time_spots) + time_spots.append(time[3] - sum(exec_time[3]) - base) + for i in exec_time[3]: + # Add the current increment to the last time spot + new_time_spot = time_spots[-1] + i + # Append the new time spot to the sequence + time_spots.append(new_time_spot) + time_spots.pop(to_pop - 1) + print(time[3] - sum(exec_time[3])) + ax.plot(time_spots, exec_time[1] + exec_time[2] + exec_time[3], "blue") + ax.plot(time_spots2, exec_time[0], "r") + ax.set_xlabel("Time (s)") + ax.set_ylabel("Average Trial Time (s)") + plt.savefig("burst.pdf") + + cpu = [] + memory = [] + exec_time_checkpoint = [] + cpu1 = [] + memory1 = [] + exec_time_checkpoint1 = [] + checkpoint = checkpoint.split("\n") + checkpoint1 = checkpoint1.split("\n") + restore = restore.split("\n") + restore1 = restore1.split("\n") + + for line in checkpoint1: + try: + if line.__contains__("2024"): + exec_time_checkpoint.append(parse_time_no_msec(line.split(" ")[3])) + cpu1.append(0) + memory1.append(0) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + else: + if float(line.split(" ")[2]) > 10: + cpu1.append(float(line.split(" ")[2])) + memory1.append(float(line.split(" ")[5])) + exec_time_checkpoint.append(exec_time_checkpoint[-1] + 0.5) + + except: + print(line) + for line in checkpoint1: + try: + if line.__contains__("2024"): + exec_time_checkpoint1.append( + parse_time_no_msec(line.split(" ")[3]) - 10 + ) + cpu.append(0) + memory.append(0) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + else: + if float(line.split(" ")[2]) > 10: + cpu.append(float(line.split(" ")[2])) + memory.append(float(line.split(" ")[5])) + exec_time_checkpoint1.append(exec_time_checkpoint1[-1] + 0.5) + + except: + print(line) + print(len(exec_time_checkpoint), len(cpu)) + for line in restore: + try: + if line.__contains__("2024"): + exec_time_checkpoint.append(parse_time_no_msec(line.split(" ")[3])) + cpu.append(0) + memory.append(0) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + else: + if float(line.split(" ")[2]) > 10: + cpu.append(float(line.split(" ")[2])) + memory.append(float(line.split(" ")[5])) + exec_time_checkpoint.append(exec_time_checkpoint[-1] + 0.5) + + except: + print(line) + print(len(exec_time_checkpoint), len(cpu)) + for line in restore1: + try: + if line.__contains__("2024"): + exec_time_checkpoint.append(parse_time_no_msec(line.split(" ")[3])) + cpu.append(0) + memory.append(0) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + else: + if float(line.split(" ")[2]) > 10: + cpu.append(float(line.split(" ")[2])) + memory.append(float(line.split(" ")[5])) + exec_time_checkpoint.append(exec_time_checkpoint[-1] + 0.5) + + except: + print(line) + print(exec_time_checkpoint) + ax.plot(exec_time_checkpoint, cpu, "b") + ax.plot(exec_time_checkpoint1, cpu1, "r") + ax.set_xlabel("Time (s)") + ax.set_ylabel("Average CPU (percentage)") + plt.savefig("burst_cpu.pdf") + fig, ax = plt.subplots() + ax.plot(exec_time_checkpoint, memory, "b") + ax.plot(exec_time_checkpoint1, memory1, "r") + ax.set_xlabel("Time (s)") + ax.set_ylabel("Average Memory (B)") + plt.savefig("burst_memory.pdf") + # parse energy if __name__ == "__main__": - fasttier = get_cloud_result() - slowtier = get_edge_result() - snapshot = get_snapshot_overhead() - print("fasttier = ", fasttier) - print("slowtier = ", slowtier) - print("snapshot = ", snapshot) - # plot skew - write_to_csv("burst_computing.csv") - - results = read_from_csv("burst_computing.csv") + # fasttier = get_cloud_result() + # slowtier = get_edge_result() + # snapshot = get_snapshot_overhead() + # print("fasttier = ", fasttier) + # print("slowtier = ", slowtier) + # print("snapshot = ", snapshot) + # # plot skew + # write_to_csv("burst_computing.csv") + + # results = read_from_csv("burst_computing.csv") + # plot(results) reu = get_burst_compute() + with open("burst.txt", "w") as f: + f.write(str(reu)) + reu = "" + with open("burst.txt", "r") as f: + reu = f.read() + with open("MVVM_checkpoint.ps.1.out") as f: + checkpoint1 = f.read() + with open("MVVM_checkpoint.ps.out") as f: + checkpoint = f.read() + with open("MVVM_restore.ps.1.out") as f: + restore1 = f.read() + with open("MVVM_restore.ps.out") as f: + restore = f.read() - plot(results) - plog_time(results) + plot_time(reu, checkpoint, checkpoint1, restore, restore1) diff --git a/artifact/usecase_optimistic_computing.py b/artifact/usecase_optimistic_computing.py index 18c17dd..eff138e 100644 --- a/artifact/usecase_optimistic_computing.py +++ b/artifact/usecase_optimistic_computing.py @@ -1,10 +1,11 @@ import csv import common_util +from common_util import parse_time, parse_time_no_msec from multiprocessing import Pool from matplotlib import pyplot as plt import numpy as np from collections import defaultdict -import json +import sys ip = ["128.114.53.32", "128.114.59.234"] port = 12346 @@ -231,17 +232,7 @@ def plot(file_name): plt.savefig("optimisitc_computing.pdf") # %% -def parse_time(time_string): - # Split the time string into components - components = time_string.split(':') - hours = int(components[0]) - minutes = int(components[1]) - seconds, milliseconds = map(int, components[2].split('.')) - - # Calculate the total seconds - total_seconds = hours * 3600 + minutes * 60 + seconds + milliseconds / 1000 - - return total_seconds + def plot_time(reu): # get from reu @@ -249,36 +240,36 @@ def plot_time(reu): reu = reu.split("\\n") state = 0 time = [] - exec_time = [[],[],[],[]] + exec_time = [[], [], [], []] for line in reu: try: if line.__contains__("Trial"): - to_append = float(line.split(" ")[-1].replace("\\r","")) - if to_append<0.001 and to_append>0: + to_append = float(line.split(" ")[-1].replace("\\r", "")) + if to_append < 0.001 and to_append > 0: exec_time[state].append(to_append) # print(exec_time) # print("exec_time ",exec_time[-1]) if line.__contains__("Snapshot ") or line.__contains__("Execution "): - time.append(parse_time(line.split(" ")[1].replace("]",""))) - print("time ",time) + time.append(parse_time(line.split(" ")[1].replace("]", ""))) + print("time ", time) state += 1 except: print(line) # print(exec_time) - + # print(time) # record time fig, ax = plt.subplots() - base = time[0]-sum(exec_time[0]) - time_spots2 = [time[1]-sum(exec_time[1])-base] + base = time[0] - sum(exec_time[0]) + time_spots2 = [time[1] - sum(exec_time[1]) - base] for i in exec_time[1]: # Add the current increment to the last time spot new_time_spot = time_spots2[-1] + i # Append the new time spot to the sequence time_spots2.append(new_time_spot) time_spots2.pop(0) - - time_spots = [time[0]-sum(exec_time[0])-base] + + time_spots = [time[0] - sum(exec_time[0]) - base] for i in exec_time[0]: # Add the current increment to the last time spot new_time_spot = time_spots[-1] + i @@ -286,31 +277,198 @@ def plot_time(reu): time_spots.append(new_time_spot) time_spots.pop(0) to_pop = len(time_spots) - time_spots.append(time[2]-sum(exec_time[2])-base) - + time_spots.append(time[2] - sum(exec_time[2]) - base) + for i in exec_time[2]: # Add the current increment to the last time spot new_time_spot = time_spots[-1] + i # Append the new time spot to the sequence time_spots.append(new_time_spot) - time_spots.pop(to_pop-1) - + time_spots.pop(to_pop - 1) + to_pop = len(time_spots) - time_spots.append(time[3]-sum(exec_time[3])-base) + time_spots.append(time[3] - sum(exec_time[3]) - base) for i in exec_time[3]: # Add the current increment to the last time spot new_time_spot = time_spots[-1] + i # Append the new time spot to the sequence time_spots.append(new_time_spot) - time_spots.pop(to_pop-1) - print(time[3]-sum(exec_time[3])) - ax.plot( time_spots, exec_time[0]+exec_time[2] +exec_time[3] ,"blue") + time_spots.pop(to_pop - 1) + print(time[3] - sum(exec_time[3])) + ax.plot(time_spots, exec_time[0] + exec_time[2] + exec_time[3], "blue") ax.plot(time_spots2, exec_time[1], "r") ax.set_xlabel("Time (s)") ax.set_ylabel("Average Trial Time (s)") plt.savefig("optimistic.pdf") +def plot_time(reu, checkpoint, checkpoint1, restore, restore1): + # get from reu + # start time -> end time -> start time + reu = reu.split("\\n") + state = 0 + time = [] + exec_time = [[], [], [], []] + for line in reu: + try: + if line.__contains__("Trial"): + to_append = float(line.split(" ")[-1].replace("\\r", "")) + if to_append < 0.001 and to_append > 0: + exec_time[state].append(to_append) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + if line.__contains__("Snapshot ") or line.__contains__("Execution "): + time.append(parse_time(line.split(" ")[1].replace("]", ""))) + print("time ", time) + state += 1 + except: + print(line) + # print(exec_time) + # print(time) + # record time + fig, ax = plt.subplots() + base = time[1] - sum(exec_time[1]) + + time_spots2 = [time[0] - sum(exec_time[0]) - base] + + for i in exec_time[0]: + # Add the current increment to the last time spot + new_time_spot = time_spots2[-1] + i + # Append the new time spot to the sequence + time_spots2.append(new_time_spot) + time_spots2.pop(0) + + time_spots = [time[1] - sum(exec_time[1]) - base] + for i in exec_time[1]: + # Add the current increment to the last time spot + new_time_spot = time_spots[-1] + i + # Append the new time spot to the sequence + time_spots.append(new_time_spot) + time_spots.pop(0) + to_pop = len(time_spots) + time_spots.append(time[2] - sum(exec_time[2]) - base) + for i in exec_time[2]: + # Add the current increment to the last time spot + new_time_spot = time_spots[-1] + i + # Append the new time spot to the sequence + time_spots.append(new_time_spot) + time_spots.pop(len(time_spots) - 1) + + to_pop = len(time_spots) + time_spots.append(time[3] - sum(exec_time[3]) - base) + for i in exec_time[3]: + # Add the current increment to the last time spot + new_time_spot = time_spots[-1] + i + # Append the new time spot to the sequence + time_spots.append(new_time_spot) + time_spots.pop(to_pop - 1) + print(time[3] - sum(exec_time[3])) + ax.plot(time_spots, exec_time[1] + exec_time[2] + exec_time[3], "blue") + ax.plot(time_spots2, exec_time[0], "r") + ax.set_xlabel("Time (s)") + ax.set_ylabel("Average Trial Time (s)") + plt.savefig("optimistic.pdf") + + cpu = [] + memory = [] + exec_time_checkpoint = [] + cpu1 = [] + memory1 = [] + exec_time_checkpoint1 = [] + checkpoint = checkpoint.split("\n") + checkpoint1 = checkpoint1.split("\n") + restore = restore.split("\n") + restore1 = restore1.split("\n") + + for line in checkpoint1: + try: + if line.__contains__("2024"): + exec_time_checkpoint1.append(parse_time_no_msec(line.split(" ")[3])) + cpu1.append(0) + memory1.append(0) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + else: + if float(line.split(" ")[2]) > 10: + cpu1.append(float(line.split(" ")[2])) + memory1.append(float(line.split(" ")[5])) + exec_time_checkpoint1.append(exec_time_checkpoint1[-1] + 0.5) + else: + exec_time_checkpoint[-1] = exec_time_checkpoint[-1] + 0.5 + except: + print(line) + for line in checkpoint: + try: + if line.__contains__("2024"): + exec_time_checkpoint.append( + parse_time_no_msec(line.split(" ")[3]) + ) + cpu.append(0) + memory.append(0) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + else: + if float(line.split(" ")[2]) > 10: + cpu.append(float(line.split(" ")[2])) + memory.append(float(line.split(" ")[5])) + exec_time_checkpoint.append(exec_time_checkpoint[-1] + 0.5) + else: + exec_time_checkpoint[-1] = exec_time_checkpoint[-1] + 0.5 + except: + print(line) + print(len(exec_time_checkpoint), len(cpu)) + for line in restore1: + try: + if line.__contains__("2024"): + exec_time_checkpoint.append(parse_time_no_msec(line.split(" ")[3])) + cpu.append(0) + memory.append(0) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + else: + if float(line.split(" ")[2]) > 10: + cpu.append(float(line.split(" ")[2])) + memory.append(float(line.split(" ")[5])) + exec_time_checkpoint.append(exec_time_checkpoint[-1] + 0.5) + else: + exec_time_checkpoint[-1] = exec_time_checkpoint[-1] + 0.5 + except: + print(line) + print(exec_time_checkpoint) + for line in restore: + try: + if line.__contains__("2024"): + exec_time_checkpoint.append(parse_time_no_msec(line.split(" ")[3])) + cpu.append(0) + memory.append(0) + # print(exec_time) + # print("exec_time ",exec_time[-1]) + else: + if float(line.split(" ")[2]) > 10: + cpu.append(float(line.split(" ")[2])) + memory.append(float(line.split(" ")[5])) + exec_time_checkpoint.append(exec_time_checkpoint[-1] + 0.5) + else: + exec_time_checkpoint[-1] = exec_time_checkpoint[-1] + 0.5 + except: + print(line) + print(len(exec_time_checkpoint), len(cpu)) + + fig, ax = plt.subplots() + + ax.plot(exec_time_checkpoint, cpu, "b") + ax.plot(exec_time_checkpoint1, cpu1, "r") + ax.set_xlabel("Time (s)") + ax.set_ylabel("Average CPU (percentage)") + plt.savefig("optimistic_cpu.pdf") + fig, ax = plt.subplots() + ax.plot(exec_time_checkpoint, memory, "b") + ax.plot(exec_time_checkpoint1, memory1, "r") + ax.set_xlabel("Time (s)") + ax.set_ylabel("Average Memory (B)") + plt.savefig("optimistic_memory.pdf") + + if __name__ == "__main__": # fasttier = get_fasttier_result() # slowtier = get_slowtier_result() @@ -324,12 +482,19 @@ def plot_time(reu): # results = read_from_csv("optimisitc_computing.csv") # plot(results) - reu = get_optimiztic_compute_overhead() - with open('optimistic.txt', 'w') as f: - f.write(str(reu)) + # reu = get_optimiztic_compute_overhead() + # with open("optimistic.txt", "w") as f: + # f.write(str(reu)) reu = "" with open("optimistic.txt", "r") as f: reu = f.read() + with open("MVVM_checkpoint.ps.1.out") as f: + checkpoint1 = f.read() + with open("MVVM_checkpoint.ps.out") as f: + checkpoint = f.read() + with open("MVVM_restore.ps.1.out") as f: + restore1 = f.read() + with open("MVVM_restore.ps.out") as f: + restore = f.read() # print(reu) - plot_time(reu) - + plot_time(reu, checkpoint, checkpoint1, restore, restore1)