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 .