spiegel_podman/libpod
Paul Holzinger 1266f73420 podman stats: calc CPU percentage correctly
When you run podman stats, the first interval always shows the wrong cpu
usage. To calculate cpu percentage we get the cpu time from the cgroup
and compare this against the system time between two stats. Since the
first time we do not have a previous stats an empty struct is used
instead. Thus we do not use the actual running time of the container but
the current unix timestamp (time since Jan 1 1970).

To fix this we make sure that the previous stats time is set to the
container start time, when it is empty.

[NO NEW TESTS NEEDED] No idea how I could create a test which would have
a predictable cpu usage.

See the linked bugzilla for a reproducer.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2066145

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-03-30 15:36:05 -04:00
..
common Set blob cache directory based on GraphDriver 2019-03-29 08:27:33 -04:00
define podman stats: improve cpu average calc 2022-03-30 15:36:05 -04:00
driver bump go module to version 4 2022-01-18 12:47:07 +01:00
events bump go module to version 4 2022-01-18 12:47:07 +01:00
layers Initial checkin from CRI-O repo 2017-11-01 11:24:59 -04:00
linkmode Add podman static build 2020-05-11 13:11:07 +02:00
lock bump go module to version 4 2022-01-18 12:47:07 +01:00
logs bump go module to version 4 2022-01-18 12:47:07 +01:00
plugin bump go module to version 4 2022-01-18 12:47:07 +01:00
shutdown Fix CI flake on time of shutdown for API service 2021-10-12 09:53:19 -07:00
boltdb_state.go bump go module to version 4 2022-01-18 12:47:07 +01:00
boltdb_state_internal.go bump go module to version 4 2022-01-18 12:47:07 +01:00
boltdb_state_linux.go bump go module to version 4 2022-01-18 12:47:07 +01:00
common_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_api.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_commit.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_config.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_copy_linux.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_exec.go Fix a potential race around the exec cleanup process 2022-03-30 15:36:05 -04:00
container_graph.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_graph_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_inspect.go Don't log errors on removing volumes inuse, if container --volumes-from 2022-02-23 14:27:52 -05:00
container_internal.go healthcheck: stop showing wrong status when --no-healthcheck is set 2022-03-30 15:36:05 -04:00
container_internal_linux.go container: workdir resolution must consider symlink if explicitly configured 2022-03-30 13:30:47 -04:00
container_internal_linux_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_internal_test.go Refactor container config 2020-07-23 10:18:14 -04:00
container_linux.go Do not fetch pod and ctr State on retrieval in Bolt 2018-07-31 14:19:50 +00:00
container_log.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_log_linux.go Fix: Do not print error when parsing journald log fails 2022-02-10 13:55:24 -05:00
container_log_unsupported.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_path_resolution.go volumes: be more tolerant and fix infinite loop 2021-10-28 16:37:33 +02:00
container_stat_linux.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_top_linux.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_validate.go bump go module to version 4 2022-01-18 12:47:07 +01:00
diff.go bump go module to version 4 2022-01-18 12:47:07 +01:00
events.go bump go module to version 4 2022-01-18 12:47:07 +01:00
healthcheck.go healthcheck, libpod: Read healthcheck event output from os pipe 2022-02-10 13:56:22 -05:00
healthcheck_linux.go bump go module to version 4 2022-01-18 12:47:07 +01:00
info.go bump go module to version 4 2022-01-18 12:47:07 +01:00
kube.go bump go module to version 4 2022-01-18 12:47:07 +01:00
mounts_linux.go set root propagation based on volume properties 2018-11-26 13:55:02 +01:00
networking_linux.go Remove the runtime lock 2022-02-23 14:29:41 -05:00
networking_linux_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
networking_machine.go use libnetwork from c/common 2022-01-12 17:07:30 +01:00
networking_slirp4netns.go slirp: fix setup on ipv6 disabled systems 2022-03-30 14:01:52 -04:00
oci.go bump go module to version 4 2022-01-18 12:47:07 +01:00
oci_attach_linux.go libpod: fix connection leak 2022-01-24 16:05:42 +01:00
oci_conmon.go podman: add new cgroup mode split 2020-06-25 17:16:12 +02:00
oci_conmon_exec_linux.go do not set the inheritable capabilities 2022-03-30 15:32:18 +02:00
oci_conmon_linux.go podman machine: remove hostip from port 2022-03-30 14:11:14 -04:00
oci_missing.go bump go module to version 4 2022-01-18 12:47:07 +01:00
oci_util.go bump go module to version 4 2022-01-18 12:47:07 +01:00
options.go Podman pod create --share-parent vs --share=cgroup 2022-02-10 13:49:46 -05:00
pod.go podman stats: calc CPU percentage correctly 2022-03-30 15:36:05 -04:00
pod_api.go bump go module to version 4 2022-01-18 12:47:07 +01:00
pod_internal.go bump go module to version 4 2022-01-18 12:47:07 +01:00
pod_status.go bump go module to version 4 2022-01-18 12:47:07 +01:00
pod_top_linux.go bump go module to version 4 2022-01-18 12:47:07 +01:00
reset.go system prune: remove all networks 2022-02-03 15:01:29 -05:00
runtime.go Remove the runtime lock 2022-02-23 14:29:41 -05:00
runtime_cstorage.go Remove the runtime lock 2022-02-23 14:29:41 -05:00
runtime_ctr.go Remove the runtime lock 2022-02-23 14:29:41 -05:00
runtime_img.go Remove the runtime lock 2022-02-23 14:29:41 -05:00
runtime_migrate.go bump go module to version 4 2022-01-18 12:47:07 +01:00
runtime_pod.go Remove the runtime lock 2022-02-23 14:29:41 -05:00
runtime_pod_linux.go libpod: drop warning if cgroup doesn't exist 2022-03-30 15:36:05 -04:00
runtime_renumber.go bump go module to version 4 2022-01-18 12:47:07 +01:00
runtime_volume.go Remove the runtime lock 2022-02-23 14:29:41 -05:00
runtime_volume_linux.go Remove the runtime lock 2022-02-23 14:29:41 -05:00
state.go use libnetwork from c/common 2022-01-12 17:07:30 +01:00
state_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
stats.go podman stats: calc CPU percentage correctly 2022-03-30 15:36:05 -04:00
storage.go bump go module to version 4 2022-01-18 12:47:07 +01:00
util.go Show package version when running on alpine 2022-01-19 18:55:03 +01:00
util_linux.go bump go module to version 4 2022-01-18 12:47:07 +01:00
util_linux_test.go Fix mismatch between log messages and behavior of libpod.LabelVolumePath. 2020-09-13 23:24:15 -04:00
util_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
volume.go bump go module to version 4 2022-01-18 12:47:07 +01:00
volume_inspect.go bump go module to version 4 2022-01-18 12:47:07 +01:00
volume_internal.go bump go module to version 4 2022-01-18 12:47:07 +01:00
volume_internal_linux.go bump go module to version 4 2022-01-18 12:47:07 +01:00