OS - Ubuntu 16 , 64bit
cpu - 2 cores x86
Я запустил три теста sysbench cpu
# sysbench --num-threads=2 --cpu-max-prime=360000 --test=cpu run;
ЦП полностью перегружен.
Итак, я ожидаю, что процессы sysbench должны показывать множество энергонезависимых переключений контекста поскольку они конкурируют за ядра процессора. Они страдают от нехватки ресурсов процессора.
# ps axH
23903 pts/6 Sl+ 0:00 sysbench --num-threads 2 --cpu-max-prime 360000 --test cpu run
23903 pts/6 Rl+ 0:07 sysbench --num-threads 2 --cpu-max-prime 360000 --test cpu run
23903 pts/6 Rl+ 0:07 sysbench --num-threads 2 --cpu-max-prime 360000 --test cpu run
23914 pts/7 Sl+ 0:00 sysbench --num-threads 2 --cpu-max-prime 360000 --test cpu run
23914 pts/7 Rl+ 0:04 sysbench --num-threads 2 --cpu-max-prime 360000 --test cpu run
23914 pts/7 Rl+ 0:04 sysbench --num-threads 2 --cpu-max-prime 360000 --test cpu run
23933 pts/8 Sl+ 0:00 sysbench --num-threads 2 --cpu-max-prime 360000 --test cpu run
23933 pts/8 Rl+ 0:02 sysbench --num-threads 2 --cpu-max-prime 360000 --test cpu run
23933 pts/8 Rl+ 0:02 sysbench --num-threads 2 --cpu-max-prime 360000 --test cpu run
У нас есть 3 процесса и 6 потоков
Однако этого не происходит.
Когда я смотрю pidstat о контексте номера переключателей показывает нули.
# pidstat -w 10 -u -h
Linux 4.4.0-62-generic (test-kub-04) 05/26/2020 _x86_64_ (2 CPU)
# Time UID PID %usr %system %guest %CPU CPU cswch/s nvcswch/s Command
1590446120 0 750 0.00 0.00 0.00 0.00 0 10.39 0.00 vmtoolsd
1590446120 0 18778 66.63 0.00 0.00 66.63 1 0.00 0.00 sysbench
1590446120 0 18781 66.53 0.00 0.00 66.53 0 0.00 0.00 sysbench
1590446120 0 18791 66.63 0.00 0.00 66.63 1 0.00 0.00 sysbench
1590446120 0 18804 0.00 0.00 0.00 0.00 0 0.10 0.10 pidstat
Насколько я понимаю, каждый временной интервал 1 \ USER_HZ ЦП прекращает выполнение текущего кода, сохраняет всю необходимую информацию о текущем коде обработки и переключается на выполнение кода планировщика linux , затем планировщик решает, какой следующий процесс поставить на каждое ядро процессора. Каждое ядро процессора загружает необходимый контекст и выполняет его для следующего временного интервала 1 \ USER_HZ.
Таким образом, на мой взгляд, номера переключателей контекста должны расти одновременно для процессов, особенно для сильно загруженной системы.