6 from __future__
import division
14 sys.path.append(os.environ[
'PERF_EXEC_PATH'] + \
15 '/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
24 load_mem_type_cnt = collections.Counter()
30 f = open(
'/proc/iomem',
'r') 31 for i, j
in enumerate(f):
32 m = re.split(
'-|:',j,2)
33 if m[2].strip() ==
'System RAM':
34 system_ram.append(long(m[0], 16))
35 system_ram.append(long(m[1], 16))
36 if m[2].strip() ==
'Persistent Memory':
37 pmem.append(long(m[0], 16))
38 pmem.append(long(m[1], 16))
41 print "Event: %s" % (event_name)
42 print "%-40s %10s %10s\n" % (
"Memory type",
"count",
"percentage"),
43 print "%-40s %10s %10s\n" % (
"----------------------------------------", \
44 "-----------",
"-----------"),
45 total = sum(load_mem_type_cnt.values())
46 for mem_type, count
in sorted(load_mem_type_cnt.most_common(), \
47 key = lambda(k, v): (v, k), reverse =
True):
48 print "%-40s %10d %10.1f%%\n" % (mem_type, count, 100 * count / total),
59 position = bisect.bisect(system_ram, phys_addr)
65 position = bisect.bisect(pmem, phys_addr)
77 return "Persistent Memory" 82 m = re.split(
'-|:',j,2)
83 if long(m[0], 16) <= phys_addr <= long(m[1], 16):
88 name = param_dict[
"ev_name"]
89 sample = param_dict[
"sample"]
90 phys_addr = sample[
"phys_addr"]
93 if event_name ==
None:
def process_event(param_dict)
def is_persistent_mem(phys_addr)
def is_system_ram(phys_addr)
def find_memory_type(phys_addr)