openssl-static

This commit is contained in:
Pascal Engélibert 2026-03-12 15:20:52 +01:00
commit 3ef86c3593
3 changed files with 130 additions and 92 deletions

View file

@ -48,7 +48,7 @@ COL = {
"cert": "alg",
"kex": "kex",
"ed": "ed",
"side": "setup",
"side": "side",
"record": "record",
}
# Physical units by object
@ -225,16 +225,18 @@ def make_log_plot(logs, exp, criterion, side, obj, record, machine=None, version
for log in logs:
if log["exp"] == exp and log["record"] == record and log["side"] == side:
#ver = VER_LABEL[log["cipher"]]
#if log[COL[criterion]]+"/"+ver not in ciphers:
# ciphers[log[COL[criterion]]+"/"+ver] = {}
#ciphers[log[COL[criterion]]+"/"+ver][log["impl"]] = float(log[COL[obj]]) - idle_val * float(log["time"])
if version != None and VER_LABEL[log["cipher"]] != version:
continue
if log[COL[criterion]] not in ciphers:
ciphers[log[COL[criterion]]] = {}
n = float(log.get("n", "1000"))
ciphers[log[COL[criterion]]][log["impl"]] = (float(log[COL[obj]]) * conv_factor - idle_val * float(log["time"])) / n
if version == None:
ver = VER_LABEL[log["cipher"]]
if log[COL[criterion]]+"/"+ver not in ciphers:
ciphers[log[COL[criterion]]+"/"+ver] = {}
ciphers[log[COL[criterion]]+"/"+ver][log["impl"]] = (float(log[COL[obj]]) * conv_factor - idle_val * float(log["time"])) / n
else:
if log[COL[criterion]] not in ciphers:
ciphers[log[COL[criterion]]] = {}
ciphers[log[COL[criterion]]][log["impl"]] = (float(log[COL[obj]]) * conv_factor - idle_val * float(log["time"])) / n
if log["impl"] not in impls:
impls.append(log["impl"])
impls.sort()
@ -244,22 +246,24 @@ def make_log_plot(logs, exp, criterion, side, obj, record, machine=None, version
for impl in impls:
if impl not in ciphers[cipher]:
ciphers[cipher][impl] = 0
#cipher_parts = cipher.split("/")
#f.write("{}({}) - {}\n".format(
# ALG_LABEL[cipher_parts[0]],
# cipher_parts[1],
# " ".join([
# str(ciphers[cipher][impl])
# for impl in impls
# ]),
#))
f.write("{} - {}\n".format(
ALG_LABEL[cipher],
" ".join([
str(ciphers[cipher][impl])
for impl in impls
]),
))
if version == None:
cipher_parts = cipher.split("/")
f.write("{}({}) - {}\n".format(
ALG_LABEL[cipher_parts[0]],
cipher_parts[1],
" ".join([
str(ciphers[cipher][impl])
for impl in impls
]),
))
else:
f.write("{} - {}\n".format(
ALG_LABEL[cipher],
" ".join([
str(ciphers[cipher][impl])
for impl in impls
]),
))
f.close()
gnuplot_histogram(
object=obj,
@ -392,7 +396,7 @@ def make_profile_plot_grouped(logs, exp, criterion, side, record, group_by, no_f
)
# Are CPU and energy proportional
def make_linear_regression(logs):
def make_linear_regression(logs, cat="impl"):
idle_cpu = None
idle_energy = None
for log in logs:
@ -410,11 +414,11 @@ def make_linear_regression(logs):
sample_energy = float(log["Wh"]) - idle_energy * float(log["time"])
samples_cpu["global"].append(sample_cpu)
samples_energy["global"].append(sample_energy)
if log["impl"] not in samples_cpu:
samples_cpu[log["impl"]] = []
samples_energy[log["impl"]] = []
samples_cpu[log["impl"]].append(sample_cpu)
samples_energy[log["impl"]].append(sample_energy)
if log[cat] not in samples_cpu:
samples_cpu[log[cat]] = []
samples_energy[log[cat]] = []
samples_cpu[log[cat]].append(sample_cpu)
samples_energy[log[cat]].append(sample_energy)
print("Pearson correlation coefficients (energy/cpu)")
results = {}
for impl in samples_cpu:
@ -441,7 +445,7 @@ def cmp_versions(logs, exps, criteria, objs):
idle_val = {obj:float(log[COL[obj]]) / float(log["time"]) for obj in objs}
for log in logs:
if log["exp"] not in exps or log["setup"] == "none":
if log["exp"] not in exps or log["tls"] == "0":
continue
ver = VER_LABEL[log["cipher"]]
if ver not in ciphers:
@ -510,19 +514,20 @@ if __name__ == "__main__":
no_flamegraph = "-f" in sys.argv
machine = getargv("-m", None)
maketitle = "-t" not in sys.argv
version = getargv("-v", None)
if cmd == "log":
for side in ["client", "server"]:
for record in records:
make_log_plot(logs, "impl-cipher-ver", "cipher", side, "cpu", record, machine=machine, maketitle=maketitle, version="1.3")
make_log_plot(logs, "impl-cipher-ver", "cipher", side, "energy", record, machine=machine, maketitle=maketitle, version="1.3")
make_log_plot(logs, "impl-cert-ver", "cert", side, "cpu", record, machine=machine, maketitle=maketitle, version="1.3")
make_log_plot(logs, "impl-cert-ver", "cert", side, "energy", record, machine=machine, maketitle=maketitle, version="1.3")
make_log_plot(logs, "impl-kex-ver", "kex", side, "cpu", record, machine=machine, maketitle=maketitle, version="1.3")
make_log_plot(logs, "impl-kex-ver", "kex", side, "energy", record, machine=machine, maketitle=maketitle, version="1.3")
make_log_plot(logs, "impl-cipher-ver", "cipher", side, "cpu", record, machine=machine, maketitle=maketitle, version=version)
make_log_plot(logs, "impl-cipher-ver", "cipher", side, "energy", record, machine=machine, maketitle=maketitle, version=version)
make_log_plot(logs, "impl-cert-ver", "cert", side, "cpu", record, machine=machine, maketitle=maketitle, version=version)
make_log_plot(logs, "impl-cert-ver", "cert", side, "energy", record, machine=machine, maketitle=maketitle, version=version)
make_log_plot(logs, "impl-kex-ver", "kex", side, "cpu", record, machine=machine, maketitle=maketitle, version=version)
make_log_plot(logs, "impl-kex-ver", "kex", side, "energy", record, machine=machine, maketitle=maketitle, version=version)
make_log_plot(logs, "zrtt", "ed", side, "cpu", record, machine=machine, maketitle=maketitle, version="1.3")
make_log_plot(logs, "zrtt", "ed", side, "energy", record, machine=machine, maketitle=maketitle, version="1.3")
#cmp_versions(logs, ["impl-cipher-ver", "impl-cert-ver", "impl-kex-ver"], ["side", "cipher", "cert", "kex", "record"], ["cpu", "energy"])
cmp_versions(logs, ["impl-cipher-ver", "impl-cert-ver", "impl-kex-ver"], ["side", "cipher", "cert", "kex", "record"], ["cpu", "energy"])
elif cmd == "prof":
for side in ["client", "server"]:
for record in records:
@ -536,4 +541,4 @@ if __name__ == "__main__":
from scipy import stats
import matplotlib.pyplot as plt
import numpy as np
make_linear_regression(logs)
make_linear_regression(logs, "alg")