Time how long we're spending on the database thread
This commit is contained in:
parent
24cc6979fb
commit
75656712e3
|
@ -274,6 +274,8 @@ def setup():
|
||||||
|
|
||||||
hs.get_pusherpool().start()
|
hs.get_pusherpool().start()
|
||||||
|
|
||||||
|
hs.get_datastore().start_profiling()
|
||||||
|
|
||||||
if config.daemonize:
|
if config.daemonize:
|
||||||
print config.pid_file
|
print config.pid_file
|
||||||
daemon = Daemonize(
|
daemon = Daemonize(
|
||||||
|
|
|
@ -85,6 +85,28 @@ class SQLBaseStore(object):
|
||||||
self._db_pool = hs.get_db_pool()
|
self._db_pool = hs.get_db_pool()
|
||||||
self._clock = hs.get_clock()
|
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)
|
||||||
|
|
||||||
|
self._clock.looping_call(loop, 1000)
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def runInteraction(self, desc, func, *args, **kwargs):
|
def runInteraction(self, desc, func, *args, **kwargs):
|
||||||
"""Wraps the .runInteraction() method on the underlying db_pool."""
|
"""Wraps the .runInteraction() method on the underlying db_pool."""
|
||||||
|
@ -114,6 +136,9 @@ class SQLBaseStore(object):
|
||||||
"[TXN END] {%s} %f",
|
"[TXN END] {%s} %f",
|
||||||
name, end - start
|
name, end - start
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self._current_txn_total_time += end - start
|
||||||
|
|
||||||
with PreserveLoggingContext():
|
with PreserveLoggingContext():
|
||||||
result = yield self._db_pool.runInteraction(
|
result = yield self._db_pool.runInteraction(
|
||||||
inner_func, *args, **kwargs
|
inner_func, *args, **kwargs
|
||||||
|
|
Loading…
Reference in New Issue