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.
pull/5499/head
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