diff --git a/README.md b/README.md index ece7ee3..1046297 100644 --- a/README.md +++ b/README.md @@ -387,7 +387,11 @@ scp records/wikipedia nancy.g5k:tlsbench/records/ LD_PRELOAD="/home/pengelib/tlsbench/libssl.so.3.6 /home/pengelib/tlsbench/libcrypto.so.3.6" ./netreplay --help ``` -https://api.grid5000.fr/stable/sites/lyon/metrics?nodes=dahu-6&metrics=wattmetre_power_watt,bmc_node_power_watt&start_time=2026-02-26T14:00&end_time=2026-02-26T14:40 +#### Wattmetre + +API timestamp at Paris time. + +https://api.grid5000.fr/stable/sites/nancy/metrics?nodes=gros-69&metrics=bmc_node_power_watt&start_time=2026-02-26T14:00&end_time=2026-02-26T14:40 ## Problems diff --git a/exp.py b/exp.py index 82e1b44..5c33951 100644 --- a/exp.py +++ b/exp.py @@ -208,10 +208,11 @@ CONFIGS = { # i7-4790 -> i5-7300HQ "i5": { "experiments": [ - "impl-cipher-ver", - "impl-cert-ver", - "impl-kex-ver", - "zrtt", + #"impl-cipher-ver", + #"impl-cert-ver", + #"impl-kex-ver", + #"zrtt", + "realistic", ], "sides": [ "client", @@ -222,7 +223,7 @@ CONFIGS = { True, ], "records": [ - { "filename": "wikipedia", "repeat": 2000 }, + { "filename": "wikipedia", "repeat": 1000 }, ], "repo_dir": "/home/tuxmain/reps/tlsbench", "exp_dir": "/dev/shm/exp", @@ -237,9 +238,12 @@ CONFIGS = { "rapl": True, "sa": True, "listen_port": 8080, - "idle": "idle - - - - - - - - - 600.000194311142 0.0 1822 6541 1.3880000000000052 304283035 -", + "idle": "idle - - - - - - - - - 1772446308.8950071 1772447508.8950853 1200.000078201294 0 1747 6555 2.4309999999999974 564883014 -", "notify_listen": ("0.0.0.0", 8090), "notify_addr": "192.168.3.1:8090", + "ld_preload": { + "openssl": "/home/tuxmain/reps/tlsbench/libssl.so.3:/home/tuxmain/reps/tlsbench/libcrypto.so.3", + } }, "i5-local": { "experiments": [ @@ -294,7 +298,7 @@ CONFIGS = { "log_backup_dir": "/home/pengelib", "local_addr": "TODO", "remote_addr": "172.16.52.6", - "remote_ssh": "pengelib@nova-6", + "remote_ssh": "pengelib@gros-69", "remote_psw": None, "remote_repo_dir": "/home/pengelib/tlsbench", "wattmeter": False, @@ -302,11 +306,11 @@ CONFIGS = { "rapl": False, "sa": False, "listen_port": 8080, - "idle": "idle - - - - - - - - - 600.000194311142 0.0 1822 6541 1.3880000000000052 304283035 -",#TODO + "idle": "idle - - - - - - - - - 1772205368.593937 1772206568.6941307 1200.1001937389374 0 298843 2217803 0 0 -",#TODO "notify_listen": ("0.0.0.0", 8090), "notify_addr": "TODO:8090", "ld_preload": { - "openssl": "LD_PRELOAD=/home/pengelib/openssl-openssl-3.6.1/libssl.so.3:/home/pengelib/openssl-openssl-3.6.1/libcrypto.so.3", + "openssl": "/home/pengelib/openssl-openssl-3.6.1/libssl.so.3:/home/pengelib/openssl-openssl-3.6.1/libcrypto.so.3", } }, } @@ -362,11 +366,11 @@ CERT_SIGN_ALGS = [ "rsa2048", "rsa3072", "rsa4096", # widely used ] IMPLS = [ - "aws-lc", # Amazon's crypto widely used in Rust stuff - "boring", # Google's fork of OpenSSL used in Chrome and Android + #"aws-lc", # Amazon's crypto widely used in Rust stuff + #"boring", # Google's fork of OpenSSL used in Chrome and Android #"graviola", # New crypto in Rust "openssl", # widely used - "ring", # used in most Rust stuff + #"ring", # used in most Rust stuff #"symcrypt", # Microsoft's crypto #"wolfcrypt" # used in embedded (won't build with rpxy for now) ] @@ -651,10 +655,10 @@ def run_netreplay_server(ssh, exp_dir, repo_dir, record, listen_addr, listen_por if tls: cmd.append("--tls") cmdline = " ".join(cmd) - print(cmdline) + #print(cmdline) return ssh_run_bg(ssh, cmdline, env) -def run_netreplay_client(ssh, exp_dir, repo_dir, record, remote_addr, remote_port, tls, impl, certs_dir, only_record=None, ciphers=None, kexes=None, earlydata="0", debug=False, notify_addr=None): +def run_netreplay_client(ssh, exp_dir, repo_dir, record, remote_addr, remote_port, tls, impl, certs_dir, only_record=None, ciphers=None, kexes=None, earlydata="0", debug=False, notify_addr=None, ld_preload=None, skip_verif=False): if exp_dir[-1] != "/": exp_dir += "/" repo_dir = repo_dir.removesuffix("/") @@ -674,8 +678,10 @@ def run_netreplay_client(ssh, exp_dir, repo_dir, record, remote_addr, remote_por cmd += ["--record", only_record] if notify_addr != None: cmd += ["-n", notify_addr] + if skip_verif: + cmd.append("-s") cmdline = " ".join(cmd) - print(cmdline) + #print(cmdline) return ssh_run_bg(ssh, cmdline, env) # Run with or without SSH @@ -693,9 +699,9 @@ def ssh_run(ssh, cmd, env={}, **kwargs): # Run with or without SSH def ssh_run_bg(ssh, cmd, env={}, **kwargs): + print(cmd) if ssh == None: # As long as there is no argument containing a space (escaped or quoted), we're fine - print(cmd) return subprocess.Popen(cmd.split(" "), env=env) else: # https://stackoverflow.com/questions/8775598/how-to-start-a-background-process-with-nohup-using-fabric @@ -924,6 +930,7 @@ def run_exp(config, only_record=None, idle=False, shutdown=False, debug=False): debug=debug, notify_addr=config["notify_addr"], ld_preload=config["ld_preload"] if "ld_preload" in config else None, + skip_verif=True, ) prof_filename = "-" diff --git a/g5kwatt.py b/g5kwatt.py new file mode 100644 index 0000000..b02235a --- /dev/null +++ b/g5kwatt.py @@ -0,0 +1,49 @@ +import getpass, time, requests + +def fetch(site, node, start, stop, user, psw): + start_str = time.strftime("%Y-%m-%dT%H:%M", time.localtime(int(start))) + stop_str = time.strftime("%Y-%m-%dT%H:%M", time.localtime(int(stop+61))) + auth = requests.auth.HTTPBasicAuth(user, psw) + resp = requests.get(f"https://api.grid5000.fr/stable/sites/{site}/metrics?nodes={node}&metrics=bmc_node_power_watt&start_time={start_str}&end_time={stop_str}", auth=auth) + if resp.status_code != 200: + print("Status: ", resp.status_code) + print(resp.content) + exit(1) + data = resp.json() + + energy = 0 + last_power = None + last_time = 0 + for sample in data: + t = time.mktime(time.strptime(sample["timestamp"], "%Y-%m-%dT%H:%M:%S.%f%z")) + if last_power != None: + energy += last_power * (t - last_time) + last_power = None + if t >= start and t <= stop: + last_power = sample["value"] + last_time = t + return energy + +def get_psw(): + psw = None + try: + f = open("/dev/shm/g5k_psw", "r") + psw = f.read() + f.close() + except: + pass + if psw: + return psw + psw = getpass.getpass("Psw: ") + f = open("/dev/shm/g5k_psw", "w") + f.write(psw) + f.close() + return psw + +def main(): + user = "pengelib" + psw = get_psw() + print(fetch("nancy", "gros-69", 1772205368.593937, 1772206568.6941307, user, psw)) + +if __name__ == "__main__": + main()