Stan Gurtler 2 years ago
parent
commit
fb8b661b0e

BIN
prsona/plt/epoch-lambda-bandwidth-all-2.pdf


BIN
prsona/plt/epoch-lambda-cpu-all-2.pdf


BIN
prsona/plt/epoch-servers-bandwidth-half-50.pdf


BIN
prsona/plt/epoch-servers-cpu-half-50.pdf


BIN
prsona/plt/epoch-workloads-bandwidth-2-50.pdf


BIN
prsona/plt/epoch-workloads-cpu-2-50.pdf


+ 60 - 448
prsona/plt/plots.json

@@ -1,7 +1,7 @@
 [
     {
         "data": "server",
-        "dataParts": ["", "2", "10", "50"],
+        "dataParts": ["", "2", "", "50"],
         "lineVariable": "workload",
         "xVariable": "numClients",
         "whichGraph": "overall_epoch_cpu",
@@ -13,530 +13,142 @@
     },
     {
         "data": "server",
-        "dataParts": ["", "2", "10", "50"],
+        "dataParts": ["", "2", "", "50"],
         "lineVariable": "workload",
         "xVariable": "numClients",
-        "whichGraph": "overall_epoch_recv",
+        "whichGraph": "overall_epoch_total",
         "xLabel": "Number of clients",
-        "yLabel": "Data received to calculate an epoch (B)",
-        "title": "Comparing bandwidth down for epochs across workloads",
-        "fileNameStr": "epoch-workloads-recv-2-50",
+        "yLabel": "Data sent/received to calculate an epoch (B)",
+        "title": "Comparing bandwidth for epochs across workloads",
+        "fileNameStr": "epoch-workloads-bandwidth-2-50",
         "legendLoc": "upper left"
     },
     {
         "data": "server",
-        "dataParts": ["", "2", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "overall_epoch_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to calculate an epoch (B)",
-        "title": "Comparing bandwidth up for epochs across workloads",
-        "fileNameStr": "epoch-workloads-sent-2-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "2", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "vote_cpu",
-        "xLabel": "Number of clients",
-        "yLabel": "CPU time to make a new vote row (s)",
-        "title": "Comparing CPU time for making votes across workloads",
-        "fileNameStr": "vote-workloads-cpu-2-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "2", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "vote_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new vote row (B)",
-        "title": "Comparing bandwidth down for making votes across workloads",
-        "fileNameStr": "vote-workloads-recv-2-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "2", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "vote_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new vote row (B)",
-        "title": "Comparing bandwidth up for making votes across workloads",
-        "fileNameStr": "vote-workloads-sent-2-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "2", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "rep_prove_cpu",
-        "xLabel": "Number of clients",
-        "yLabel": "CPU time to make a new reputation proof (s)",
-        "title": "Comparing CPU time for making reputation proofs across workloads",
-        "fileNameStr": "rep_prove-workloads-cpu-2-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "2", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "rep_prove_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new reputation proof (B)",
-        "title": "Comparing bandwidth down for making reputation proofs across workloads",
-        "fileNameStr": "rep_prove-workloads-recv-2-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "2", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "rep_prove_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new reputation proof (B)",
-        "title": "Comparing bandwidth up for making reputation proofs across workloads",
-        "fileNameStr": "rep_prove-workloads-sent-2-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "server",
-        "dataParts": ["", "3", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "overall_epoch_cpu",
-        "xLabel": "Number of clients",
-        "yLabel": "CPU time to calculate an epoch (s)",
-        "title": "Comparing CPU time for epochs across workloads",
-        "fileNameStr": "epoch-workloads-cpu-3-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "server",
-        "dataParts": ["", "3", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "overall_epoch_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to calculate an epoch (B)",
-        "title": "Comparing bandwidth down for epochs across workloads",
-        "fileNameStr": "epoch-workloads-recv-3-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "server",
-        "dataParts": ["", "3", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "overall_epoch_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to calculate an epoch (B)",
-        "title": "Comparing bandwidth up for epochs across workloads",
-        "fileNameStr": "epoch-workloads-sent-3-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "3", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "vote_cpu",
-        "xLabel": "Number of clients",
-        "yLabel": "CPU time to make a new vote row (s)",
-        "title": "Comparing CPU time for making votes across workloads",
-        "fileNameStr": "vote-workloads-cpu-3-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "3", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "vote_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new vote row (B)",
-        "title": "Comparing bandwidth down for making votes across workloads",
-        "fileNameStr": "vote-workloads-recv-3-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "3", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "vote_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new vote row (B)",
-        "title": "Comparing bandwidth up for making votes across workloads",
-        "fileNameStr": "vote-workloads-sent-3-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "3", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "rep_prove_cpu",
-        "xLabel": "Number of clients",
-        "yLabel": "CPU time to make a new reputation proof (s)",
-        "title": "Comparing CPU time for making reputation proofs across workloads",
-        "fileNameStr": "rep_prove-workloads-cpu-3-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "3", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "rep_prove_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new reputation proof (B)",
-        "title": "Comparing bandwidth down for making reputation proofs across workloads",
-        "fileNameStr": "rep_prove-workloads-recv-3-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["", "3", "10", "50"],
-        "lineVariable": "workload",
-        "xVariable": "numClients",
-        "whichGraph": "rep_prove_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new reputation proof (B)",
-        "title": "Comparing bandwidth up for making reputation proofs across workloads",
-        "fileNameStr": "rep_prove-workloads-sent-3-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "server",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["half", "", "", "50"],
         "lineVariable": "numServers",
         "xVariable": "numClients",
         "whichGraph": "overall_epoch_cpu",
         "xLabel": "Number of clients",
         "yLabel": "CPU time to calculate an epoch (s)",
         "title": "Comparing CPU time for epochs across numbers of servers",
-        "fileNameStr": "epoch-servers-cpu-25-50",
+        "fileNameStr": "epoch-servers-cpu-half-50",
         "legendLoc": "upper left"
     },
     {
         "data": "server",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["half", "", "", "50"],
         "lineVariable": "numServers",
         "xVariable": "numClients",
-        "whichGraph": "overall_epoch_recv",
+        "whichGraph": "overall_epoch_total",
         "xLabel": "Number of clients",
-        "yLabel": "Data received to calculate an epoch (B)",
-        "title": "Comparing bandwidth down for epochs across numbers of servers",
-        "fileNameStr": "epoch-servers-recv-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "server",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numServers",
-        "xVariable": "numClients",
-        "whichGraph": "overall_epoch_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to calculate an epoch (B)",
-        "title": "Comparing bandwidth up for epochs across numbers of servers",
-        "fileNameStr": "epoch-servers-sent-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "server",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numClients",
-        "xVariable": "numServers",
-        "whichGraph": "overall_epoch_cpu",
-        "xLabel": "Number of servers",
-        "yLabel": "CPU time to calculate an epoch (s)",
-        "title": "Comparing CPU time for epochs across numbers of clients",
-        "fileNameStr": "epoch-clients-cpu-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "server",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numClients",
-        "xVariable": "numServers",
-        "whichGraph": "overall_epoch_recv",
-        "xLabel": "Number of servers",
-        "yLabel": "Data received to calculate an epoch (B)",
-        "title": "Comparing bandwidth down for epochs across numbers of clients",
-        "fileNameStr": "epoch-clients-recv-25-50",
+        "yLabel": "Data sent/received to calculate an epoch (B)",
+        "title": "Comparing bandwidth for epochs across numbers of servers",
+        "fileNameStr": "epoch-servers-bandwidth-half-50",
         "legendLoc": "upper left"
     },
     {
+
         "data": "server",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numClients",
-        "xVariable": "numServers",
-        "whichGraph": "overall_epoch_sent",
-        "xLabel": "Number of servers",
-        "yLabel": "Data sent to calculate an epoch (B)",
-        "title": "Comparing bandwidth up for epochs across numbers of clients",
-        "fileNameStr": "epoch-clients-sent-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "server",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["all", "2", "", ""],
         "lineVariable": "lambda",
         "xVariable": "numClients",
         "whichGraph": "overall_epoch_cpu",
         "xLabel": "Number of clients",
-        "yLabel": "CPU time to make a new vote row (s)",
-        "title": "Comparing CPU time for epochs across lambda",
-        "fileNameStr": "epoch-lambda-cpu-2-25",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "server",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "lambda",
-        "xVariable": "numClients",
-        "whichGraph": "overall_epoch_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new vote row (B)",
-        "title": "Comparing bandwidth down for epochs across lambda",
-        "fileNameStr": "epoch-lambda-recv-2-25",
+        "yLabel": "CPU time to calculate an epoch (s)",
+        "title": "Comparing CPU time for epochs\nacross different values of lambda",
+        "fileNameStr": "epoch-lambda-cpu-all-2",
         "legendLoc": "upper left"
     },
     {
         "data": "server",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["all", "2", "", ""],
         "lineVariable": "lambda",
         "xVariable": "numClients",
-        "whichGraph": "overall_epoch_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new vote row (B)",
-        "title": "Comparing bandwidth up for epochs across lambda",
-        "fileNameStr": "epoch-lambda-sent-2-25",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numServers",
-        "xVariable": "numClients",
-        "whichGraph": "vote_cpu",
-        "xLabel": "Number of clients",
-        "yLabel": "CPU time to make a new vote row (s)",
-        "title": "Comparing CPU time for making vote rows across numbers of servers",
-        "fileNameStr": "vote-servers-cpu-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numServers",
-        "xVariable": "numClients",
-        "whichGraph": "vote_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new vote row (B)",
-        "title": "Comparing bandwidth down for making new vote rows across numbers of servers",
-        "fileNameStr": "vote-servers-recv-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numServers",
-        "xVariable": "numClients",
-        "whichGraph": "vote_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new vote row (B)",
-        "title": "Comparing bandwidth up for making new vote rows across numbers of servers",
-        "fileNameStr": "vote-servers-sent-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numClients",
-        "xVariable": "numServers",
-        "whichGraph": "vote_cpu",
-        "xLabel": "Number of clients",
-        "yLabel": "CPU time to make a new vote row (s)",
-        "title": "Comparing CPU time for making vote rows across numbers of servers",
-        "fileNameStr": "vote-clients-cpu-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numClients",
-        "xVariable": "numServers",
-        "whichGraph": "vote_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new vote row (B)",
-        "title": "Comparing bandwidth down for making new vote rows across numbers of servers",
-        "fileNameStr": "vote-clients-recv-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numClients",
-        "xVariable": "numServers",
-        "whichGraph": "vote_sent",
+        "whichGraph": "overall_epoch_total",
         "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new vote row (B)",
-        "title": "Comparing bandwidth up for making new vote rows across numbers of servers",
-        "fileNameStr": "vote-clients-sent-25-50",
+        "yLabel": "Data sent/received to calculate an epoch (B)",
+        "title": "Comparing bandwidth for epochs\nacross different values of lambda",
+        "fileNameStr": "epoch-lambda-bandwidth-all-2",
         "legendLoc": "upper left"
     },
     {
+
         "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["vote", "2", "", ""],
         "lineVariable": "lambda",
         "xVariable": "numClients",
         "whichGraph": "vote_cpu",
         "xLabel": "Number of clients",
         "yLabel": "CPU time to make a new vote row (s)",
-        "title": "Comparing CPU time for making vote rows across lambda",
-        "fileNameStr": "vote-lambda-cpu-2-25",
+        "title": "Comparing CPU time for making vote rows\nacross different values of lambda",
+        "fileNameStr": "vote-lambda-cpu-2",
         "legendLoc": "upper left"
     },
     {
         "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["vote", "2", "", ""],
         "lineVariable": "lambda",
         "xVariable": "numClients",
-        "whichGraph": "vote_recv",
+        "whichGraph": "vote_total",
         "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new vote row (B)",
-        "title": "Comparing bandwidth down for making new vote rows across lambda",
-        "fileNameStr": "vote-lambda-recv-2-25",
+        "yLabel": "Data sent/received to make a new vote row (B)",
+        "title": "Comparing bandwidth for making vote rows\nacross different values of lambda",
+        "fileNameStr": "vote-lambda-bandwidth-2",
         "legendLoc": "upper left"
     },
     {
+
         "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["rep", "2", "", ""],
         "lineVariable": "lambda",
         "xVariable": "numClients",
-        "whichGraph": "vote_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new vote row (B)",
-        "title": "Comparing bandwidth up for making new vote rows across lambda",
-        "fileNameStr": "vote-lambda-sent-2-25",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numServers",
-        "xVariable": "numClients",
         "whichGraph": "rep_prove_cpu",
         "xLabel": "Number of clients",
         "yLabel": "CPU time to make a new reputation proof (s)",
-        "title": "Comparing CPU time for making reputation proofs across numbers of servers",
-        "fileNameStr": "rep_prove-servers-cpu-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numServers",
-        "xVariable": "numClients",
-        "whichGraph": "rep_prove_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new reputation proof (B)",
-        "title": "Comparing bandwidth down for making new reputation proofs across numbers of servers",
-        "fileNameStr": "rep_prove-servers-recv-25-50",
-        "legendLoc": "upper left"
+        "title": "Comparing CPU time for making reputation proofs\nacross different values of lambda",
+        "fileNameStr": "rep_prove-lambda-cpu-2",
+        "legendLoc": "upper right",
+        "legendBBoxAnchor": [1, 1]
     },
     {
         "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numServers",
-        "xVariable": "numClients",
-        "whichGraph": "rep_prove_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new reputation proof (B)",
-        "title": "Comparing bandwidth up for making new reputation proofs across numbers of servers",
-        "fileNameStr": "rep_prove-servers-sent-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numClients",
-        "xVariable": "numServers",
-        "whichGraph": "rep_prove_cpu",
-        "xLabel": "Number of clients",
-        "yLabel": "CPU time to make a new reputation proof (s)",
-        "title": "Comparing CPU time for making new reputation proofs across numbers of servers",
-        "fileNameStr": "rep_prove-clients-cpu-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numClients",
-        "xVariable": "numServers",
-        "whichGraph": "rep_prove_recv",
-        "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new reputation proof (B)",
-        "title": "Comparing bandwidth down for making new reputation proofs across numbers of servers",
-        "fileNameStr": "rep_prove-clients-recv-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
-        "lineVariable": "numClients",
-        "xVariable": "numServers",
-        "whichGraph": "rep_prove_sent",
-        "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new reputation proof (B)",
-        "title": "Comparing bandwidth up for making new reputation proofs across numbers of servers",
-        "fileNameStr": "rep_prove-clients-sent-25-50",
-        "legendLoc": "upper left"
-    },
-    {
-        "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["rep", "2", "", ""],
         "lineVariable": "lambda",
         "xVariable": "numClients",
-        "whichGraph": "rep_prove_cpu",
+        "whichGraph": "rep_prove_total",
         "xLabel": "Number of clients",
-        "yLabel": "CPU time to make a new reputation proof (s)",
-        "title": "Comparing CPU time for making reputation proofs across lambda",
-        "fileNameStr": "rep_prove-lambda-cpu-2-25",
-        "legendLoc": "upper left"
+        "yLabel": "Data sent/received to make a new reputation proof (B)",
+        "title": "Comparing bandwidth for making reputation proofs\nacross different values of lambda",
+        "fileNameStr": "rep_prove-lambda-bandwidth-2",
+        "legendLoc": "lower right",
+        "legendBBoxAnchor": [1, 0]
     },
     {
+
         "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["rep", "2", "", ""],
         "lineVariable": "lambda",
         "xVariable": "numClients",
-        "whichGraph": "rep_prove_recv",
+        "whichGraph": "rep_verify_cpu",
         "xLabel": "Number of clients",
-        "yLabel": "Data received to make a new reputation proof (B)",
-        "title": "Comparing bandwidth down for making new reputation proofs across lambda",
-        "fileNameStr": "rep_prove-lambda-recv-2-25",
-        "legendLoc": "upper left"
+        "yLabel": "CPU time to verify a new reputation proof (s)",
+        "title": "Comparing CPU time for verifying reputation proofs\nacross different values of lambda",
+        "fileNameStr": "rep_verify-lambda-cpu-2",
+        "legendLoc": "lower right",
+        "legendBBoxAnchor": [1, 0]
     },
     {
         "data": "client",
-        "dataParts": ["all", "2", "25", "50"],
+        "dataParts": ["rep", "2", "", ""],
         "lineVariable": "lambda",
         "xVariable": "numClients",
-        "whichGraph": "rep_prove_sent",
+        "whichGraph": "rep_verify_total",
         "xLabel": "Number of clients",
-        "yLabel": "Data sent to make a new reputation proof (B)",
-        "title": "Comparing bandwidth up for making new reputation proofs across lambda",
-        "fileNameStr": "rep_prove-lambda-sent-2-25",
-        "legendLoc": "upper left"
+        "yLabel": "Data sent/received to verify a new reputation proof (B)",
+        "title": "Comparing bandwidth for verifying reputation proofs\nacross different values of lambda",
+        "fileNameStr": "rep_verify-lambda-bandwidth-2",
+        "legendLoc": "lower right",
+        "legendBBoxAnchor": [1, 0]
     }
 ]

BIN
prsona/plt/rep_prove-lambda-bandwidth-2.pdf


BIN
prsona/plt/rep_prove-lambda-cpu-2.pdf


BIN
prsona/plt/rep_verify-lambda-bandwidth-2.pdf


BIN
prsona/plt/rep_verify-lambda-cpu-2.pdf


BIN
prsona/plt/vote-lambda-bandwidth-2.pdf


BIN
prsona/plt/vote-lambda-cpu-2.pdf


+ 184 - 24
prsona/scripts/make_graphs.py

@@ -6,9 +6,114 @@ import json
 from math import sqrt
 import numpy as np
 import matplotlib.pyplot as plt
+from scipy.optimize import curve_fit 
 from contextlib import contextmanager
 
-Z_STAR = 1.96
+PLOT_OPTIONS = {
+    "workload": {
+        "all": {
+            "legend": 'Workload: "all"',
+            "marker": '^',
+            "color": "red"
+        }, 
+        "half": {
+            "legend": 'Workload: "half"',
+            "marker": 'X',
+            "color": "green"
+        }, 
+        "no": {
+            "legend": 'Workload: "no"',
+            "marker": '*',
+            "color": "blue"
+        }
+    },
+    "numServers": {
+        2: {
+            "legend": "2 servers",
+            "marker": '^',
+            "color": "red"
+        },
+        3: {
+            "legend": "3 servers",
+            "marker": 'X',
+            "color": "blue"
+        },
+        3.5: {
+            "legend": "3 servers / 3 * 2",
+            "marker": '.',
+            "color": "magenta"
+        },
+        4: {
+            "legend": "4 servers",
+            "marker": '*',
+            "color": "green"
+        },
+        5: {
+            "legend": "5 servers",
+            "marker": 'h',
+            "color": "orange"
+        }
+    },
+    "numClients": {
+        5: {
+            "legend": "5 clients",
+            "marker": "^",
+            "color": "red"
+        },
+        10: {
+            "legend": "10 clients",
+            "marker": "v",
+            "color": "green"
+        },
+        15: {
+            "legend": "15 clients",
+            "marker": ">",
+            "color": "blue"
+        },
+        20: {
+            "legend": "20 clients",
+            "marker": "<",
+            "color": "orange"
+        },
+        25: {
+            "legend": "25 clients",
+            "marker": "X",
+            "color": "magenta"
+        },
+        30: {
+            "legend": "30 clients",
+            "marker": "*",
+            "color": "pink"
+        },
+        40: {
+            "legend": "40 clients",
+            "marker": "h",
+            "color": "cyan"
+        },
+        50: {
+            "legend": "50 clients",
+            "marker": ".",
+            "color": "black"
+        }
+    },
+    "lambda": {
+        40: {
+            "legend": "Lambda: 40",
+            "marker": "^",
+            "color": "red"
+        },
+        50: {
+            "legend": "Lambda: 50",
+            "marker": "X",
+            "color": "green"
+        },
+        64: {
+            "legend": "Lambda: 64",
+            "marker": "*",
+            "color": "blue"
+        }
+    }
+}
 
 ##
 # This functionality allows us to temporarily change our working directory
@@ -26,6 +131,9 @@ def cd(newdir, makenew):
     finally:
         os.chdir(prevdir)
 
+def genericCube(x, a, b, c, d):
+    return a * (x * x * x) + b * (x * x) + c * x + d
+
 def readData(dataDirectory):
     serverData = {}
     clientData = {}
@@ -60,21 +168,25 @@ def readData(dataDirectory):
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['overall_epoch_cpu'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['overall_epoch_recv'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['overall_epoch_sent'] = []
+                serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['overall_epoch_total'] = []
 
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_up_wall'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_up_cpu'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_up_recv'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_up_sent'] = []
+                serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_up_total'] = []
 
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_down_wall'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_down_cpu'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_down_recv'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_down_sent'] = []
+                serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_down_total'] = []
 
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_update_wall'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_update_cpu'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_update_recv'] = []
                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_update_sent'] = []
+                serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_update_total'] = []
 
 
             if not testParts[3] in clientData[testParts[0]][testParts[1]][testParts[2]]:
@@ -84,16 +196,19 @@ def readData(dataDirectory):
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_cpu'] = []
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_recv'] = []
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_sent'] = []
+                clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_total'] = []
 
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_prove_wall'] = []
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_prove_cpu'] = []
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_prove_recv'] = []
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_prove_sent'] = []
+                clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_prove_total'] = []
 
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_verify_wall'] = []
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_verify_cpu'] = []
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_verify_recv'] = []
                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_verify_sent'] = []
+                clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_verify_total'] = []
 
     for test in os.listdir(realDirectory):
         if not test.startswith('.') and not test.endswith('.tar.gz') and test.find("default") == -1:
@@ -114,6 +229,7 @@ def readData(dataDirectory):
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['overall_epoch_cpu'].append(cpuTime)
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['overall_epoch_recv'].append(dataRecv)
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['overall_epoch_sent'].append(dataSent)
+                                serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['overall_epoch_total'].append(dataRecv + dataSent)
                     except FileNotFoundError as e:
                         pass
 
@@ -130,6 +246,7 @@ def readData(dataDirectory):
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_up_cpu'].append(cpuTime)
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_up_recv'].append(dataRecv)
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_up_sent'].append(dataSent)
+                                serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_up_total'].append(dataRecv + dataSent)
                     except FileNotFoundError as e:
                         pass
 
@@ -146,6 +263,7 @@ def readData(dataDirectory):
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_down_cpu'].append(cpuTime)
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_down_recv'].append(dataRecv)
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_down_sent'].append(dataSent)
+                                serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['epoch_down_total'].append(dataRecv + dataSent)
                     except FileNotFoundError as e:
                         pass
 
@@ -162,6 +280,7 @@ def readData(dataDirectory):
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_update_cpu'].append(cpuTime)
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_update_recv'].append(dataRecv)
                                 serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_update_sent'].append(dataSent)
+                                serverData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_update_total'].append(dataRecv + dataSent)
                     except FileNotFoundError as e:
                         pass
 
@@ -179,6 +298,7 @@ def readData(dataDirectory):
                                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_cpu'].append(cpuTime)
                                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_recv'].append(dataRecv)
                                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_sent'].append(dataSent)
+                                clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['vote_total'].append(dataRecv + dataSent)
                     except FileNotFoundError as e:
                         pass
 
@@ -195,6 +315,7 @@ def readData(dataDirectory):
                                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_prove_cpu'].append(cpuTime)
                                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_prove_recv'].append(dataRecv)
                                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_prove_sent'].append(dataSent)
+                                clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_prove_total'].append(dataRecv + dataSent)
                     except FileNotFoundError as e:
                         pass
 
@@ -211,18 +332,21 @@ def readData(dataDirectory):
                                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_verify_cpu'].append(cpuTime)
                                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_verify_recv'].append(dataRecv)
                                 clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_verify_sent'].append(dataSent)
+                                clientData[testParts[0]][testParts[1]][testParts[2]][testParts[3]]['rep_verify_total'].append(dataRecv + dataSent)
                     except FileNotFoundError as e:
                         pass
 
     return serverData, clientData
 
 def plotComparison(data, dataParts, xVariable, lineVariable, whichGraph, **kwargs):
+    z_star = kwargs['z_star'] if 'z_star' in kwargs else 1.96
     title = kwargs['title'] if 'title' in kwargs else ''
     xLabel = kwargs['xLabel'] if 'xLabel' in kwargs else ''
     yLabel = kwargs['yLabel'] if 'yLabel' in kwargs else ''
     fileNameStr = kwargs['fileNameStr'] if 'fileNameStr' in kwargs else f"basic-{xVariable}-{lineVariable}-{whichGraph}"
     legendLoc = kwargs['legendLoc'] if 'legendLoc' in kwargs else "best"
     legendBBoxAnchor = kwargs['legendBBoxAnchor'] if 'legendBBoxAnchor' in kwargs else (0, 1)
+    extraFit = kwargs['extraFit'] if 'extraFit' in kwargs else False
     loglog = kwargs['loglog'] if 'loglog' in kwargs else True
     yLim = kwargs['yLim'] if 'yLim' in kwargs else False
     aspect = kwargs['aspect'] if 'aspect' in kwargs else None
@@ -236,20 +360,20 @@ def plotComparison(data, dataParts, xVariable, lineVariable, whichGraph, **kwarg
     legendEnd = ""
     if lineVariable == 'workload':
         whichLines = 0
-        lineSelection = data.keys()
-        legendStart = "Workload: "
+        lineSelection = [str(x) for x in data.keys() if x != "rep" and x != "vote"]
+        lineSelection.sort()
     elif lineVariable == 'numServers':
         whichLines = 1
-        lineSelection = data['all'].keys()
-        legendEnd = " servers"
+        lineSelection = [int(x) for x in data['all'].keys()]
+        lineSelection.sort()
     elif lineVariable == 'numClients':
         whichLines = 2
-        lineSelection = data['all']['2'].keys()
-        legendEnd = " clients"
+        lineSelection = [int(x) for x in data['all']['2'].keys()]
+        lineSelection.sort()
     elif lineVariable == 'lambda':
         whichLines = 3
-        lineSelection = data['all']['2']['5'].keys()
-        legendStart = "Lambda: "
+        lineSelection = [int(x) for x in data['all']['2']['5'].keys()]
+        lineSelection.sort()
 
     whichX = 0
     xSelection = []
@@ -269,31 +393,60 @@ def plotComparison(data, dataParts, xVariable, lineVariable, whichGraph, **kwarg
         xSelection = [int(x) for x in data['all']['2']['5'].keys()]
         xSelection.sort()
 
-
     for selection in lineSelection:
         xs = []
+        xTicks = []
         ys = []
+        additionalYs = []
         yErrs = []
+        additionalYErrs = []
 
-        legend = legendStart + selection + legendEnd
+        legend = PLOT_OPTIONS[lineVariable][selection]['legend']
+        marker = PLOT_OPTIONS[lineVariable][selection]['marker']
+        color = PLOT_OPTIONS[lineVariable][selection]['color']
 
-        dataParts[whichLines] = selection
+        dataParts[whichLines] = str(selection)
         
         for x in xSelection:
             dataParts[whichX] = str(x)
 
-            curr_data = data[dataParts[0]][dataParts[1]][dataParts[2]][dataParts[3]][whichGraph]
-
-            mean = np.mean(curr_data)
-            std = np.std(curr_data)
-            sqrt_len = sqrt(len(curr_data))
-
-            xs.append(x)
-            ys.append(mean)
-            yErrs.append(Z_STAR * std / sqrt_len)
-
-        line, _, _ = ax.errorbar(xs, ys, yerr=yErrs, capsize=7.0, label=legend)
-
+            try:
+                curr_data = data[dataParts[0]][dataParts[1]][dataParts[2]][dataParts[3]][whichGraph]
+
+                if len(curr_data) == 0:
+                    continue
+
+                mean = np.mean(curr_data)
+                std = np.std(curr_data)
+                sqrt_len = sqrt(len(curr_data))
+
+                xs.append(x)
+                ys.append(mean)
+                yErrs.append(z_star * std / sqrt_len)
+
+                if lineVariable == 'numServers' and selection > 2:
+                    additional_data = [x / selection * 2 for x in curr_data]
+                    additional_mean = np.mean(additional_data)
+                    additional_std = np.std(additional_data)
+
+                    additionalYs.append(additional_mean)
+                    additionalYErrs.append(z_star * additional_std / sqrt_len)
+            except KeyError as e:
+                pass
+
+        if len(xs) > 1:
+            line, _, _ = ax.errorbar(xs, ys, yerr=yErrs, capsize=7.0, label=legend, marker=marker, linestyle='-', color=color)
+
+            if lineVariable == 'numServers' and selection > 2:
+                addlLegend = PLOT_OPTIONS[lineVariable][selection + 0.5]['legend']
+                addlMarker = PLOT_OPTIONS[lineVariable][selection + 0.5]['marker']
+                addlColor = PLOT_OPTIONS[lineVariable][selection + 0.5]['color']
+                line, _, _ = ax.errorbar(xs, additionalYs, yerr=additionalYErrs, capsize=7.0, label=addlLegend, marker=addlMarker, linestyle='-', color=addlColor)
+            if extraFit:
+                popt, pcov = curve_fit(genericCube, xs, ys)
+                beyondXs = np.linspace(xs[-1], 100, 50)
+                ax.plot(beyondXs, genericCube(beyondXs, *popt), linestyle='--', color=color)
+        
     ax.set_title(title, fontsize='x-large')
     ax.set_xlabel(xLabel, fontsize='large')
     ax.set_ylabel(yLabel, fontsize='large')
@@ -301,6 +454,9 @@ def plotComparison(data, dataParts, xVariable, lineVariable, whichGraph, **kwarg
     bottom, top = ax.get_ylim()
     bottom = (0 if bottom > 0 else bottom)
     ax.set_ylim(bottom=bottom)
+    if top > 100000:
+        yTickLabels = ['{:2g}'.format(x) for x in ax.get_yticks().tolist()]
+        ax.set_yticklabels(yTickLabels)
 
     if yLim:
         ax.set_ylim(bottom=yLim[0], top=yLim[1])
@@ -332,12 +488,16 @@ def main(dataDirectory, plotOptionsFile):
             continue
         
         kwargs = {}
+        if "z_star" in option:
+            kwargs["z_star"] = option["z_star"]
         if "title" in option:
             kwargs["title"] = option["title"]
         if "xLabel" in option:
             kwargs["xLabel"] = option["xLabel"]
         if "yLabel" in option:
             kwargs["yLabel"] = option["yLabel"]
+        if "extraFit" in option:
+            kwargs["extraFit"] = option["extraFit"]
         if "fileNameStr" in option:
             kwargs["fileNameStr"] = option["fileNameStr"]
         if "legendLoc" in option: