«vmstat» и «perf stat -a» показывают разные цифры для переключения контекста - PullRequest
2 голосов
/ 28 мая 2019

Я пытаюсь понять частоту переключения контекста в моей системе (работает на 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

1 Ответ

3 голосов
/ 29 мая 2019

Некоторые последние версии perf имеют ошибку масштабирования единицы в коде печати. Вручную сделайте 12.3M / wall-time и посмотрите, нормально ли это. (предупреждение спойлера: это согласно комментарию ОП.)

https://lore.kernel.org/patchwork/patch/1025968/

Commit 0aa802a79469 ("perf stat: избавиться от дополнительного отображения часов функция ") представила ошибку в основной версии Linux 4.19-rc1 или около того.

Таким образом, perf_stat__update_shadow_stats() теперь сохраняет масштабированные значения событий часов. в мсек, вместо оригинальных нсек. Но при расчете значений Статистику теней мы все еще рассматриваем в качестве значений событий часов в nsecs. Это результаты в неверных теневых значениях статов.

Commit 57ddf09173c1 в понедельник, 17 декабря 2018 г. исправил его в 5.0-rc1, в конечном итоге выпустив с perf вышестоящей версией 5.0.


В деревьях ядра поставщика, которые cherry-pick фиксирует для своих стабильных ядер, может быть ошибка или исправлена ​​ ошибка ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...