blob: db36710d81f4b8ba253b5dc987bf1eb60b4f69b0 [file] [log] [blame]
Ved-vampir98a99172015-03-17 14:58:15 +03001from ps_mem import getMemStats
2
3from discover import provides
Ved-vampir501065c2015-03-17 16:16:57 +03004from utils import SensorInfo, get_pid_name
Ved-vampir98a99172015-03-17 14:58:15 +03005
6
7
8@provides("perprocess-ram")
9def psram_stat(disallowed_prefixes=None, allowed_prefixes=None):
10 results = {}
11 pid_list = get_pid_list(disallowed_prefixes, allowed_prefixes)
12 print pid_list
13 for pid in pid_list:
14 try:
15 dev_name = get_pid_name(pid)
16
Ved-vampir501065c2015-03-17 16:16:57 +030017 private, shared = getMemStats(pid)
Ved-vampir98a99172015-03-17 14:58:15 +030018 total = private + shared
19 sys_total = get_ram_size()
20 usage = float(total) / float(sys_total)
21
22 sensor_name = "{0}.{1}".format(dev_name, pid)
23
24 results[sensor_name + ".private_mem"] = SensorInfo(private, False)
25 results[sensor_name + ".shared_mem"] = SensorInfo(shared, False)
26 results[sensor_name + ".used_mem"] = SensorInfo(total, False)
27 results[sensor_name + ".mem_usage_percent"] = SensorInfo(usage*100, False)
28 except IOError:
29 # permission denied or proc die
30 continue
31 return results
32
33
34def get_ram_size():
35 """ Return RAM size in Kb"""
36 with open("/proc/meminfo") as proc:
37 mem_total = proc.readline().split()
38 return mem_total[1]