Então, eu tenho uma causa, mas não é realmente uma causa raiz:
mpstat
depende de /proc/stat
para suas métricas de CPU. pidstat
depende de /proc/<pid>/stat
. Esses arquivos às vezes discordam sobre o número de jiffies de kernel observados em um determinado período de tempo, o que, suponho, faz sentido, já que estamos falando sobre esses incrementos de resolução de tempo:
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
versus ...
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
Cada diferença está, obviamente, sujeita a cálculo derivativo dependendo do código-fonte de mpstat
e pidstat
, massageando em porcentagens, etc.
Se você aprofundar em /proc
e soma /proc/<pid>/task/**/stat
, o resultado faz mais sentido. Esse número cresce mais lentamente que /proc/stat
como um todo e significativamente mais lentamente que /proc/<pid>/stat
.
Parece que se eu vou levar isso adiante, eu preciso entender melhor como o kernel está escrevendo esses arquivos, para minha versão particular. É claro que /proc/<pid>/stat
não concorda com /proc/<pid>/task/**/stat
.