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