Docker API: cpu_stats vs percpu_stats

¿Cuál es la diferencia entre cpu_stats y percpu_stats al usar la API remota de Docker:

La request es:

GET /containers/(id or name)/stats 

(Una parte de) La respuesta es:

  "cpu_stats" : { "cpu_usage" : { "percpu_usage" : [ 8646879, 24472255, 36438778, 30657443 ], "usage_in_usermode" : 50000000, "total_usage" : 100215355, "usage_in_kernelmode" : 30000000 }, "system_cpu_usage" : 739306590000000, "throttling_data" : {"periods":0,"throttled_periods":0,"throttled_time":0} }, "precpu_stats" : { "cpu_usage" : { "percpu_usage" : [ 8646879, 24350896, 36438778, 30657443 ], "usage_in_usermode" : 50000000, "total_usage" : 100093996, "usage_in_kernelmode" : 30000000 }, "system_cpu_usage" : 9492140000000, "throttling_data" : {"periods":0,"throttled_periods":0,"throttled_time":0} } 

Ejemplo tomado de Docker documentos: https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#get-container-stats-based-on-resource-usage

Cuando se testing con un contenedor de muestra, los valores son casi los mismos.

Ejemplo de un resultado:

 #Cpu stas {u'cpu_usage': {u'usage_in_usermode': 0, u'total_usage': 36569630, u'percpu_usage': [8618616, 3086454, 16466404, 8398156], u'usage_in_kernelmode': 20000000}, u'system_cpu_usage': 339324470000000, u'throttling_data': {u'throttled_time': 0, u'periods': 0, u'throttled_periods': 0}} #Per cup stats {u'cpu_usage': {u'usage_in_usermode': 0, u'total_usage': 36569630, u'percpu_usage': [8618616, 3086454, 16466404, 8398156], u'usage_in_kernelmode': 20000000}, u'system_cpu_usage': 339320550000000, u'throttling_data': {u'throttled_time': 0, u'periods': 0, u'throttled_periods': 0}} 

Intenté también comparar métricas específicas en los dos casos para 4 contenedores:

 #First container 359727340000000 #CPU Stats 359723390000000 #Per CPU Stats #2 359735220000000 359731290000000 #3 359743100000000 359739170000000 #4 359750940000000 359747000000000 

Los valores anteriores son casi los mismos (algunas diferencias pero no enormes) pueden deberse a que hay algunos ms entre cada request.

En la documentation oficial:

El precpu_stats es la estadística de CPU de última lectura, que se usa para calcular el porcentaje de uso de la CPU. No es la copy exacta del campo "cpu_stats".

No muy claro para mí. ¿Alguien podría explicar mejor?