Я слежу за процессом mysql в ubuntu 12.04, используя одновременно mpstat
и pidstat
. Во время отладки загрузки процессора я заметил кое-что необычное. Хотя оба инструмента согласны с тем, что загрузка ЦП происходит, они не согласны о том, что это за нагрузка. Вот примерный временной отрезок:
$ pidstat -p 2763 1
01:36:36 PM PID %usr %system %guest %CPU CPU Command
01:36:36 PM 2763 0.00 0.00 0.00 0.00 0 mysqld
01:36:37 PM 2763 0.00 1.00 0.00 1.00 0 mysqld
01:36:38 PM 2763 0.00 5.00 0.00 5.00 0 mysqld
01:36:39 PM 2763 0.00 11.00 0.00 11.00 0 mysqld
01:36:40 PM 2763 0.00 12.00 0.00 12.00 0 mysqld
01:36:41 PM 2763 0.00 0.00 0.00 0.00 0 mysqld
01:36:42 PM 2763 0.00 0.00 0.00 0.00 0 mysqld
01:36:43 PM 2763 0.00 5.00 0.00 5.00 0 mysqld
01:36:44 PM 2763 0.00 170.00 0.00 170.00 0 mysqld
01:36:45 PM 2763 0.00 150.00 0.00 150.00 0 mysqld
01:36:46 PM 2763 0.00 4.00 0.00 4.00 0 mysqld
01:36:47 PM 2763 0.00 7.00 0.00 7.00 0 mysqld
01:36:48 PM 2763 0.00 7.00 0.00 7.00 0 mysqld
01:36:49 PM 2763 0.00 59.00 0.00 59.00 0 mysqld
01:36:50 PM 2763 0.00 85.00 0.00 85.00 0 mysqld
Обратите внимание, что pidstat
сообщает об интенсивном использовании на уровне системы в различные моменты времени. Вот mpstat
примерно за тот же период времени:
$ mpstat -P ALL 1
01:36:37 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:38 PM all 0.38 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.62
01:36:38 PM 0 2.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 97.98
01:36:38 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:38 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:38 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:38 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:38 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:38 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:38 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:38 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:39 PM all 0.88 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.12
01:36:39 PM 0 4.08 0.00 0.00 0.00 0.00 0.00 0.00 0.00 95.92
01:36:39 PM 1 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.00
01:36:39 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:39 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:39 PM 4 0.99 0.00 0.99 0.00 0.00 0.00 0.00 0.00 98.02
01:36:39 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:39 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:39 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:39 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:40 PM all 0.62 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.38
01:36:40 PM 0 5.05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 94.95
01:36:40 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:40 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:40 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:40 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:40 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:40 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:40 PM 7 0.99 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.01
01:36:40 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:41 PM all 1.25 0.00 0.25 0.00 0.00 0.12 0.00 0.00 98.38
01:36:41 PM 0 10.00 0.00 1.00 0.00 0.00 1.00 0.00 0.00 88.00
01:36:41 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:41 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:41 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:41 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:41 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:41 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:41 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:41 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:42 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:42 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:42 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:42 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:42 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:42 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:42 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:42 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:42 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:42 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:43 PM all 0.12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.88
01:36:43 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:43 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:43 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:43 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:43 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:43 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:43 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:43 PM 7 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.00
01:36:43 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:44 PM all 2.88 0.00 0.00 0.00 0.00 0.00 0.00 0.00 97.12
01:36:44 PM 0 22.77 0.00 0.99 0.00 0.00 0.00 0.00 0.00 76.24
01:36:44 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:44 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:44 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:44 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:44 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:44 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:44 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:44 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:45 PM all 23.72 0.00 0.12 0.00 0.00 0.12 0.00 0.00 76.03
01:36:45 PM 0 99.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00
01:36:45 PM 1 89.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11.00
01:36:45 PM 2 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.00
01:36:45 PM 3 0.00 0.00 0.99 0.00 0.00 0.00 0.00 0.00 99.01
01:36:45 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:45 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:45 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:45 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:45 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:46 PM all 13.89 0.00 0.00 0.00 0.00 0.00 0.13 0.00 85.98
01:36:46 PM 0 34.34 0.00 0.00 0.00 0.00 1.01 0.00 0.00 64.65
01:36:46 PM 1 69.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 31.00
01:36:46 PM 2 5.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 95.00
01:36:46 PM 3 3.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00
01:36:46 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:46 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:46 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:46 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:46 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:47 PM all 0.50 0.00 0.00 0.00 0.00 0.13 0.00 0.00 99.37
01:36:47 PM 0 3.96 0.00 0.00 0.00 0.00 0.00 0.00 0.00 96.04
01:36:47 PM 1 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.00
01:36:47 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:47 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:47 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:47 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:47 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:47 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:47 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
01:36:48 PM all 0.63 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.37
01:36:48 PM 0 5.10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 94.90
01:36:48 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:48 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:48 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:48 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:48 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:48 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
01:36:48 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Я не удивлен, увидев их разногласия по поводу общих процентов, но я не могу понять, почему pidstat
и mpstat
не согласен с типом загрузки процессора. mpstat
указывает, что загрузка происходит на уровне приложения. pidstat
указывает, что это происходит на уровне ядра. Что тут происходит? Я предположил, что оба являются представлениями в / proc
, но я недостаточно разбираюсь в их внутреннем устройстве, чтобы знать, откуда они получают разные сигналы.
РЕДАКТИРОВАТЬ: Лучше всего, что я могу сказать об этом результате расхождений между механизмом вычисления / proc
, используемым каждой программой.
pidstat
использует / proc /
: https://github.com/sysstat/sysstat/blob/master/pidstat.c#L373-L382
mpstat
использует / proc / uptime
и / proc / stat
: https://github.com/sysstat/sysstat/blob/master/rd_stats.c#L59-L163
Итак, у меня есть причина, но на самом деле это не основная причина:
mpstat
полагается на / proc / stat
для своих показателей процессора. . pidstat
полагается на / proc /
. Эти файлы временами расходятся во мнениях относительно количества скачков ядра, наблюдаемых за определенный период времени, что, я полагаю, имеет смысл, поскольку мы говорим о таких приращениях временного разрешения:
17:06:41 /proc/stat 158257197
17:06:46 /proc/stat 158257230
17:06:51 /proc/stat 158257236
17:06:56 /proc/stat 158257279
# t3 - t0 = 82 jiffies
по сравнению с ...
17:06:41 /proc/2763/stat 208862696
17:06:46 /proc/2763/stat 208862971
17:06:51 /proc/2763/stat 208863114
17:06:56 /proc/2763/stat 208863143
# t3 - t0 = 447 jiffies
Каждое различие заключается в , конечно, при условии вычисления производной в зависимости от исходного кода mpstat
и pidstat
, массирования в процентах и т. д.
Если вы углубитесь в / proc
и sum / proc /
, результат имеет больше смысла. Это число растет медленнее, чем / proc / stat
в целом, и значительно медленнее, чем / proc /
Кажется, если я собираясь пойти дальше, мне нужно лучше понять, как ядро записывает эти файлы для моей конкретной версии. Ясно, что / proc /
не согласуется с / proc /