Source code for crossbar.edge.worker.monitor._memory

##############################################################################
#
#                        Crossbar.io
#     Copyright (C) typedef int GmbH. All rights reserved.
#
##############################################################################

from autobahn.util import utcnow
from twisted.internet.defer import succeed

from crossbar.edge.worker.monitor._base import Monitor

__all__ = ("MemoryMonitor",)


[docs] class MemoryMonitor(Monitor): """ RAM monitoring. """
[docs] ID = "memory"
def __init__(self, config=None): Monitor.__init__(self, config)
[docs] def poll(self): """ Measure current stats value and return new stats. """ Monitor.poll(self) # create new, empty event # current = { # the UTC timestamp when measurement was taken "timestamp": utcnow(), # the effective last period in secods "last_period": self._last_period, } # FIXME: add ratio of ram usage with open("/proc/meminfo") as f: res = f.read() new = res.split() new_clean = [x.replace(":", "") for x in new if x != "kB"] for i in range(0, len(new_clean), 2): k = "{}".format(new_clean[i]) current[k] = int(new_clean[i + 1]) self._last_value = current return succeed(self._last_value)