~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/tracing/rtla/sample/timerlat_load.py

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/usr/bin/env python3
  2 # SPDX-License-Identifier: GPL-2.0-only
  3 #
  4 # Copyright (C) 2024 Red Hat, Inc. Daniel Bristot de Oliveira <bristot@kernel.org>
  5 #
  6 # This is a sample code about how to use timerlat's timer by any workload
  7 # so rtla can measure and provide auto-analysis for the overall latency (IOW
  8 # the response time) for a task.
  9 #
 10 # Before running it, you need to dispatch timerlat with -U option in a terminal.
 11 # Then # run this script pinned to a CPU on another terminal. For example:
 12 #
 13 # timerlat_load.py 1 -p 95
 14 #
 15 # The "Timerlat IRQ" is the IRQ latency, The thread latency is the latency
 16 # for the python process to get the CPU. The Ret from user Timer Latency is
 17 # the overall latency. In other words, it is the response time for that
 18 # activation.
 19 #
 20 # This is just an example, the load is reading 20MB of data from /dev/full
 21 # It is in python because it is easy to read :-)
 22 
 23 import argparse
 24 import sys
 25 import os
 26 
 27 parser = argparse.ArgumentParser(description='user-space timerlat thread in Python')
 28 parser.add_argument("cpu", help='CPU to run timerlat thread')
 29 parser.add_argument("-p", "--prio", help='FIFO priority')
 30 
 31 args = parser.parse_args()
 32 
 33 try:
 34     affinity_mask = { int(args.cpu) }
 35 except:
 36     print("Invalid cpu: " + args.cpu)
 37     exit(1)
 38 
 39 try:
 40     os.sched_setaffinity(0, affinity_mask);
 41 except:
 42     print("Error setting affinity")
 43     exit(1)
 44 
 45 if (args.prio):
 46     try:
 47         param = os.sched_param(int(args.prio))
 48         os.sched_setscheduler(0, os.SCHED_FIFO, param)
 49     except:
 50         print("Error setting priority")
 51         exit(1)
 52 
 53 try:
 54     timerlat_path = "/sys/kernel/tracing/osnoise/per_cpu/cpu" + args.cpu + "/timerlat_fd"
 55     timerlat_fd = open(timerlat_path, 'r')
 56 except:
 57     print("Error opening timerlat fd, did you run timerlat -U?")
 58     exit(1)
 59 
 60 try:
 61     data_fd = open("/dev/full", 'r');
 62 except:
 63     print("Error opening data fd")
 64 
 65 while True:
 66     try:
 67         timerlat_fd.read(1)
 68         data_fd.read(20*1024*1024)
 69     except:
 70         print("Leaving")
 71         break
 72 
 73 timerlat_fd.close()
 74 data_fd.close()

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php