|
@@ -108,6 +108,8 @@ void make_epoch(
|
|
|
|
|
|
Twistpoint nextGenerator = PrsonaServer::EL_GAMAL_GENERATOR;
|
|
|
|
|
|
+ std::vector<size_t> bandwidthData(2);
|
|
|
+
|
|
|
std::unique_lock<std::mutex> updateLock(updateMtx, std::defer_lock);
|
|
|
|
|
|
std::vector<size_t> bandwidthDataBefore = get_log_data(civetServer.getContext());
|
|
@@ -115,27 +117,27 @@ void make_epoch(
|
|
|
clock_t cpuTimeBefore = clock();
|
|
|
|
|
|
|
|
|
- obtain_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort);
|
|
|
+ obtain_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort, bandwidthData);
|
|
|
|
|
|
|
|
|
- std::vector<Proof> generatorProof = epoch_build_up(rng, prsonaServer, serverIPs, serverPorts, selfIP, selfPort, nextGenerator, civetServer, buildUpOutputMtx, buildUpOutputFilename);
|
|
|
+ std::vector<Proof> generatorProof = epoch_build_up(rng, prsonaServer, serverIPs, serverPorts, selfIP, selfPort, nextGenerator, civetServer, buildUpOutputMtx, buildUpOutputFilename, bandwidthData);
|
|
|
|
|
|
|
|
|
std::vector<EGCiphertext> currentUserEncryptedTallies;
|
|
|
std::vector<CurveBipoint> currentServerEncryptedTallies;
|
|
|
- tally_scores(prsonaServer, serverIPs, serverPorts, selfIP, selfPort, nextGenerator, currentUserEncryptedTallies, currentServerEncryptedTallies);
|
|
|
+ tally_scores(prsonaServer, serverIPs, serverPorts, selfIP, selfPort, nextGenerator, currentUserEncryptedTallies, currentServerEncryptedTallies, bandwidthData);
|
|
|
|
|
|
|
|
|
- distribute_tallied_scores(prsonaServer, serverIPs, serverPorts, selfIP, selfPort, nextGenerator, currentUserEncryptedTallies, currentServerEncryptedTallies);
|
|
|
+ distribute_tallied_scores(prsonaServer, serverIPs, serverPorts, selfIP, selfPort, nextGenerator, currentUserEncryptedTallies, currentServerEncryptedTallies, bandwidthData);
|
|
|
|
|
|
|
|
|
- epoch_break_down(rng, prsonaServer, serverIPs, serverPorts, selfIP, selfPort, generatorProof, nextGenerator, civetServer, breakDownOutputMtx, breakDownOutputFilename);
|
|
|
+ epoch_break_down(rng, prsonaServer, serverIPs, serverPorts, selfIP, selfPort, generatorProof, nextGenerator, civetServer, breakDownOutputMtx, breakDownOutputFilename, bandwidthData);
|
|
|
|
|
|
|
|
|
epochNum.fetch_add(1);
|
|
|
|
|
|
|
|
|
- release_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort);
|
|
|
+ release_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort, bandwidthData);
|
|
|
|
|
|
clock_t cpuTimeAfter = clock();
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeAfter = std::chrono::high_resolution_clock::now();
|
|
@@ -145,9 +147,8 @@ void make_epoch(
|
|
|
timingData[0] = std::chrono::duration_cast<std::chrono::duration<double>>(wallTimeAfter - wallTimeBefore).count();
|
|
|
timingData[1] = ((double)(cpuTimeAfter - cpuTimeBefore)) / CLOCKS_PER_SEC;
|
|
|
|
|
|
- std::vector<size_t> bandwidthData(2);
|
|
|
- bandwidthData[0] = bandwidthDataAfter[0] - bandwidthDataBefore[0];
|
|
|
- bandwidthData[1] = bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
+ bandwidthData[0] += bandwidthDataAfter[0] - bandwidthDataBefore[0];
|
|
|
+ bandwidthData[1] += bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
|
|
|
write_log_data(fullOutputMtx, fullOutputFilename, timingData, bandwidthData);
|
|
|
}
|
|
@@ -167,7 +168,8 @@ void obtain_update_locks(
|
|
|
const std::vector<std::string>& serverIPs,
|
|
|
const std::vector<int>& serverPorts,
|
|
|
const std::string& selfIP,
|
|
|
- int selfPort)
|
|
|
+ int selfPort,
|
|
|
+ std::vector<size_t>& bandwidthData)
|
|
|
{
|
|
|
|
|
|
size_t i = 0;
|
|
@@ -196,6 +198,8 @@ void obtain_update_locks(
|
|
|
std::cerr << "Couldn't connect to server " << i << " to obtain its lock" << std::endl;
|
|
|
}
|
|
|
|
|
|
+ std::vector<size_t> bandwidthDataBefore = get_log_data(mg_get_context(conn));
|
|
|
+
|
|
|
|
|
|
mg_websocket_client_write(conn, MG_WEBSOCKET_OPCODE_DATACOMPLETE, "", 0);
|
|
|
|
|
@@ -203,6 +207,11 @@ void obtain_update_locks(
|
|
|
while (!sync.val2)
|
|
|
sync.cv.wait(lck);
|
|
|
|
|
|
+ std::vector<size_t> bandwidthDataAfter = get_log_data(mg_get_context(conn));
|
|
|
+
|
|
|
+ bandwidthData[0] += bandwidthDataAfter[0] - bandwidthDataBefore[0];
|
|
|
+ bandwidthData[1] += bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
+
|
|
|
|
|
|
mg_close_connection(conn);
|
|
|
|
|
@@ -217,7 +226,8 @@ void release_update_locks(
|
|
|
const std::vector<std::string>& serverIPs,
|
|
|
const std::vector<int>& serverPorts,
|
|
|
const std::string& selfIP,
|
|
|
- int selfPort)
|
|
|
+ int selfPort,
|
|
|
+ std::vector<size_t>& bandwidthData)
|
|
|
{
|
|
|
|
|
|
ssize_t i = serverIPs.size() - 1;
|
|
@@ -246,6 +256,8 @@ void release_update_locks(
|
|
|
std::cerr << "Couldn't connect to server " << i << " to release its lock" << std::endl;
|
|
|
}
|
|
|
|
|
|
+ std::vector<size_t> bandwidthDataBefore = get_log_data(mg_get_context(conn));
|
|
|
+
|
|
|
|
|
|
mg_websocket_client_write(conn, MG_WEBSOCKET_OPCODE_DATACOMPLETE, "", 0);
|
|
|
|
|
@@ -253,6 +265,11 @@ void release_update_locks(
|
|
|
while (!sync.val2)
|
|
|
sync.cv.wait(lck);
|
|
|
|
|
|
+ std::vector<size_t> bandwidthDataAfter = get_log_data(mg_get_context(conn));
|
|
|
+
|
|
|
+ bandwidthData[0] += bandwidthDataAfter[0] - bandwidthDataBefore[0];
|
|
|
+ bandwidthData[1] += bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
+
|
|
|
|
|
|
mg_close_connection(conn);
|
|
|
|
|
@@ -461,7 +478,8 @@ std::vector<Proof> epoch_build_up(
|
|
|
Twistpoint& nextGenerator,
|
|
|
const CivetServer& civetServer,
|
|
|
std::mutex& outputMtx,
|
|
|
- const std::string& outputFilename)
|
|
|
+ const std::string& outputFilename,
|
|
|
+ std::vector<size_t>& overallBandwidthData)
|
|
|
{
|
|
|
std::vector<std::vector<std::vector<Proof>>> pi;
|
|
|
std::vector<std::vector<std::vector<Twistpoint>>> permutationCommits;
|
|
@@ -487,8 +505,10 @@ std::vector<Proof> epoch_build_up(
|
|
|
serverTallyCommits.clear();
|
|
|
partwayVoteMatrixCommits.clear();
|
|
|
finalVoteMatrixCommits.clear();
|
|
|
+ std::vector<size_t> bandwidthData(2);
|
|
|
+ std::vector<std::vector<size_t>> otherBandwidthDataBefore;
|
|
|
|
|
|
- std::vector<size_t> bandwidthDataBefore = get_log_data(civetServer.getContext());
|
|
|
+ std::vector<size_t> serverBandwidthDataBefore = get_log_data(civetServer.getContext());
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeBefore = std::chrono::high_resolution_clock::now();
|
|
|
clock_t cpuTimeBefore = clock();
|
|
|
|
|
@@ -517,6 +537,8 @@ std::vector<Proof> epoch_build_up(
|
|
|
|
|
|
struct mg_connection *currConn = distribute_epoch_updates(serverIPs[j], serverPorts[j], data, &sync);
|
|
|
|
|
|
+ otherBandwidthDataBefore.push_back(get_log_data(mg_get_context(currConn)));
|
|
|
+
|
|
|
|
|
|
conns.push_back(currConn);
|
|
|
}
|
|
@@ -526,19 +548,27 @@ std::vector<Proof> epoch_build_up(
|
|
|
sync.cv.wait(lck);
|
|
|
|
|
|
for (size_t j = 0; j < conns.size(); j++)
|
|
|
+ {
|
|
|
+ std::vector<size_t> currBandwidthDataAfter = get_log_data(mg_get_context(conns[j]));
|
|
|
+
|
|
|
+ bandwidthData[0] += currBandwidthDataAfter[0] - otherBandwidthDataBefore[j][0];
|
|
|
+ bandwidthData[1] += currBandwidthDataAfter[1] - otherBandwidthDataBefore[j][1];
|
|
|
+ overallBandwidthData[0] += currBandwidthDataAfter[0] - otherBandwidthDataBefore[j][0];
|
|
|
+ overallBandwidthData[1] += currBandwidthDataAfter[1] - otherBandwidthDataBefore[j][1];
|
|
|
+
|
|
|
mg_close_connection(conns[j]);
|
|
|
+ }
|
|
|
|
|
|
clock_t cpuTimeAfter = clock();
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeAfter = std::chrono::high_resolution_clock::now();
|
|
|
- std::vector<size_t> bandwidthDataAfter = get_log_data(civetServer.getContext());
|
|
|
+ std::vector<size_t> serverBandwidthDataAfter = get_log_data(civetServer.getContext());
|
|
|
|
|
|
std::vector<double> timingData(2);
|
|
|
timingData[0] = std::chrono::duration_cast<std::chrono::duration<double>>(wallTimeAfter - wallTimeBefore).count();
|
|
|
timingData[1] = ((double)(cpuTimeAfter - cpuTimeBefore)) / CLOCKS_PER_SEC;
|
|
|
|
|
|
- std::vector<size_t> bandwidthData(2);
|
|
|
- bandwidthData[0] = bandwidthDataAfter[0] - bandwidthDataBefore[0];
|
|
|
- bandwidthData[1] = bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
+ bandwidthData[0] += serverBandwidthDataAfter[0] - serverBandwidthDataBefore[0];
|
|
|
+ bandwidthData[1] += serverBandwidthDataAfter[1] - serverBandwidthDataBefore[1];
|
|
|
|
|
|
write_log_data(outputMtx, outputFilename, timingData, bandwidthData);
|
|
|
|
|
@@ -551,7 +581,7 @@ std::vector<Proof> epoch_build_up(
|
|
|
std::string data = make_epoch_initiator_string(generatorProofHolder[0], nextGenerator);
|
|
|
|
|
|
|
|
|
- nextGenerator = initiate_epoch_updates(rng, serverIPs[i], serverPorts[i], data, false, generatorProofHolder);
|
|
|
+ nextGenerator = initiate_epoch_updates(rng, serverIPs[i], serverPorts[i], data, false, generatorProofHolder, overallBandwidthData);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -570,7 +600,8 @@ void epoch_break_down(
|
|
|
const Twistpoint& nextGenerator,
|
|
|
const CivetServer& civetServer,
|
|
|
std::mutex& outputMtx,
|
|
|
- const std::string& outputFilename)
|
|
|
+ const std::string& outputFilename,
|
|
|
+ std::vector<size_t>& overallBandwidthData)
|
|
|
{
|
|
|
std::vector<std::vector<std::vector<Proof>>> pi;
|
|
|
std::vector<std::vector<std::vector<Twistpoint>>> permutationCommits;
|
|
@@ -599,8 +630,10 @@ void epoch_break_down(
|
|
|
userTallyMaskCommits.clear();
|
|
|
userTallyMessageCommits.clear();
|
|
|
userTallySeedCommits.clear();
|
|
|
+ std::vector<size_t> bandwidthData(2);
|
|
|
+ std::vector<std::vector<size_t>> otherBandwidthDataBefore;
|
|
|
|
|
|
- std::vector<size_t> bandwidthDataBefore = get_log_data(civetServer.getContext());
|
|
|
+ std::vector<size_t> serverBandwidthDataBefore = get_log_data(civetServer.getContext());
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeBefore = std::chrono::high_resolution_clock::now();
|
|
|
clock_t cpuTimeBefore = clock();
|
|
|
|
|
@@ -625,6 +658,8 @@ void epoch_break_down(
|
|
|
|
|
|
struct mg_connection *currConn = distribute_epoch_updates(serverIPs[j], serverPorts[j], data, &sync);
|
|
|
|
|
|
+ otherBandwidthDataBefore.push_back(get_log_data(mg_get_context(currConn)));
|
|
|
+
|
|
|
|
|
|
conns.push_back(currConn);
|
|
|
}
|
|
@@ -634,19 +669,27 @@ void epoch_break_down(
|
|
|
sync.cv.wait(lck);
|
|
|
|
|
|
for (size_t j = 0; j < conns.size(); j++)
|
|
|
+ {
|
|
|
+ std::vector<size_t> currBandwidthDataAfter = get_log_data(mg_get_context(conns[j]));
|
|
|
+
|
|
|
+ bandwidthData[0] += currBandwidthDataAfter[0] - otherBandwidthDataBefore[j][0];
|
|
|
+ bandwidthData[1] += currBandwidthDataAfter[1] - otherBandwidthDataBefore[j][1];
|
|
|
+ overallBandwidthData[0] += currBandwidthDataAfter[0] - otherBandwidthDataBefore[j][0];
|
|
|
+ overallBandwidthData[1] += currBandwidthDataAfter[1] - otherBandwidthDataBefore[j][1];
|
|
|
+
|
|
|
mg_close_connection(conns[j]);
|
|
|
+ }
|
|
|
|
|
|
clock_t cpuTimeAfter = clock();
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeAfter = std::chrono::high_resolution_clock::now();
|
|
|
- std::vector<size_t> bandwidthDataAfter = get_log_data(civetServer.getContext());
|
|
|
+ std::vector<size_t> serverBandwidthDataAfter = get_log_data(civetServer.getContext());
|
|
|
|
|
|
std::vector<double> timingData(2);
|
|
|
timingData[0] = std::chrono::duration_cast<std::chrono::duration<double>>(wallTimeAfter - wallTimeBefore).count();
|
|
|
timingData[1] = ((double)(cpuTimeAfter - cpuTimeBefore)) / CLOCKS_PER_SEC;
|
|
|
|
|
|
- std::vector<size_t> bandwidthData(2);
|
|
|
- bandwidthData[0] = bandwidthDataAfter[0] - bandwidthDataBefore[0];
|
|
|
- bandwidthData[1] = bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
+ bandwidthData[0] += serverBandwidthDataAfter[0] - serverBandwidthDataBefore[0];
|
|
|
+ bandwidthData[1] += serverBandwidthDataAfter[1] - serverBandwidthDataBefore[1];
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -656,7 +699,7 @@ void epoch_break_down(
|
|
|
std::string data = make_epoch_initiator_string(generatorProof, nextGenerator);
|
|
|
|
|
|
|
|
|
- initiate_epoch_updates(rng, serverIPs[i], serverPorts[i], data, true, unused);
|
|
|
+ initiate_epoch_updates(rng, serverIPs[i], serverPorts[i], data, true, unused, overallBandwidthData);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -671,7 +714,8 @@ Twistpoint initiate_epoch_updates(
|
|
|
int recipientPort,
|
|
|
const std::string& data,
|
|
|
bool isBreakdown,
|
|
|
- std::vector<std::vector<Proof>>& generatorProofHolder)
|
|
|
+ std::vector<std::vector<Proof>>& generatorProofHolder,
|
|
|
+ std::vector<size_t>& bandwidthData)
|
|
|
{
|
|
|
Twistpoint retval;
|
|
|
struct synchronization_tool sync;
|
|
@@ -764,10 +808,12 @@ void tally_scores(
|
|
|
int selfPort,
|
|
|
const Twistpoint& nextGenerator,
|
|
|
std::vector<EGCiphertext>& userTallyScores,
|
|
|
- std::vector<CurveBipoint>& serverTallyScores)
|
|
|
+ std::vector<CurveBipoint>& serverTallyScores,
|
|
|
+ std::vector<size_t>& bandwidthData)
|
|
|
{
|
|
|
struct synchronization_tool sync;
|
|
|
std::vector<struct mg_connection *> conns;
|
|
|
+ std::vector<std::vector<size_t>> allBandwidthDataBefore;
|
|
|
|
|
|
|
|
|
std::unique_lock<std::mutex> lck(sync.mtx);
|
|
@@ -788,6 +834,8 @@ void tally_scores(
|
|
|
std::cerr << "Trouble getting partial decryption from server at " << serverIPs[i] << ":" << serverPorts[i] << std::endl;
|
|
|
}
|
|
|
|
|
|
+ allBandwidthDataBefore.push_back(get_log_data(mg_get_context(currConn)));
|
|
|
+
|
|
|
|
|
|
mg_websocket_client_write(currConn, MG_WEBSOCKET_OPCODE_DATACOMPLETE, "", 0);
|
|
|
|
|
@@ -800,7 +848,14 @@ void tally_scores(
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < conns.size(); i++)
|
|
|
+ {
|
|
|
+ std::vector<size_t> currBandwidthDataAfter = get_log_data(mg_get_context(conns[i]));
|
|
|
+
|
|
|
+ bandwidthData[0] += currBandwidthDataAfter[0] - allBandwidthDataBefore[i][0];
|
|
|
+ bandwidthData[1] += currBandwidthDataAfter[1] - allBandwidthDataBefore[i][1];
|
|
|
+
|
|
|
mg_close_connection(conns[i]);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
std::vector<EGCiphertext> retval;
|
|
@@ -842,7 +897,8 @@ void distribute_tallied_scores(
|
|
|
int selfPort,
|
|
|
const Twistpoint& nextGenerator,
|
|
|
const std::vector<EGCiphertext>& userTallyScores,
|
|
|
- const std::vector<CurveBipoint>& serverTallyScores)
|
|
|
+ const std::vector<CurveBipoint>& serverTallyScores,
|
|
|
+ std::vector<size_t>& bandwidthData)
|
|
|
{
|
|
|
|
|
|
std::stringstream buffer;
|
|
@@ -857,6 +913,7 @@ void distribute_tallied_scores(
|
|
|
|
|
|
struct synchronization_tool sync;
|
|
|
std::vector<struct mg_connection *> conns;
|
|
|
+ std::vector<std::vector<size_t>> allBandwidthDataBefore;
|
|
|
|
|
|
|
|
|
std::unique_lock<std::mutex> lck(sync.mtx);
|
|
@@ -880,6 +937,8 @@ void distribute_tallied_scores(
|
|
|
std::cerr << "Trouble giving full re-encryption to server at " << serverIPs[i] << ":" << serverPorts[i] << std::endl;
|
|
|
}
|
|
|
|
|
|
+ allBandwidthDataBefore.push_back(get_log_data(mg_get_context(currConn)));
|
|
|
+
|
|
|
|
|
|
mg_websocket_client_write(currConn, MG_WEBSOCKET_OPCODE_BINARY, data.c_str(), data.length());
|
|
|
mg_websocket_client_write(currConn, MG_WEBSOCKET_OPCODE_DATACOMPLETE, "", 0);
|
|
@@ -893,7 +952,14 @@ void distribute_tallied_scores(
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < conns.size(); i++)
|
|
|
+ {
|
|
|
+ std::vector<size_t> currBandwidthDataAfter = get_log_data(mg_get_context(conns[i]));
|
|
|
+
|
|
|
+ bandwidthData[0] += currBandwidthDataAfter[0] - allBandwidthDataBefore[i][0];
|
|
|
+ bandwidthData[1] += currBandwidthDataAfter[1] - allBandwidthDataBefore[i][1];
|
|
|
+
|
|
|
mg_close_connection(conns[i]);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -2053,9 +2119,11 @@ void PrsonaServerWebSocketHandler::add_new_client(
|
|
|
Twistpoint shortTermPublicKey, empty;
|
|
|
file >> shortTermPublicKey;
|
|
|
|
|
|
+ std::vector<size_t> bandwidthData(2);
|
|
|
+
|
|
|
|
|
|
std::unique_lock<std::mutex> updateLock(updateMtx, std::defer_lock);
|
|
|
- obtain_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort);
|
|
|
+ obtain_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort, bandwidthData);
|
|
|
|
|
|
|
|
|
std::vector<Proof> proofOfValidAddition;
|
|
@@ -2070,7 +2138,7 @@ void PrsonaServerWebSocketHandler::add_new_client(
|
|
|
distribute_new_user_updates(proofOfValidAddition, previousVoteTallies, currentPseudonyms, currentUserEncryptedTallies, voteMatrix);
|
|
|
|
|
|
|
|
|
- release_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort);
|
|
|
+ release_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort, bandwidthData);
|
|
|
|
|
|
|
|
|
std::stringstream buffer;
|
|
@@ -2130,12 +2198,14 @@ void PrsonaServerWebSocketHandler::receive_vote(
|
|
|
|
|
|
std::unique_lock<std::mutex> updateLock(updateMtx, std::defer_lock);
|
|
|
|
|
|
+ std::vector<size_t> bandwidthData(2);
|
|
|
+
|
|
|
std::vector<size_t> bandwidthDataBefore = get_log_data(civetServer->getContext());
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeBefore = std::chrono::high_resolution_clock::now();
|
|
|
clock_t cpuTimeBefore = clock();
|
|
|
|
|
|
if (shouldDeal.val())
|
|
|
- obtain_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort);
|
|
|
+ obtain_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort, bandwidthData);
|
|
|
|
|
|
|
|
|
prsonaServer->receive_vote(pi, newVotes, shortTermPublicKey);
|
|
@@ -2143,10 +2213,10 @@ void PrsonaServerWebSocketHandler::receive_vote(
|
|
|
|
|
|
if (shouldDeal.val())
|
|
|
{
|
|
|
- distribute_new_vote(pi, newVotes, shortTermPublicKey);
|
|
|
+ distribute_new_vote(pi, newVotes, shortTermPublicKey, bandwidthData);
|
|
|
|
|
|
|
|
|
- release_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort);
|
|
|
+ release_update_locks(updateLock, serverIPs, serverPorts, selfIP, selfPort, bandwidthData);
|
|
|
}
|
|
|
|
|
|
clock_t cpuTimeAfter = clock();
|
|
@@ -2157,9 +2227,8 @@ void PrsonaServerWebSocketHandler::receive_vote(
|
|
|
timingData[0] = std::chrono::duration_cast<std::chrono::duration<double>>(wallTimeAfter - wallTimeBefore).count();
|
|
|
timingData[1] = ((double)(cpuTimeAfter - cpuTimeBefore)) / CLOCKS_PER_SEC;
|
|
|
|
|
|
- std::vector<size_t> bandwidthData(2);
|
|
|
- bandwidthData[0] = bandwidthDataAfter[0] - bandwidthDataBefore[0] + bandwidthRcv;
|
|
|
- bandwidthData[1] = bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
+ bandwidthData[0] += bandwidthDataAfter[0] - bandwidthDataBefore[0] + bandwidthRcv;
|
|
|
+ bandwidthData[1] += bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
|
|
|
write_log_data(voteOutputMtx, voteOutputFilename, timingData, bandwidthData);
|
|
|
|
|
@@ -2256,7 +2325,8 @@ void PrsonaServerWebSocketHandler::distribute_new_user_updates(
|
|
|
void PrsonaServerWebSocketHandler::distribute_new_vote(
|
|
|
std::vector<Proof> pi,
|
|
|
std::vector<TwistBipoint> newVotes,
|
|
|
- Twistpoint shortTermPublicKey) const
|
|
|
+ Twistpoint shortTermPublicKey,
|
|
|
+ std::vector<size_t>& bandwidthData) const
|
|
|
{
|
|
|
struct synchronization_tool sync;
|
|
|
|
|
@@ -2304,6 +2374,8 @@ void PrsonaServerWebSocketHandler::distribute_new_vote(
|
|
|
if (!conn)
|
|
|
std::cerr << "Couldn't give server " << i << " new vote data" << std::endl;
|
|
|
}
|
|
|
+
|
|
|
+ std::vector<size_t> bandwidthDataBefore = get_log_data(mg_get_context(conn));
|
|
|
|
|
|
|
|
|
mg_websocket_client_write(conn, MG_WEBSOCKET_OPCODE_BINARY, data.c_str(), data.length());
|
|
@@ -2313,6 +2385,11 @@ void PrsonaServerWebSocketHandler::distribute_new_vote(
|
|
|
while (!sync.val2)
|
|
|
sync.cv.wait(syncLock);
|
|
|
|
|
|
+ std::vector<size_t> bandwidthDataAfter = get_log_data(mg_get_context(conn));
|
|
|
+
|
|
|
+ bandwidthData[0] += bandwidthDataAfter[0] - bandwidthDataBefore[0];
|
|
|
+ bandwidthData[1] += bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
+
|
|
|
|
|
|
mg_close_connection(conn);
|
|
|
|
|
@@ -2495,8 +2572,10 @@ void PrsonaServerWebSocketHandler::build_up_midway_pseudonyms(
|
|
|
std::vector<std::vector<std::vector<CurveBipoint>>> serverTallyCommits;
|
|
|
std::vector<std::vector<std::vector<std::vector<TwistBipoint>>>> partwayVoteMatrixCommits;
|
|
|
std::vector<std::vector<std::vector<std::vector<TwistBipoint>>>> finalVoteMatrixCommits;
|
|
|
+ std::vector<size_t> bandwidthData(2);
|
|
|
+ std::vector<std::vector<size_t>> otherBandwidthDataBefore;
|
|
|
|
|
|
- std::vector<size_t> bandwidthDataBefore = get_log_data(civetServer->getContext());
|
|
|
+ std::vector<size_t> serverBandwidthDataBefore = get_log_data(civetServer->getContext());
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeBefore = std::chrono::high_resolution_clock::now();
|
|
|
clock_t cpuTimeBefore = clock();
|
|
|
|
|
@@ -2523,6 +2602,7 @@ void PrsonaServerWebSocketHandler::build_up_midway_pseudonyms(
|
|
|
struct mg_connection *currConn = distribute_epoch_updates(serverIPs[i], serverPorts[i], data, &sync);
|
|
|
|
|
|
conns.push_back(currConn);
|
|
|
+ otherBandwidthDataBefore.push_back(get_log_data(mg_get_context(currConn)));
|
|
|
}
|
|
|
|
|
|
|
|
@@ -2531,19 +2611,25 @@ void PrsonaServerWebSocketHandler::build_up_midway_pseudonyms(
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < conns.size(); i++)
|
|
|
+ {
|
|
|
+ std::vector<size_t> currBandwidthDataAfter = get_log_data(mg_get_context(conns[i]));
|
|
|
+
|
|
|
+ bandwidthData[0] += currBandwidthDataAfter[0] - otherBandwidthDataBefore[i][0];
|
|
|
+ bandwidthData[1] += currBandwidthDataAfter[1] - otherBandwidthDataBefore[i][1];
|
|
|
+
|
|
|
mg_close_connection(conns[i]);
|
|
|
+ }
|
|
|
|
|
|
clock_t cpuTimeAfter = clock();
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeAfter = std::chrono::high_resolution_clock::now();
|
|
|
- std::vector<size_t> bandwidthDataAfter = get_log_data(civetServer->getContext());
|
|
|
+ std::vector<size_t> serverBandwidthDataAfter = get_log_data(civetServer->getContext());
|
|
|
|
|
|
std::vector<double> timingData(2);
|
|
|
timingData[0] = std::chrono::duration_cast<std::chrono::duration<double>>(wallTimeAfter - wallTimeBefore).count();
|
|
|
timingData[1] = ((double)(cpuTimeAfter - cpuTimeBefore)) / CLOCKS_PER_SEC;
|
|
|
|
|
|
- std::vector<size_t> bandwidthData(2);
|
|
|
- bandwidthData[0] = bandwidthDataAfter[0] - bandwidthDataBefore[0] + bandwidthRcv;
|
|
|
- bandwidthData[1] = bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
+ bandwidthData[0] += serverBandwidthDataAfter[0] - serverBandwidthDataBefore[0] + bandwidthRcv;
|
|
|
+ bandwidthData[1] += serverBandwidthDataAfter[1] - serverBandwidthDataBefore[1];
|
|
|
|
|
|
write_log_data(buildUpOutputMtx, buildUpOutputFilename, timingData, bandwidthData);
|
|
|
|
|
@@ -2576,8 +2662,10 @@ void PrsonaServerWebSocketHandler::break_down_midway_pseudonyms(
|
|
|
std::vector<std::vector<std::vector<Twistpoint>>> userTallyMaskCommits;
|
|
|
std::vector<std::vector<std::vector<Twistpoint>>> userTallyMessageCommits;
|
|
|
std::vector<std::vector<std::vector<Twistpoint>>> userTallySeedCommits;
|
|
|
+ std::vector<size_t> bandwidthData(2);
|
|
|
+ std::vector<std::vector<size_t>> otherBandwidthDataBefore;
|
|
|
|
|
|
- std::vector<size_t> bandwidthDataBefore = get_log_data(civetServer->getContext());
|
|
|
+ std::vector<size_t> serverBandwidthDataBefore = get_log_data(civetServer->getContext());
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeBefore = std::chrono::high_resolution_clock::now();
|
|
|
clock_t cpuTimeBefore = clock();
|
|
|
|
|
@@ -2602,6 +2690,7 @@ void PrsonaServerWebSocketHandler::break_down_midway_pseudonyms(
|
|
|
struct mg_connection *currConn = distribute_epoch_updates(serverIPs[i], serverPorts[i], data, &sync);
|
|
|
|
|
|
conns.push_back(currConn);
|
|
|
+ otherBandwidthDataBefore.push_back(get_log_data(mg_get_context(currConn)));
|
|
|
}
|
|
|
|
|
|
|
|
@@ -2610,19 +2699,25 @@ void PrsonaServerWebSocketHandler::break_down_midway_pseudonyms(
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < conns.size(); i++)
|
|
|
+ {
|
|
|
+ std::vector<size_t> currBandwidthDataAfter = get_log_data(mg_get_context(conns[i]));
|
|
|
+
|
|
|
+ bandwidthData[0] += currBandwidthDataAfter[0] - otherBandwidthDataBefore[i][0];
|
|
|
+ bandwidthData[1] += currBandwidthDataAfter[1] - otherBandwidthDataBefore[i][1];
|
|
|
+
|
|
|
mg_close_connection(conns[i]);
|
|
|
+ }
|
|
|
|
|
|
clock_t cpuTimeAfter = clock();
|
|
|
std::chrono::high_resolution_clock::time_point wallTimeAfter = std::chrono::high_resolution_clock::now();
|
|
|
- std::vector<size_t> bandwidthDataAfter = get_log_data(civetServer->getContext());
|
|
|
+ std::vector<size_t> serverBandwidthDataAfter = get_log_data(civetServer->getContext());
|
|
|
|
|
|
std::vector<double> timingData(2);
|
|
|
timingData[0] = std::chrono::duration_cast<std::chrono::duration<double>>(wallTimeAfter - wallTimeBefore).count();
|
|
|
timingData[1] = ((double)(cpuTimeAfter - cpuTimeBefore)) / CLOCKS_PER_SEC;
|
|
|
|
|
|
- std::vector<size_t> bandwidthData(2);
|
|
|
- bandwidthData[0] = bandwidthDataAfter[0] - bandwidthDataBefore[0] + bandwidthRcv;
|
|
|
- bandwidthData[1] = bandwidthDataAfter[1] - bandwidthDataBefore[1];
|
|
|
+ bandwidthData[0] += serverBandwidthDataAfter[0] - serverBandwidthDataBefore[0] + bandwidthRcv;
|
|
|
+ bandwidthData[1] += serverBandwidthDataAfter[1] - serverBandwidthDataBefore[1];
|
|
|
|
|
|
write_log_data(breakDownOutputMtx, breakDownOutputFilename, timingData, bandwidthData);
|
|
|
|