Skip to content
Snippets Groups Projects
Commit eebb35d0 authored by Gopi Krishna Nedanuri's avatar Gopi Krishna Nedanuri Committed by Ankur Bansal
Browse files

lrdp_v2: Print swap memory usage per task

Print swap memory seperately for each task.

Change-Id: I47a5356df1ce0745bcc4c5cbd8d77fb8a8bec739
parent 480d5924
No related branches found
No related tags found
No related merge requests found
...@@ -72,9 +72,9 @@ def do_dump_process_memory(ramdump): ...@@ -72,9 +72,9 @@ def do_dump_process_memory(ramdump):
adj = ramdump.read_u16(signal_struct + offset_adj) adj = ramdump.read_u16(signal_struct + offset_adj)
if adj & 0x8000: if adj & 0x8000:
adj = adj - 0x10000 adj = adj - 0x10000
rss = get_rss(ramdump, task_struct) * 4 rss, swap = get_rss(ramdump, task_struct)
if rss != 0: if rss != 0:
task_info.append([thread_task_name, thread_task_pid, rss, adj]) task_info.append([thread_task_name, thread_task_pid, rss, swap, rss + swap, adj])
next_task = ramdump.read_word(init_next_task) next_task = ramdump.read_word(init_next_task)
if next_task is None: if next_task is None:
break break
...@@ -92,13 +92,13 @@ def do_dump_process_memory(ramdump): ...@@ -92,13 +92,13 @@ def do_dump_process_memory(ramdump):
if init_next_task == orig_init_next_task: if init_next_task == orig_init_next_task:
break break
task_info = sorted(task_info, key=lambda l: l[2], reverse=True) task_info = sorted(task_info, key=lambda l: l[4], reverse=True)
str = '{0:<17s}{1:>8s}{2:>17s}{3:>8}\n'.format( str = '{0:<17s}{1:>8s}{2:>19s}{3:>12s}{4:>8}\n'.format(
'Task name', 'PID', 'RSS in kB', 'ADJ') 'Task name', 'PID', 'RSS in kB', 'SWAP in kB', 'ADJ')
memory_file.write(str) memory_file.write(str)
for item in task_info: for item in task_info:
str = '{0:<17s}{1:8d}{2:13,d}({3:2.1f}%) {4:6}\n'.format( str = '{0:<17s}{1:8d}{2:13,d}({4:2.1f}%){3:13,d} {5:6}\n'.format(
item[0], item[1], item[2], (100.0 * item[2]) / total_mem, item[3]) item[0], item[1], item[2], item[3], (100.0 * item[2]) / total_mem, item[5])
memory_file.write(str) memory_file.write(str)
memory_file.close() memory_file.close()
print_out_str('---wrote meminfo to memory.txt') print_out_str('---wrote meminfo to memory.txt')
...@@ -107,24 +107,32 @@ def do_dump_process_memory(ramdump): ...@@ -107,24 +107,32 @@ def do_dump_process_memory(ramdump):
def get_rss(ramdump, task_struct): def get_rss(ramdump, task_struct):
offset_mm = ramdump.field_offset('struct task_struct', 'mm') offset_mm = ramdump.field_offset('struct task_struct', 'mm')
offset_rss_stat = ramdump.field_offset('struct mm_struct', 'rss_stat') offset_rss_stat = ramdump.field_offset('struct mm_struct', 'rss_stat')
offset_rss = ramdump.field_offset('struct mm_rss_stat', 'count') offset_file_rss = ramdump.field_offset('struct mm_rss_stat', 'count')
offset_anon_rss = ramdump.field_offset('struct mm_rss_stat', 'count[1]') offset_anon_rss = ramdump.field_offset('struct mm_rss_stat', 'count[1]')
offset_file_rss = ramdump.field_offset('struct mm_rss_stat', 'count[2]') offset_swap_rss = ramdump.field_offset('struct mm_rss_stat', 'count[2]')
if ramdump.kernel_version >= (4, 9):
offset_shmem_rss = ramdump.field_offset('struct mm_rss_stat', 'count[3]')
mm_struct = ramdump.read_word(task_struct + offset_mm) mm_struct = ramdump.read_word(task_struct + offset_mm)
if mm_struct == 0: if mm_struct == 0:
return 0 return 0, 0
anon_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_anon_rss) anon_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_anon_rss)
rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_rss) swap_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_swap_rss)
file_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_file_rss) file_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_file_rss)
if ramdump.kernel_version >= (4, 9):
shmem_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_shmem_rss)
else:
shmem_rss = 0
# Ignore negative RSS values # Ignore negative RSS values
if anon_rss > 0x80000000: if anon_rss > 0x80000000:
anon_rss = 0 anon_rss = 0
if rss > 0x80000000: if swap_rss > 0x80000000:
rss = 0 swap_rss = 0
if file_rss > 0x80000000: if file_rss > 0x80000000:
file_rss = 0 file_rss = 0
total_rss = rss + anon_rss + file_rss if shmem_rss > 0x80000000:
return total_rss shmem_rss = 0
total_rss = anon_rss + file_rss + shmem_rss
return total_rss * 4, swap_rss * 4
@register_parser('--print-memory-info', 'Print memory usage info') @register_parser('--print-memory-info', 'Print memory usage info')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment