statistics: Add system stats

Report os load, process cpu time, and system available memory to each
statistics report.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2020-03-22 20:02:51 -04:00
parent f3667fd453
commit 6aae62542c
1 changed files with 18 additions and 2 deletions

View File

@ -1,9 +1,24 @@
# Support for logging periodic statistics # Support for logging periodic statistics
# #
# Copyright (C) 2018 Kevin O'Connor <kevin@koconnor.net> # Copyright (C) 2018-2020 Kevin O'Connor <kevin@koconnor.net>
# #
# This file may be distributed under the terms of the GNU GPLv3 license. # This file may be distributed under the terms of the GNU GPLv3 license.
import logging import os, time, logging
def get_os_stats(eventtime):
# Get core usage stats
msg = "sysload=%.2f cputime=%.3f" % (os.getloadavg()[0], time.clock())
# Get available system memory
try:
f = open("/proc/meminfo", "rb")
data = f.read()
f.close()
for line in data.split('\n'):
if line.startswith("MemAvailable:"):
msg = "%s memavail=%s" % (msg, line.split()[1])
except:
pass
return (False, msg)
class PrinterStats: class PrinterStats:
def __init__(self, config): def __init__(self, config):
@ -21,6 +36,7 @@ class PrinterStats:
def generate_stats(self, eventtime): def generate_stats(self, eventtime):
stats = [cb(eventtime) for cb in self.stats_cb] stats = [cb(eventtime) for cb in self.stats_cb]
if max([s[0] for s in stats]): if max([s[0] for s in stats]):
stats.append(get_os_stats(eventtime))
logging.info("Stats %.1f: %s", eventtime, logging.info("Stats %.1f: %s", eventtime,
' '.join([s[1] for s in stats])) ' '.join([s[1] for s in stats]))
return eventtime + 1. return eventtime + 1.