This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
realtime:documentation:howto:debugging:cyclictest:faq [2018/07/16 14:43] ebugden Move FAQ to separate page |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Cyclictest - FAQ ====== | ||
- | Here are a few frequently asked questions about Cyclictest. | ||
- | |||
- | ==== ps shows the wrong scheduling class SCHED_OTHER ==== | ||
- | |||
- | Each cyclictest-task consist of one or more threads. ps -ce shows only the main-process not the threads of the main-process. ps -eLc | grep cyclic shows the main-process an the containing threads with the correct scheduler class SCHED_FIFO. | ||
- | <code bash> | ||
- | #>./cyclictest -t5 -p 80 -n -i 10000 | ||
- | |||
- | #> ps -cLe | grep cyclic | ||
- | 4764 4764 TS 19 pts/1 00:00:01 cyclictest | ||
- | 4764 4765 FF 120 pts/1 00:00:00 cyclictest | ||
- | 4764 4766 FF 119 pts/1 00:00:00 cyclictest | ||
- | 4764 4767 FF 118 pts/1 00:00:00 cyclictest | ||
- | 4764 4768 FF 117 pts/1 00:00:00 cyclictest | ||
- | 4764 4769 FF 116 pts/1 00:00:00 cyclictest | ||
- | </code> | ||
- | |||
- | ==== chrt shows the wrong scheduling class SCHED_OTHER ==== | ||
- | |||
- | Don't use the PID of the main-process, but the pid of one of the threads from the main-process. The threads are shown with ps -cLe | grep cyclic. | ||
- | <code bash> | ||
- | #> chrt -p 4766 | ||
- | pid 4766's current scheduling policy: SCHED_FIFO | ||
- | pid 4766's current scheduling priority: 79 | ||
- | </code> | ||
- | |||
- | ==== taskset for CPU affinity ==== | ||
- | |||
- | taskset command is Written by Robert M. Love. SMP operating systems have choices when it comes to scheduling processes: a new or newly rescheduled process can run on any available cpu. However, while it shouldn't matter where a new process runs, an existing process should go back to the same cpu it was running on simply because the cpu may still be caching data that belongs to that process. This is particularly apt to be true if the process is a thread: the other threads in the same program are very likely to have cpu cache of interest to their brethren (though obviously this also diminishes the performance gain that might be seen from multithreading) . For these reasons, scheduling algorithms pay attention to cpu affinity and try to keep it constant. | ||
- | It is possible to force a process to run only on a certain cpu. There are Linux system calls (sched_setaffinity and sched_getaffinity) and a command line "taskset". | ||
- | <code bash> | ||
- | #> taskset -c 3 top | ||
- | #> taskset -p [pid] | ||
- | </code> |