User Tools

Site Tools


realtime:documentation:howto:tools:cyclictest:faq

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
realtime:documentation:howto:tools:cyclictest:faq [2021/12/02 17:46]
bartwensley [How can the influence of Cyclictest be minimized when evaluating latencies on an isolated set of CPUs?]
realtime:documentation:howto:tools:cyclictest:faq [2024/09/03 12:30] (current)
ptesarik fix typo (begin โ†’ being)
Line 7: Line 7:
 To measure latencies, Cyclictest runs a non real-time master thread (scheduling class SCHED_OTHER) which starts a defined number of measuring threads with a defined real-time priority (scheduling class SCHED_FIFO). The measuring threads are woken up periodically with a defined interval by an expiring timer (cyclic alarm). Subsequently,​ the difference between the programmed and the effective wake-up time is calculated and handed over to the master thread via shared memory. The master thread tracks the latency values and prints the minimum, maximum, and average latencies after each iteration (default) or once the number of iterations specified is completed (--quiet). To measure latencies, Cyclictest runs a non real-time master thread (scheduling class SCHED_OTHER) which starts a defined number of measuring threads with a defined real-time priority (scheduling class SCHED_FIFO). The measuring threads are woken up periodically with a defined interval by an expiring timer (cyclic alarm). Subsequently,​ the difference between the programmed and the effective wake-up time is calculated and handed over to the master thread via shared memory. The master thread tracks the latency values and prints the minimum, maximum, and average latencies after each iteration (default) or once the number of iterations specified is completed (--quiet).
  
-==== Why does ps show Cyclictest as begin scheduled under a normal policy (SCHED_OTHER) not a real-time ​ policy? ====+==== Why does ps show Cyclictest as being scheduled under a normal policy (SCHED_OTHER) not a real-time ​ policy? ====
  
 The Cyclictest task always has one or more threads, several measuring threads which are scheduled under a real-time policy and a main thread (used to aggregate the measurements) which is scheduled under a normal policy. The command ''​ps -ce''​ only shows the main process and not its measuring threads. ​ To also see the measuring threads, use the command ''​ps -eLc | grep cyclic''​ which shows the main-process and all its threads which are indicated as being scheduled under a real-time policy (SCHED_FIFO). An example of output from the correct command is below. The first column is PID (process ID), the second column is LWP (light weight process ID, thread ID), the third column is CLS (scheduling class, scheduling policy), and the fourth column is PRI (priority). The Cyclictest task always has one or more threads, several measuring threads which are scheduled under a real-time policy and a main thread (used to aggregate the measurements) which is scheduled under a normal policy. The command ''​ps -ce''​ only shows the main process and not its measuring threads. ​ To also see the measuring threads, use the command ''​ps -eLc | grep cyclic''​ which shows the main-process and all its threads which are indicated as being scheduled under a real-time policy (SCHED_FIFO). An example of output from the correct command is below. The first column is PID (process ID), the second column is LWP (light weight process ID, thread ID), the third column is CLS (scheduling class, scheduling policy), and the fourth column is PRI (priority).
Line 23: Line 23:
 </​code>​ </​code>​
  
-==== Why does chrt show Cyclictest as begin scheduled under a normal policy (SCHED_OTHER) not a real-time ​ policy? ====+==== Why does chrt show Cyclictest as being scheduled under a normal policy (SCHED_OTHER) not a real-time ​ policy? ====
  
 The Cyclictest task consists of one or more threads, a main thread which is scheduled under SCHED_OTHER and measuring threads which are scheduled under a read-time policy (SCHED_FIFO). So, if the main thread PID is passed to //chrt//, then the indicated scheduling policy will be SCHED_OTHER. To see information about a measuring thread, its own PID must be passed to //chrt//. In Linux, threads are implemented as light weight processes so the measuring threads have a PID. These PIDs can be found using ''​ps -cLe | grep cyclic''​ whose output is explained in the answer to the previous FAQ question. Additionally,​ the example below uses the output in the example from the previous question. The Cyclictest task consists of one or more threads, a main thread which is scheduled under SCHED_OTHER and measuring threads which are scheduled under a read-time policy (SCHED_FIFO). So, if the main thread PID is passed to //chrt//, then the indicated scheduling policy will be SCHED_OTHER. To see information about a measuring thread, its own PID must be passed to //chrt//. In Linux, threads are implemented as light weight processes so the measuring threads have a PID. These PIDs can be found using ''​ps -cLe | grep cyclic''​ whose output is explained in the answer to the previous FAQ question. Additionally,​ the example below uses the output in the example from the previous question.
realtime/documentation/howto/tools/cyclictest/faq.txt ยท Last modified: 2024/09/03 12:30 by ptesarik