The sysjitter utility measures the extent to which the system introduces jitter and so impacts on the user-level process. Sysjitter runs a thread on each processor core and when the thread is de-scheduled from the core it measures for how long. Sysjitter produces summary statistics for each processor core. The sysjitter utility can be downloaded from https://github.com/Xilinx-CNS/cns-sysjitter.
Sysjitter should be run on a system that is idle. When running on a system with cpusets enabled, run sysjitter as root.
Refer to the sysjitter README file for further information on building and running sysjitter.
The following is an example of the output from sysjitter on a single CPU socket server with four CPU cores.
./sysjitter --runtime 10 200 | column -t
core_i: 0 1 2 3
threshold(ns): 200 200 200 200
cpu_mhz: 3215 3215 3215 3215
runtime(ns): 9987653973 9987652245 9987652070 9987652027
runtime(s): 9.988 9.988 9.988 9.988
int_n: 10001 10130 10012 10001
int_n_per_sec: 1001.336 1014.252 1002.438 1001.336
int_min(ns): 1333 1247 1299 1446
int_median(ns): 1390 1330 1329 1470
int_mean(ns): 1424 1452 1452 1502
int_90(ns): 1437 1372 1357 1519
int_99(ns): 1619 5046 2392 1688
int_999(ns): 5065 22977 15604 3694
int_9999(ns): 31260 39017 184305 36419
int_99999(ns): 40613 45065 347097 49998
int_max(ns): 40613 45065 347097 49998
int_total(ns): 14244846 14719972 14541991 15031294
int_total(%): 0.143 0.147 0.146 0.150
The table below describes the output fields of the sysjitter utility.
Field | Description |
---|---|
threshold
(ns)
|
Ignore any interrupts shorter than this period |
cpu_mhz
|
CPU speed |
runtime (ns)
|
Runtime of sysjitter - nanoseconds |
runtime (s)
|
Runtime of sysjitter - seconds |
int_n
|
Number of interruptions to the user thread |
int_n_per_sec
|
Number of interruptions to the user thread per second |
int_min (ns)
|
Minimum time taken away from the user thread due to an interruption |
int_median
(ns)
|
Median time taken away from the user thread due to an interruption |
int_mean
(ns)
|
Mean time taken away from the user thread due to an interruption |
int_90 (ns)
|
90%percentile value |
int_99 (ns)
|
99% percentile value |
int_999 (ns)
|
99.9% percentile value |
int_9999
(ns)
|
99.99% percentile value |
int_99999
(ns)
|
99.999% percentile value |
int_max (ns)
|
Max time taken away from the user thread |
int_total
(ns)
|
Total time spent not processing the user thread |
int_total
(%)
|
int_total (ns) as a
percentage of total runtime |