koder aka kdanilov | dd60c50 | 2015-03-17 16:23:42 +0200 | [diff] [blame] | 1 | from ps_mem import get_mem_stats |
Ved-vampir | 98a9917 | 2015-03-17 14:58:15 +0300 | [diff] [blame] | 2 | |
| 3 | from discover import provides |
Ved-vampir | c14f53f | 2015-03-17 16:35:16 +0300 | [diff] [blame] | 4 | from utils import SensorInfo, get_pid_name, get_pid_list |
Ved-vampir | 98a9917 | 2015-03-17 14:58:15 +0300 | [diff] [blame] | 5 | |
Ved-vampir | 98a9917 | 2015-03-17 14:58:15 +0300 | [diff] [blame] | 6 | @provides("perprocess-ram") |
| 7 | def 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 kdanilov | dd60c50 | 2015-03-17 16:23:42 +0200 | [diff] [blame] | 15 | private, shared = get_mem_stats(pid) |
Ved-vampir | 98a9917 | 2015-03-17 14:58:15 +0300 | [diff] [blame] | 16 | 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 kdanilov | dd60c50 | 2015-03-17 16:23:42 +0200 | [diff] [blame] | 25 | name = sensor_name + ".mem_usage_percent" |
| 26 | results[name] = SensorInfo(usage * 100, False) |
Ved-vampir | 98a9917 | 2015-03-17 14:58:15 +0300 | [diff] [blame] | 27 | except IOError: |
| 28 | # permission denied or proc die |
| 29 | continue |
| 30 | return results |
| 31 | |
| 32 | |
| 33 | def 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] |