Ved-vampir | 98a9917 | 2015-03-17 14:58:15 +0300 | [diff] [blame] | 1 | from ps_mem import getMemStats |
| 2 | |
| 3 | from discover import provides |
Ved-vampir | 501065c | 2015-03-17 16:16:57 +0300 | [diff] [blame] | 4 | from utils import SensorInfo, get_pid_name |
Ved-vampir | 98a9917 | 2015-03-17 14:58:15 +0300 | [diff] [blame] | 5 | |
| 6 | |
| 7 | |
| 8 | @provides("perprocess-ram") |
| 9 | def 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-vampir | 501065c | 2015-03-17 16:16:57 +0300 | [diff] [blame] | 17 | private, shared = getMemStats(pid) |
Ved-vampir | 98a9917 | 2015-03-17 14:58:15 +0300 | [diff] [blame] | 18 | 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 | |
| 34 | def 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] |