From be763c4eca80d519dc90dbb04bb430c68d4112bc Mon Sep 17 00:00:00 2001 From: Taewoong Kim Date: Fri, 16 Dec 2016 16:29:41 +0900 Subject: [PATCH 1/2] Fix delta & rho calculation and remove my_rho & my_delta from ServerInfo Signed-off-by: Taewoong Kim --- src/dmclock_client.h | 30 +++--------------------------- src/dmclock_recs.h | 2 +- 2 files changed, 4 insertions(+), 28 deletions(-) diff --git a/src/dmclock_client.h b/src/dmclock_client.h index b44e121..acaf900 100644 --- a/src/dmclock_client.h +++ b/src/dmclock_client.h @@ -27,15 +27,11 @@ namespace crimson { struct ServerInfo { Counter delta_prev_req; Counter rho_prev_req; - uint32_t my_delta; - uint32_t my_rho; ServerInfo(Counter _delta_prev_req, Counter _rho_prev_req) : delta_prev_req(_delta_prev_req), - rho_prev_req(_rho_prev_req), - my_delta(0), - my_rho(0) + rho_prev_req(_rho_prev_req) { // empty } @@ -43,13 +39,6 @@ namespace crimson { inline void req_update(Counter delta, Counter rho) { delta_prev_req = delta; rho_prev_req = rho; - my_delta = 0; - my_rho = 0; - } - - inline void resp_update(PhaseType phase) { - ++my_delta; - if (phase == PhaseType::reservation) ++my_rho; } }; @@ -114,19 +103,6 @@ namespace crimson { */ void track_resp(const S& server_id, const PhaseType& phase) { DataGuard g(data_mtx); - - auto it = server_map.find(server_id); - if (server_map.end() == it) { - // this code can only run if a request did not precede the - // response or if the record was cleaned up b/w when - // the request was made and now - ServerInfo si(delta_counter, rho_counter); - si.resp_update(phase); - server_map.emplace(server_id, si); - } else { - it->second.resp_update(phase); - } - ++delta_counter; if (PhaseType::reservation == phase) { ++rho_counter; @@ -145,9 +121,9 @@ namespace crimson { return ReqParams(1, 1); } else { Counter delta = - 1 + delta_counter - it->second.delta_prev_req - it->second.my_delta; + delta_counter - it->second.delta_prev_req; Counter rho = - 1 + rho_counter - it->second.rho_prev_req - it->second.my_rho; + rho_counter - it->second.rho_prev_req; it->second.req_update(delta_counter, rho_counter); diff --git a/src/dmclock_recs.h b/src/dmclock_recs.h index f7a5aaa..4edb28b 100644 --- a/src/dmclock_recs.h +++ b/src/dmclock_recs.h @@ -35,7 +35,7 @@ namespace crimson { delta(_delta), rho(_rho) { - assert(0 != delta && 0 != rho && rho <= delta); + assert(rho <= delta); } ReqParams() : From d1a73a86ce6063c4d1af967a41f8a92e0608cc0c Mon Sep 17 00:00:00 2001 From: Taewoong Kim Date: Wed, 21 Dec 2016 14:43:02 +0900 Subject: [PATCH 2/2] Fix to use delta value for rho Signed-off-by: Taewoong Kim --- src/dmclock_client.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dmclock_client.h b/src/dmclock_client.h index acaf900..8f9cee3 100644 --- a/src/dmclock_client.h +++ b/src/dmclock_client.h @@ -122,9 +122,12 @@ namespace crimson { } else { Counter delta = delta_counter - it->second.delta_prev_req; +#ifdef USE_SEPARATED_RHO_CAL Counter rho = rho_counter - it->second.rho_prev_req; - +#else + Counter rho = delta; +#endif it->second.req_update(delta_counter, rho_counter); return ReqParams(uint32_t(delta), uint32_t(rho));