/contextswitch

Little micro-benchmark for Linux to test the cost of context switching and system calls

Primary LanguageCGNU General Public License v3.0GPL-3.0

Little micro-benchmarks to assess the performance overhead of context
switching.

timesyscall: Benchmarks the overhead of a system call.
timectxsw:   Benchmarks the overhead of context switching between 2 processes.
timetctxsw:  Benchmarks the overhead of context switching between 2 threads.
timectxswws: Benchmarks the overhead of context switching between 2 processes
             using a working set of the size specified in argument.
timetctxsw2: Benchmarks the overhead of context switching between 2 threads,
             by using a shed_yield() method.
             If you do taskset -a 1, all threads should be scheduled on the
             same processor, so you are really doing thread context switch.
             Then to be sure that you are really doing it, just do:
               strace -ff -tt -v taskset -a 1 ./timetctxsw2
             Now why sched_yield() is enough for testing ? Because, it place
             the current thread at the end of the ready queue. So the next
             ready thread will be scheduled.
             I also added sched_setscheduler(SCHED_FIFO) to get the best
             performances.
             
Update: RDTSC to get the tick time of each loop.        
    
In this benchmark, when you run cpubench.sh, you need give a parameters, and it will generate 4 files under $1/

In our new benchmark, we don’t generate the avg, instead we will get the cpu ticks for each loop. The data will be for post processing.

To write your own script, please refer to the bare_metal_4_13.sh as a example.