Skip to content
Snippets Groups Projects
Commit ef520d8d authored by Michael Kaye's avatar Michael Kaye
Browse files

Include coarse CPU and Memory use in stats callbacks.

This requires the psutil module, and is still opt-in based on the report_stats
config option.
parent 03a26e28
No related branches found
No related tags found
No related merge requests found
......@@ -48,6 +48,18 @@ returned by the Client-Server API:
# configured on port 443.
curl -kv https://<host.name>/_matrix/client/versions 2>&1 | grep "Server:"
Upgrading to $NEXT_VERSION
====================
This release expands the anonymous usage stats sent if the opt-in
``report_stats`` configuration is set to ``true``. We now capture RSS memory
and cpu use at a very coarse level. This requires administrators to install
the optional ``psutil`` python module.
We would appreciate it if you could assist by ensuring this module is available
and ``report_stats`` is enabled. This will let us see if performance changes to
synapse are having an impact to the general community.
Upgrading to v0.15.0
====================
......
......@@ -401,6 +401,7 @@ def run(hs):
start_time = clock.time()
stats = {}
stats_process = None
@defer.inlineCallbacks
def phone_stats_home():
......@@ -427,6 +428,10 @@ def run(hs):
daily_sent_messages = yield hs.get_datastore().count_daily_sent_messages()
stats["daily_sent_messages"] = daily_sent_messages
if stats_process is not None:
with stats_process.oneshot():
stats["memory_rss"] = stats_process.memory_info().rss
stats["cpu_average"] = int(stats_process.cpu_info(interval=None))
logger.info("Reporting stats to matrix.org: %s" % (stats,))
try:
......@@ -438,6 +443,21 @@ def run(hs):
logger.warn("Error reporting stats: %s", e)
if hs.config.report_stats:
try:
import psutil
stats_process = psutil.Process()
# Ensure we can fetch both, and make the initial request for cpu_percent
# so the next request will use this as the initial point.
stats_process.memory_info().rss
stats_process.cpu_percent(interval=None)
except (ImportError, AttributeError):
logger.warn(
"report_stats enabled but psutil is not installed or incorrect version."
" Disabling reporting of memory/cpu stats."
" Ensuring psutil is available will help matrix track performance changes across releases."
)
stats_process = None
logger.info("Scheduling stats reporting for 3 hour intervals")
clock.looping_call(phone_stats_home, 3 * 60 * 60 * 1000)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment