diff options
author | Kegan Dougal <kegan@matrix.org> | 2015-02-09 15:20:56 +0000 |
---|---|---|
committer | Kegan Dougal <kegan@matrix.org> | 2015-02-09 15:20:56 +0000 |
commit | 53557fc53259631d71055ef2ab8a6916b00d229b (patch) | |
tree | 208db19fb5bbcc5416e669bc496adc49acdcb1a7 /synapse/storage/_base.py | |
parent | Fix bugs so lazy room joining works as intended. (diff) | |
parent | Merge pull request #55 from matrix-org/profiling (diff) | |
download | synapse-53557fc53259631d71055ef2ab8a6916b00d229b.tar.xz |
Merge branch 'develop' into application-services
Diffstat (limited to 'synapse/storage/_base.py')
-rw-r--r-- | synapse/storage/_base.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py index b350fd61f1..310ee0104c 100644 --- a/synapse/storage/_base.py +++ b/synapse/storage/_base.py @@ -85,6 +85,28 @@ class SQLBaseStore(object): self._db_pool = hs.get_db_pool() self._clock = hs.get_clock() + self._previous_txn_total_time = 0 + self._current_txn_total_time = 0 + self._previous_loop_ts = 0 + + def start_profiling(self): + self._previous_loop_ts = self._clock.time_msec() + + def loop(): + curr = self._current_txn_total_time + prev = self._previous_txn_total_time + self._previous_txn_total_time = curr + + time_now = self._clock.time_msec() + time_then = self._previous_loop_ts + self._previous_loop_ts = time_now + + ratio = (curr - prev)/(time_now - time_then) + + logger.info("Total database time: %.3f%%", ratio * 100) + + self._clock.looping_call(loop, 10000) + @defer.inlineCallbacks def runInteraction(self, desc, func, *args, **kwargs): """Wraps the .runInteraction() method on the underlying db_pool.""" @@ -114,6 +136,9 @@ class SQLBaseStore(object): "[TXN END] {%s} %f", name, end - start ) + + self._current_txn_total_time += end - start + with PreserveLoggingContext(): result = yield self._db_pool.runInteraction( inner_func, *args, **kwargs |