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