Simplify PerformanceCounters.update interface

we already have the duration for the update, so may as well use it rather than
passing extra params around and recalculating it.
This commit is contained in:
Richard van der Hoff 2019-06-19 20:58:36 +01:00
parent 68128d5626
commit f682af052d
1 changed files with 12 additions and 11 deletions

View File

@ -167,22 +167,22 @@ class PerformanceCounters(object):
self.current_counters = {} self.current_counters = {}
self.previous_counters = {} self.previous_counters = {}
def update(self, key, start_time, end_time=None): def update(self, key, duration_secs):
if end_time is None:
end_time = time.time()
duration = end_time - start_time
count, cum_time = self.current_counters.get(key, (0, 0)) count, cum_time = self.current_counters.get(key, (0, 0))
count += 1 count += 1
cum_time += duration cum_time += duration_secs
self.current_counters[key] = (count, cum_time) self.current_counters[key] = (count, cum_time)
return end_time
def interval(self, interval_duration, limit=3): def interval(self, interval_duration_secs, limit=3):
counters = [] counters = []
for name, (count, cum_time) in iteritems(self.current_counters): for name, (count, cum_time) in iteritems(self.current_counters):
prev_count, prev_time = self.previous_counters.get(name, (0, 0)) prev_count, prev_time = self.previous_counters.get(name, (0, 0))
counters.append( counters.append(
((cum_time - prev_time) / interval_duration, count - prev_count, name) (
(cum_time - prev_time) / interval_duration_secs,
count - prev_count,
name,
)
) )
self.previous_counters = dict(self.current_counters) self.previous_counters = dict(self.current_counters)
@ -362,10 +362,11 @@ class SQLBaseStore(object):
time_then = self._previous_loop_ts time_then = self._previous_loop_ts
self._previous_loop_ts = time_now self._previous_loop_ts = time_now
ratio = (curr - prev) / (time_now - time_then) duration = time_now - time_then
ratio = (curr - prev) / duration
top_three_counters = self._txn_perf_counters.interval( top_three_counters = self._txn_perf_counters.interval(
time_now - time_then, limit=3 duration, limit=3
) )
perf_logger.info( perf_logger.info(
@ -453,7 +454,7 @@ class SQLBaseStore(object):
transaction_logger.debug("[TXN END] {%s} %f sec", name, duration) transaction_logger.debug("[TXN END] {%s} %f sec", name, duration)
self._current_txn_total_time += duration self._current_txn_total_time += duration
self._txn_perf_counters.update(desc, start, end) self._txn_perf_counters.update(desc, duration)
sql_txn_timer.labels(desc).observe(duration) sql_txn_timer.labels(desc).observe(duration)
@defer.inlineCallbacks @defer.inlineCallbacks