forked from mirrors/linux
		
	 a570da2148
			
		
	
	
		a570da2148
		
	
	
	
	
		
			
			Otherwise when debugging we see just "python" in perf, top, etc. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Reviewed-by: Ian Rogers <irogers@google.com> Link: https://lore.kernel.org/r/20250312203141.285263-4-acme@kernel.org Signed-off-by: Namhyung Kim <namhyung@kernel.org>
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #! /usr/bin/env python
 | |
| # SPDX-License-Identifier: GPL-2.0
 | |
| # -*- python -*-
 | |
| # -*- coding: utf-8 -*-
 | |
| 
 | |
| import perf
 | |
| 
 | |
| def change_proctitle():
 | |
|     try:
 | |
|         import setproctitle
 | |
|         setproctitle.setproctitle("tracepoint.py")
 | |
|     except:
 | |
|         print("Install the setproctitle python package to help with top and friends")
 | |
| 
 | |
| def main():
 | |
|     change_proctitle()
 | |
|     cpus    = perf.cpu_map()
 | |
|     threads = perf.thread_map(-1)
 | |
|     evlist = perf.parse_events("sched:sched_switch", cpus, threads)
 | |
|     # Disable tracking of mmaps and similar that are unnecessary.
 | |
|     for ev in evlist:
 | |
|         ev.tracking = False
 | |
|     # Configure evsels with default record options.
 | |
|     evlist.config()
 | |
|     # Simplify the sample_type and read_format of evsels
 | |
|     for ev in evlist:
 | |
|         ev.sample_type = ev.sample_type & ~perf.SAMPLE_IP
 | |
|         ev.read_format = 0
 | |
| 
 | |
|     evlist.open()
 | |
|     evlist.mmap()
 | |
|     evlist.enable();
 | |
| 
 | |
|     while True:
 | |
|         evlist.poll(timeout = -1)
 | |
|         for cpu in cpus:
 | |
|             event = evlist.read_on_cpu(cpu)
 | |
|             if not event:
 | |
|                 continue
 | |
| 
 | |
|             if not isinstance(event, perf.sample_event):
 | |
|                 continue
 | |
| 
 | |
|             print("time %u prev_comm=%s prev_pid=%d prev_prio=%d prev_state=0x%x ==> next_comm=%s next_pid=%d next_prio=%d" % (
 | |
|                    event.sample_time,
 | |
|                    event.prev_comm,
 | |
|                    event.prev_pid,
 | |
|                    event.prev_prio,
 | |
|                    event.prev_state,
 | |
|                    event.next_comm,
 | |
|                    event.next_pid,
 | |
|                    event.next_prio))
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 |