Я пытаюсь понять частоту переключения контекста в моей системе (работает на AWS EC2) и откуда поступают коммутаторы.Просто получение числа уже сбивает с толку, так как два инструмента, которые я знаю, могут выводить такую метрику, дают мне разные результаты.Вот вывод из vmstat:
$ vmstat -w 2
procs -------------------memory------------------ ---swap-- -----io---- --system-- -----cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st
8 0 0 443888 492304 8632452 0 0 0 1 0 0 14 2 84 0 0
37 0 0 444820 492304 8632456 0 0 0 20 131602 155911 43 5 52 0 0
8 0 0 445040 492304 8632460 0 0 0 42 131117 147812 46 4 50 0 0
13 0 0 446572 492304 8632464 0 0 0 34 129154 142260 49 4 46 0 0
Число ~ 140k-160k / sec.
Но perf говорит другое:
$ sudo perf stat -a
Performance counter stats for 'system wide':
2980794.013800 cpu-clock (msec) # 35.997 CPUs utilized
12,335,935 context-switches # 0.004 M/sec
2,086,162 cpu-migrations # 0.700 K/sec
11,617 page-faults # 0.004 K/sec
...
0.004 M / secочевидно, 4k / sec.
Почему существует разница между этими двумя инструментами?Я неправильно истолковываю что-то в одном из них или их показатели CS как-то отличаются?
FWIW, я пытался сделать то же самое на машине с другой рабочей нагрузкой, и разница там даже в два раза больше.
Среда:
- AWS EC2 c5.9 большой экземпляр
- Amazon Linux, ядро 4.14.94-73.73.amzn1.x86_64
- Служба работаетна докере 18.06.1-ce