Full Code of google/cadvisor for AI

master 711f2becad6c cached
2683 files
3.0 MB
940.2k tokens
2744 symbols
1 requests
Download .txt
Showing preview only (3,694K chars total). Download the full file or copy to clipboard to get everything.
Repository: google/cadvisor
Branch: master
Commit: 711f2becad6c
Files: 2683
Total size: 3.0 MB

Directory structure:
gitextract_t01xuxby/

├── .github/
│   └── workflows/
│       ├── publish-container.yml
│       ├── release-binaries.yml
│       ├── stale.yaml
│       └── test.yml
├── .gitignore
├── .golangci.yml
├── AUTHORS
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── Makefile
├── README.md
├── build/
│   ├── assets.sh
│   ├── boilerplate/
│   │   ├── boilerplate.go.txt
│   │   ├── boilerplate.py
│   │   ├── boilerplate.py.txt
│   │   └── boilerplate.sh.txt
│   ├── build.sh
│   ├── check_boilerplate.sh
│   ├── check_container.sh
│   ├── check_gotidy.sh
│   ├── config/
│   │   ├── crio.sh
│   │   ├── libipmctl.sh
│   │   ├── libpfm4.sh
│   │   └── plain.sh
│   ├── integration-crio.sh
│   ├── integration-in-docker-crio.sh
│   ├── integration-in-docker.sh
│   ├── integration.sh
│   ├── prow_e2e.sh
│   ├── release.sh
│   └── unit-in-container.sh
├── cache/
│   ├── cache.go
│   └── memory/
│       ├── memory.go
│       └── memory_test.go
├── client/
│   ├── README.md
│   ├── client.go
│   ├── client_test.go
│   ├── clientexample/
│   │   └── main.go
│   └── v2/
│       ├── README.md
│       ├── client.go
│       └── client_test.go
├── cmd/
│   ├── cadvisor.go
│   ├── cadvisor_test.go
│   ├── go.mod
│   ├── go.sum
│   ├── internal/
│   │   ├── api/
│   │   │   ├── handler.go
│   │   │   ├── versions.go
│   │   │   └── versions_test.go
│   │   ├── container/
│   │   │   └── install/
│   │   │       └── install.go
│   │   ├── healthz/
│   │   │   └── healthz.go
│   │   ├── http/
│   │   │   ├── handlers.go
│   │   │   └── mux/
│   │   │       └── mux.go
│   │   ├── pages/
│   │   │   ├── assets/
│   │   │   │   ├── html/
│   │   │   │   │   └── containers.html
│   │   │   │   ├── js/
│   │   │   │   │   ├── containers.js
│   │   │   │   │   └── loader.js
│   │   │   │   └── styles/
│   │   │   │       └── containers.css
│   │   │   ├── containers.go
│   │   │   ├── docker.go
│   │   │   ├── pages.go
│   │   │   ├── podman.go
│   │   │   ├── static/
│   │   │   │   ├── assets.go
│   │   │   │   └── static.go
│   │   │   └── templates.go
│   │   └── storage/
│   │       ├── bigquery/
│   │       │   ├── README.md
│   │       │   ├── bigquery.go
│   │       │   └── client/
│   │       │       ├── client.go
│   │       │       └── example/
│   │       │           └── example.go
│   │       ├── elasticsearch/
│   │       │   └── elasticsearch.go
│   │       ├── influxdb/
│   │       │   ├── influxdb.go
│   │       │   └── influxdb_test.go
│   │       ├── kafka/
│   │       │   └── kafka.go
│   │       ├── redis/
│   │       │   └── redis.go
│   │       ├── statsd/
│   │       │   ├── client/
│   │       │   │   └── client.go
│   │       │   └── statsd.go
│   │       ├── stdout/
│   │       │   └── stdout.go
│   │       └── test/
│   │           ├── mock.go
│   │           └── storagetests.go
│   └── storagedriver.go
├── collector/
│   ├── collector_manager.go
│   ├── collector_manager_test.go
│   ├── config/
│   │   ├── sample_config.json
│   │   ├── sample_config_endpoint_config.json
│   │   ├── sample_config_prometheus.json
│   │   ├── sample_config_prometheus_endpoint_config.json
│   │   └── sample_config_prometheus_filtered.json
│   ├── config.go
│   ├── fakes.go
│   ├── generic_collector.go
│   ├── generic_collector_test.go
│   ├── prometheus_collector.go
│   ├── prometheus_collector_test.go
│   ├── types.go
│   └── util.go
├── container/
│   ├── common/
│   │   ├── container_hints.go
│   │   ├── container_hints_test.go
│   │   ├── fsHandler.go
│   │   ├── helpers.go
│   │   ├── helpers_test.go
│   │   ├── inotify_watcher.go
│   │   └── test_resources/
│   │       ├── cgroup_v1/
│   │       │   └── test1/
│   │       │       ├── cpu/
│   │       │       │   ├── cpu.cfs_period_us
│   │       │       │   ├── cpu.cfs_quota_us
│   │       │       │   └── cpu.shares
│   │       │       ├── cpuset/
│   │       │       │   └── cpuset.cpus
│   │       │       ├── memory/
│   │       │       │   ├── memory.limit_in_bytes
│   │       │       │   ├── memory.memsw.limit_in_bytes
│   │       │       │   └── memory.soft_limit_in_bytes
│   │       │       └── pids/
│   │       │           └── pids.max
│   │       ├── cgroup_v2/
│   │       │   ├── test1/
│   │       │   │   ├── cpu.max
│   │       │   │   ├── cpu.weight
│   │       │   │   ├── cpuset.cpus.effective
│   │       │   │   ├── memory.max
│   │       │   │   ├── memory.min
│   │       │   │   ├── memory.swap.max
│   │       │   │   └── pids.max
│   │       │   └── test2/
│   │       │       ├── cpu.max
│   │       │       ├── cpu.weight
│   │       │       ├── memory.max
│   │       │       ├── memory.min
│   │       │       ├── memory.swap.max
│   │       │       └── pids.max
│   │       └── container_hints.json
│   ├── container.go
│   ├── containerd/
│   │   ├── client.go
│   │   ├── client_test.go
│   │   ├── containers/
│   │   │   └── containers.go
│   │   ├── factory.go
│   │   ├── factory_test.go
│   │   ├── grpc.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   ├── identifiers/
│   │   │   ├── validate.go
│   │   │   └── validate_test.go
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── namespaces/
│   │   │   ├── context.go
│   │   │   ├── context_test.go
│   │   │   ├── grpc.go
│   │   │   ├── store.go
│   │   │   ├── ttrpc.go
│   │   │   └── ttrpc_test.go
│   │   ├── pkg/
│   │   │   └── dialer/
│   │   │       ├── dialer.go
│   │   │       ├── dialer_unix.go
│   │   │       └── dialer_windows.go
│   │   └── plugin.go
│   ├── crio/
│   │   ├── client.go
│   │   ├── client_test.go
│   │   ├── factory.go
│   │   ├── factory_test.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   ├── docker/
│   │   ├── client.go
│   │   ├── docker.go
│   │   ├── docker_test.go
│   │   ├── factory.go
│   │   ├── factory_test.go
│   │   ├── fs.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── plugin.go
│   │   └── utils/
│   │       ├── docker.go
│   │       └── docker_test.go
│   ├── factory.go
│   ├── factory_test.go
│   ├── libcontainer/
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   ├── helpers.go
│   │   ├── helpers_test.go
│   │   └── testdata/
│   │       ├── clear_refs4
│   │       ├── clear_refs6
│   │       ├── clear_refs8
│   │       ├── docker-v1.8.3/
│   │       │   └── execdriver/
│   │       │       └── native/
│   │       │           └── 1/
│   │       │               └── state.json
│   │       ├── docker-v1.9.1/
│   │       │   └── execdriver/
│   │       │       └── native/
│   │       │           └── 1/
│   │       │               └── state.json
│   │       ├── limits
│   │       ├── procnetdev
│   │       ├── procnetudp
│   │       ├── smaps4
│   │       ├── smaps6
│   │       └── smaps8
│   ├── podman/
│   │   ├── client.go
│   │   ├── factory.go
│   │   ├── fs.go
│   │   ├── handler.go
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── plugin.go
│   │   ├── podman.go
│   │   └── podman_test.go
│   ├── raw/
│   │   ├── factory.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   └── watcher.go
│   ├── systemd/
│   │   ├── factory.go
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   └── testing/
│       └── mock_handler.go
├── deploy/
│   ├── Dockerfile
│   ├── Dockerfile.ppc64le
│   ├── build.sh
│   ├── canary/
│   │   └── Dockerfile
│   ├── entrypoint.sh
│   ├── healthcheck.sh
│   ├── kubernetes/
│   │   ├── README.md
│   │   ├── base/
│   │   │   ├── daemonset.yaml
│   │   │   ├── kustomization.yaml
│   │   │   ├── namespace.yaml
│   │   │   └── serviceaccount.yaml
│   │   └── overlays/
│   │       ├── examples/
│   │       │   ├── cadvisor-args.yaml
│   │       │   ├── critical-priority.yaml
│   │       │   ├── kustomization.yaml
│   │       │   └── stackdriver-sidecar.yaml
│   │       └── examples_perf/
│   │           ├── cadvisor-perf.yaml
│   │           ├── configmap.yaml
│   │           └── kustomization.yaml
│   └── snap/
│       └── snapcraft.yaml
├── devicemapper/
│   ├── dmsetup_client.go
│   ├── doc.go
│   ├── fake/
│   │   ├── dmsetup_client_fake.go
│   │   └── thin_ls_client_fake.go
│   ├── thin_ls_client.go
│   ├── thin_ls_client_test.go
│   ├── thin_pool_watcher.go
│   ├── thin_pool_watcher_test.go
│   └── util.go
├── doc.go
├── docs/
│   ├── api.md
│   ├── api_v2.md
│   ├── application_metrics.md
│   ├── clients.md
│   ├── deploy.md
│   ├── development/
│   │   ├── README.md
│   │   ├── build.md
│   │   ├── integration_testing.md
│   │   ├── issues.md
│   │   └── releasing.md
│   ├── roadmap.md
│   ├── running.md
│   ├── runtime_options.md
│   ├── storage/
│   │   ├── README.md
│   │   ├── elasticsearch.md
│   │   ├── influxdb.md
│   │   ├── kafka.md
│   │   ├── prometheus.md
│   │   └── statsd.md
│   └── web.md
├── events/
│   ├── handler.go
│   └── handler_test.go
├── fs/
│   ├── btrfs/
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── mount.go
│   │   └── plugin.go
│   ├── devicemapper/
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── plugin.go
│   │   ├── stats.go
│   │   └── stats_test.go
│   ├── fs.go
│   ├── fs_test.go
│   ├── nfs/
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   ├── overlay/
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   ├── plugin.go
│   ├── test_resources/
│   │   └── diskstats
│   ├── tmpfs/
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   ├── types.go
│   ├── vfs/
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── plugin.go
│   │   └── stats.go
│   └── zfs/
│       ├── install/
│       │   └── install.go
│       ├── plugin.go
│       ├── stats.go
│       └── watcher.go
├── go.mod
├── go.sum
├── info/
│   ├── v1/
│   │   ├── container.go
│   │   ├── container_test.go
│   │   ├── docker.go
│   │   ├── machine.go
│   │   ├── machine_test.go
│   │   ├── metric.go
│   │   └── test/
│   │       └── datagen.go
│   └── v2/
│       ├── container.go
│       ├── conversion.go
│       ├── conversion_test.go
│       └── machine.go
├── integration/
│   ├── framework/
│   │   ├── framework.go
│   │   └── metrics.go
│   ├── runner/
│   │   ├── retrywhitelist.txt
│   │   ├── run.sh
│   │   └── runner.go
│   └── tests/
│       ├── TODO.md
│       ├── api/
│       │   ├── containerd_test.go
│       │   ├── docker_test.go
│       │   ├── event_test.go
│       │   ├── perf_test.go
│       │   └── test_utils.go
│       ├── common/
│       │   ├── attributes_test.go
│       │   ├── healthz_test.go
│       │   ├── machine_test.go
│       │   └── machinestats_test.go
│       ├── crio/
│       │   ├── crio_test.go
│       │   └── test_utils.go
│       ├── healthz/
│       │   ├── doc.go
│       │   ├── healthz_test.go
│       │   └── test_utils.go
│       └── metrics/
│           ├── containerd_metrics_test.go
│           ├── docker_metrics_test.go
│           └── prometheus_test.go
├── machine/
│   ├── info.go
│   ├── machine.go
│   ├── operatingsystem_unix.go
│   ├── operatingsystem_windows.go
│   ├── testdata/
│   │   ├── cpu9999/
│   │   │   ├── online
│   │   │   └── topology/
│   │   │       ├── core_id
│   │   │       └── physical_package_id
│   │   ├── cpuinfo
│   │   ├── cpuinfo_arm
│   │   ├── cpuinfo_lower_case
│   │   ├── cpuinfo_onesocket_many_NUMAs
│   │   ├── cpuinfo_rpi4
│   │   ├── cpuinfo_upper_case
│   │   ├── edac/
│   │   │   └── mc/
│   │   │       ├── mc0/
│   │   │       │   ├── dimm0/
│   │   │       │   │   ├── dimm_mem_type
│   │   │       │   │   └── size
│   │   │       │   ├── dimm1/
│   │   │       │   │   ├── dimm_mem_type
│   │   │       │   │   └── size
│   │   │       │   └── dimm_is_fake/
│   │   │       │       ├── dimm_mem_type
│   │   │       │       └── size
│   │   │       ├── mc1/
│   │   │       │   └── dimm0/
│   │   │       │       ├── dimm_mem_type
│   │   │       │       └── size
│   │   │       └── mc_fake/
│   │   │           ├── dimm0/
│   │   │           │   ├── dimm0/
│   │   │           │   │   ├── dimm_mem_type
│   │   │           │   │   └── size
│   │   │           │   ├── dimm1/
│   │   │           │   │   ├── dimm_mem_type
│   │   │           │   │   └── size
│   │   │           │   ├── dimm_mem_type
│   │   │           │   └── size
│   │   │           └── dimm1/
│   │   │               ├── dimm_mem_type
│   │   │               └── size
│   │   ├── sysfs_cpus/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       └── physical_package_id
│   │   │   └── cpu1/
│   │   │       └── .gitkeep
│   │   └── wrong_sysfs/
│   │       └── cpu0/
│   │           └── .gitkeep
│   ├── testdata_rpi4/
│   │   ├── cpu0/
│   │   │   ├── hotplug/
│   │   │   │   ├── fail
│   │   │   │   ├── state
│   │   │   │   └── target
│   │   │   └── topology/
│   │   │       ├── core_cpus
│   │   │       ├── core_cpus_list
│   │   │       ├── core_id
│   │   │       ├── core_siblings
│   │   │       ├── core_siblings_list
│   │   │       ├── die_cpus
│   │   │       ├── die_cpus_list
│   │   │       ├── die_id
│   │   │       ├── package_cpus
│   │   │       ├── package_cpus_list
│   │   │       ├── physical_package_id
│   │   │       ├── thread_siblings
│   │   │       └── thread_siblings_list
│   │   ├── cpu1/
│   │   │   ├── cpu_capacity
│   │   │   ├── hotplug/
│   │   │   │   ├── fail
│   │   │   │   ├── state
│   │   │   │   └── target
│   │   │   ├── topology/
│   │   │   │   ├── core_cpus
│   │   │   │   ├── core_cpus_list
│   │   │   │   ├── core_id
│   │   │   │   ├── core_siblings
│   │   │   │   ├── core_siblings_list
│   │   │   │   ├── die_cpus
│   │   │   │   ├── die_cpus_list
│   │   │   │   ├── die_id
│   │   │   │   ├── package_cpus
│   │   │   │   ├── package_cpus_list
│   │   │   │   ├── physical_package_id
│   │   │   │   ├── thread_siblings
│   │   │   │   └── thread_siblings_list
│   │   │   └── uevent
│   │   ├── cpu2/
│   │   │   ├── hotplug/
│   │   │   │   ├── fail
│   │   │   │   ├── state
│   │   │   │   └── target
│   │   │   └── topology/
│   │   │       ├── core_cpus
│   │   │       ├── core_cpus_list
│   │   │       ├── core_id
│   │   │       ├── core_siblings
│   │   │       ├── core_siblings_list
│   │   │       ├── die_cpus
│   │   │       ├── die_cpus_list
│   │   │       ├── die_id
│   │   │       ├── package_cpus
│   │   │       ├── package_cpus_list
│   │   │       ├── physical_package_id
│   │   │       ├── thread_siblings
│   │   │       └── thread_siblings_list
│   │   ├── cpu3/
│   │   │   ├── hotplug/
│   │   │   │   ├── fail
│   │   │   │   ├── state
│   │   │   │   └── target
│   │   │   └── topology/
│   │   │       ├── core_cpus
│   │   │       ├── core_cpus_list
│   │   │       ├── core_id
│   │   │       ├── core_siblings
│   │   │       ├── core_siblings_list
│   │   │       ├── die_cpus
│   │   │       ├── die_cpus_list
│   │   │       ├── die_id
│   │   │       ├── package_cpus
│   │   │       ├── package_cpus_list
│   │   │       ├── physical_package_id
│   │   │       ├── thread_siblings
│   │   │       └── thread_siblings_list
│   │   └── hotplug/
│   │       └── states
│   └── topology_test.go
├── manager/
│   ├── container.go
│   ├── container_test.go
│   ├── manager.go
│   ├── manager_bench_test.go
│   └── manager_test.go
├── metrics/
│   ├── metrics.go
│   ├── prometheus.go
│   ├── prometheus_fake.go
│   ├── prometheus_machine.go
│   ├── prometheus_machine_test.go
│   ├── prometheus_test.go
│   └── testdata/
│       ├── prometheus_machine_metrics
│       ├── prometheus_machine_metrics_failure
│       ├── prometheus_metrics
│       ├── prometheus_metrics_failure
│       ├── prometheus_metrics_perf_aggregated
│       └── prometheus_metrics_whitelist_filtered
├── nvm/
│   ├── machine_libipmctl.go
│   └── machine_no_libipmctl.go
├── perf/
│   ├── collector_libpfm.go
│   ├── collector_libpfm_test.go
│   ├── collector_no_libpfm.go
│   ├── config.go
│   ├── config_test.go
│   ├── manager_libpfm.go
│   ├── manager_libpfm_test.go
│   ├── manager_no_libpfm.go
│   ├── testing/
│   │   ├── perf-no-events.json
│   │   ├── perf-non-hardware.json
│   │   ├── perf.json
│   │   └── this-is-some-random.json
│   ├── types_libpfm.go
│   ├── uncore_libpfm.go
│   └── uncore_libpfm_test.go
├── resctrl/
│   ├── factory.go
│   └── intel/
│       ├── collector.go
│       ├── collector_test.go
│       ├── install/
│       │   └── install.go
│       ├── manager.go
│       ├── manager_test.go
│       ├── testing/
│       │   ├── tasks_empty
│       │   ├── tasks_invalid
│       │   ├── tasks_one
│       │   └── tasks_two
│       ├── utils.go
│       └── utils_test.go
├── stats/
│   ├── noop.go
│   └── types.go
├── storage/
│   ├── common_flags.go
│   └── storage.go
├── summary/
│   ├── buffer.go
│   ├── buffer_test.go
│   ├── percentiles.go
│   ├── percentiles_test.go
│   └── summary.go
├── test.htdigest
├── test.htpasswd
├── utils/
│   ├── cloudinfo/
│   │   ├── aws/
│   │   │   └── aws.go
│   │   ├── azure/
│   │   │   └── azure.go
│   │   ├── cloudinfo.go
│   │   └── gce/
│   │       └── gce.go
│   ├── container/
│   │   └── container.go
│   ├── cpuload/
│   │   ├── cpuload.go
│   │   ├── cpuload_unsupported.go
│   │   └── netlink/
│   │       ├── conn.go
│   │       ├── example/
│   │       │   └── example.go
│   │       ├── netlink.go
│   │       └── reader.go
│   ├── oomparser/
│   │   ├── oomexample/
│   │   │   └── main.go
│   │   ├── oomparser.go
│   │   └── oomparser_test.go
│   ├── path.go
│   ├── sysfs/
│   │   ├── fakesysfs/
│   │   │   └── fake.go
│   │   ├── sysfs.go
│   │   ├── sysfs_notx86.go
│   │   ├── sysfs_test.go
│   │   ├── sysfs_x86.go
│   │   ├── testdata/
│   │   │   ├── edac/
│   │   │   │   └── mc/
│   │   │   │       ├── mc0/
│   │   │   │       │   ├── dimm0/
│   │   │   │       │   │   ├── dimm_mem_type
│   │   │   │       │   │   └── size
│   │   │   │       │   ├── dimm1/
│   │   │   │       │   │   ├── dimm_mem_type
│   │   │   │       │   │   └── size
│   │   │   │       │   └── dimm_is_fake/
│   │   │   │       │       ├── dimm_mem_type
│   │   │   │       │       └── size
│   │   │   │       ├── mc1/
│   │   │   │       │   └── dimm0/
│   │   │   │       │       ├── dimm_mem_type
│   │   │   │       │       └── size
│   │   │   │       └── mc_fake/
│   │   │   │           ├── dimm0/
│   │   │   │           │   ├── dimm0/
│   │   │   │           │   │   ├── dimm_mem_type
│   │   │   │           │   │   └── size
│   │   │   │           │   ├── dimm1/
│   │   │   │           │   │   ├── dimm_mem_type
│   │   │   │           │   │   └── size
│   │   │   │           │   ├── dimm_mem_type
│   │   │   │           │   └── size
│   │   │   │           └── dimm1/
│   │   │   │               ├── dimm_mem_type
│   │   │   │               └── size
│   │   │   ├── missing_online/
│   │   │   │   └── node0/
│   │   │   │       ├── cpu0/
│   │   │   │       │   └── .gitkeep
│   │   │   │       └── cpu33/
│   │   │   │           └── .gitkeep
│   │   │   ├── node0/
│   │   │   │   ├── cpu0/
│   │   │   │   │   └── topology/
│   │   │   │   │       └── core_id
│   │   │   │   ├── cpu1/
│   │   │   │   │   └── topology/
│   │   │   │   │       └── .gitkeep
│   │   │   │   ├── distance
│   │   │   │   ├── hugepages/
│   │   │   │   │   ├── hugepages-1048576kB/
│   │   │   │   │   │   └── nr_hugepages
│   │   │   │   │   └── hugepages-2048kB/
│   │   │   │   │       └── nr_hugepages
│   │   │   │   └── meminfo
│   │   │   └── node1/
│   │   │       └── .gitkeep
│   │   ├── testdata_epyc7402/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu10/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu11/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu12/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu13/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu14/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu15/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu16/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu17/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu18/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu19/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu20/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu21/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu22/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu23/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu24/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu25/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu26/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu27/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu28/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu29/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu30/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu31/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu32/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu33/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu34/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu35/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu36/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu37/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu38/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu39/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu4/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu40/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu41/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu42/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu43/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu44/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu45/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu46/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu47/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu5/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu6/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu7/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu8/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu9/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   ├── testdata_epyc7402_nohyperthreading/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu10/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu11/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu12/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu13/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu14/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu15/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu16/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu17/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu18/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu19/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu20/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu21/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu22/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu23/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu4/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu5/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu6/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu7/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu8/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu9/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   ├── testdata_graviton2/
│   │   │   ├── cpu0/
│   │   │   │   ├── online
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   ├── online
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── online
│   │   │   ├── cpu3/
│   │   │   │   ├── online
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   ├── testdata_rpi4/
│   │   │   ├── cpu0/
│   │   │   │   ├── hotplug/
│   │   │   │   │   └── state
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   ├── hotplug/
│   │   │   │   │   └── state
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   ├── hotplug/
│   │   │   │   │   └── state
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   ├── hotplug/
│   │   │   │   │   └── state
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── hotplug/
│   │   │       └── states
│   │   ├── testdata_single_socket_many_NUMAs/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu10/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu11/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu12/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu13/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu14/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu15/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu16/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu17/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu18/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu19/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu20/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu21/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu22/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu23/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu24/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu25/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu26/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu27/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu28/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu29/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu30/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu31/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu4/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu5/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu6/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu7/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu8/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu9/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   ├── testdata_xeon4214_2socket/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu10/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu11/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu12/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu13/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu14/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu15/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu16/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu17/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu18/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu19/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu20/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu21/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu22/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu23/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu24/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu25/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu26/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu27/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu28/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu29/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu30/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu31/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu32/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu33/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu34/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu35/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu36/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu37/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu38/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu39/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu4/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu40/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu41/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu42/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu43/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu44/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu45/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu46/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu47/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu5/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu6/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu7/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu8/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu9/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   └── testdata_xeon5218_nohyperthread_2socket_nohotplug/
│   │       ├── cpu0/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu1/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu10/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu11/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu12/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu13/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu14/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu15/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu16/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu17/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu18/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu19/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu2/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu20/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu21/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu22/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu23/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu24/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu25/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu26/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu27/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu28/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu29/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu3/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu30/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu31/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu4/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu5/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu6/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu7/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu8/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       └── cpu9/
│   │           └── topology/
│   │               ├── core_cpus
│   │               ├── core_cpus_list
│   │               ├── core_id
│   │               ├── core_siblings
│   │               ├── core_siblings_list
│   │               ├── die_cpus
│   │               ├── die_cpus_list
│   │               ├── die_id
│   │               ├── package_cpus
│   │               ├── package_cpus_list
│   │               ├── physical_package_id
│   │               ├── thread_siblings
│   │               └── thread_siblings_list
│   ├── sysinfo/
│   │   ├── sysinfo.go
│   │   └── sysinfo_test.go
│   ├── timed_store.go
│   ├── timed_store_test.go
│   └── utils.go
├── validate/
│   ├── validate.go
│   └── validate_test.go
├── version/
│   └── version.go
├── watcher/
│   └── watcher.go
└── zfs/
    └── watcher.go

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/publish-container.yml
================================================
name: Publish Container Image

on:
  push:
    tags:
      - 'v*'
  workflow_dispatch:
    inputs:
      tag:
        description: 'Tag to build and publish'
        required: true
        type: string

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          ref: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }}

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Free disk space
        run: |
          echo "Disk space before cleanup:"
          df -h
          sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
          sudo docker image prune --all --force
          sudo docker builder prune -a -f
          echo "Disk space after cleanup:"
          df -h

      - name: Log in to GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata for Docker
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: ghcr.io/${{ github.repository }}
          tags: |
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}
            type=raw,value=latest,enable=${{ github.event_name != 'workflow_dispatch' && github.ref == format('refs/tags/{0}', github.ref_name) }}
            type=raw,value=${{ github.event.inputs.tag }},enable=${{ github.event_name == 'workflow_dispatch' }}
            type=sha,prefix=,suffix=-${{ github.sha }}

      - name: Build and push Docker image
        uses: docker/build-push-action@v6
        with:
          context: .
          file: ./deploy/Dockerfile
          platforms: linux/amd64,linux/arm64
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}


================================================
FILE: .github/workflows/release-binaries.yml
================================================
name: Release Binaries

on:
  push:
    tags:
      - 'v*'
  workflow_dispatch:
    inputs:
      tag:
        description: 'Tag to build and publish'
        required: true
        type: string

jobs:
  build-linux-binaries:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        arch: [amd64, arm64]
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          ref: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }}
          fetch-depth: 0  # Fetch all history for proper versioning

      - name: Set up Docker
        uses: docker/setup-buildx-action@v3

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
        with:
          platforms: linux/amd64,linux/arm64

      - name: Set VERSION environment variable
        run: |
          if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
            echo "VERSION=${INPUTS_TAG}" >> $GITHUB_ENV
          else
            echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
          fi
        env:
          INPUTS_TAG: ${{ inputs.tag }}

      - name: Build Linux ${{ matrix.arch }} binary
        env:
          GOARCH: ${{ matrix.arch }}
          OUTPUT_NAME_WITH_ARCH: "true"
          VERSION: ${{ env.VERSION }}
        run: |
          # Create a Docker container with the appropriate architecture
          docker run --rm -v ${PWD}:/go/src/github.com/google/cadvisor \
            --platform linux/${{ matrix.arch }} \
            golang:1.25 \
            /bin/bash -c "cd /go/src/github.com/google/cadvisor && GOARCH=${{ matrix.arch }} OUTPUT_NAME_WITH_ARCH=true VERSION=${VERSION} GO_FLAGS='-buildvcs=false -tags=netgo' GO_CGO_ENABLED=0 ./build/build.sh"

      - name: Generate SHA256 checksums
        run: |
          cd _output
          # List all files in the output directory
          ls -la
          # Generate SHA256 checksums for all binaries
          find . -name "cadvisor*" -type f -not -name "*.sha256" -exec sh -c 'sha256sum "$1" > "$1.sha256"' _ {} \;

      - name: Upload artifacts
        uses: actions/upload-artifact@v6
        with:
          name: cadvisor-linux-${{ matrix.arch }}
          path: |
            _output/cadvisor*
          retention-days: 1

  create-release:
    needs: build-linux-binaries
    runs-on: ubuntu-latest
    permissions:
      contents: write  # Needed for creating GitHub releases
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          ref: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }}

      - name: Set VERSION environment variable
        run: |
          if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
            echo "VERSION=${INPUTS_TAG}" >> $GITHUB_ENV
          else
            echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
          fi
        env:
          INPUTS_TAG: ${{ inputs.tag }}

      - name: Download all artifacts
        uses: actions/download-artifact@v7
        with:
          path: artifacts

      - name: Display structure of downloaded files
        run: ls -R artifacts

      - name: Create Release
        id: create_release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ env.VERSION }}
          name: cAdvisor ${{ env.VERSION }}
          draft: false
          prerelease: ${{ contains(env.VERSION, 'alpha') || contains(env.VERSION, 'beta') || contains(env.VERSION, 'rc') }}
          generate_release_notes: true
          files: |
            artifacts/**/*


================================================
FILE: .github/workflows/stale.yaml
================================================
name: Stale issues and pull requests

on:
  schedule:
  - cron: "21 4 * * *"
  workflow_dispatch:

jobs:
  stale:
    permissions:
      issues: write
      pull-requests: write
    runs-on: ubuntu-latest

    steps:
    - uses: actions/stale@v10
      with:
        stale-issue-message: 'This issue is stale because it has been open 90 days with no activity. This issue will be closed in 30 days unless new comments are made or the stale label is removed. To skip these checks, apply the "lifecycle/frozen" label.'
        stale-pr-message: 'This PR is stale because it has been open 90 days with no activity. This PR will be closed in 30 days unless new comments are made or the stale label is removed. To skip these checks, apply the "lifecycle/frozen" label.'
        stale-issue-label: 'lifecycle/stale'
        stale-pr-label: 'lifecycle/stale'
        exempt-issue-labels: 'lifecycle/frozen'
        exempt-pr-labels: 'lifecycle/frozen'
        days-before-stale: 90
        close-issue-message: 'This issue was automatically closed due to inactivity.'
        close-pr-message: 'This pull request was automatically closed due to inactivity.'
        days-before-issue-close: 30
        days-before-pr-close: 30
        remove-stale-when-updated: true
        operations-per-run: 300


================================================
FILE: .github/workflows/test.yml
================================================
name: Test
on: [push, pull_request]
jobs:
  test:
    strategy:
      matrix:
        go-versions: ['1.25']
        platform: [ubuntu-24.04]
        environment-variables: [build/config/plain.sh, build/config/libpfm4.sh, build/config/libipmctl.sh]
    runs-on: ${{ matrix.platform }}
    timeout-minutes: 30
    steps:
    - name: Install Go
      uses: actions/setup-go@v6
      with:
        go-version: ${{ matrix.go-versions }}
        check-latest: true
    - name: Checkout code
      uses: actions/checkout@v6
    - name: Run presubmit checks
      run: |
        source ${{ matrix.environment-variables }}
        if [[ "${BUILD_PACKAGES}" != "" ]]; then sudo apt-get update; sudo apt-get install ${BUILD_PACKAGES}; fi
        make -e presubmit
    - name: Run tests
      env:
        GOLANG_VERSION: ${{ matrix.go-versions }}
      run: |
        source ${{ matrix.environment-variables }}
        make test
  test-integration:
    strategy:
      matrix:
        include:
          # bookworm: all environment configs
          - go-versions: '1.25'
            platform: ubuntu-24.04
            environment-variables: build/config/plain.sh
            debian-version: bookworm
          - go-versions: '1.25'
            platform: ubuntu-24.04
            environment-variables: build/config/libpfm4.sh
            debian-version: bookworm
          - go-versions: '1.25'
            platform: ubuntu-24.04
            environment-variables: build/config/libipmctl.sh
            debian-version: bookworm
          # trixie: only plain config
          - go-versions: '1.25'
            platform: ubuntu-24.04
            environment-variables: build/config/plain.sh
            debian-version: trixie
    runs-on: ${{ matrix.platform }}
    timeout-minutes: 30
    steps:
    - name: Checkout code
      uses: actions/checkout@v6
    - name: Run integration tests
      env:
        GOLANG_VERSION: ${{ matrix.go-versions }}
        DEBIAN_VERSION: ${{ matrix.debian-version }}
      run: |
        set -ex
        source ${{ matrix.environment-variables }}
        make docker-test-integration
    - name: Upload cAdvisor log file
      uses: actions/upload-artifact@v6
      if: failure()
      with:
        name: cadvisor-${{ matrix.debian-version }}.log
        path: ${{ github.workspace }}/go/src/github.com/google/cadvisor/cadvisor.log
  test-integration-crio:
    strategy:
      matrix:
        go-versions: ['1.25']
        platform: [ubuntu-24.04]
    runs-on: ${{ matrix.platform }}
    timeout-minutes: 30
    steps:
    - name: Checkout code
      uses: actions/checkout@v6
    - name: Run CRI-O integration tests
      env:
        GOLANG_VERSION: ${{ matrix.go-versions }}
      run: |
        set -ex
        source build/config/crio.sh
        make docker-test-integration-crio
    - name: Upload cAdvisor log file
      uses: actions/upload-artifact@v6
      if: failure()
      with:
        name: cadvisor-crio.log
        path: ${{ github.workspace }}/go/src/github.com/google/cadvisor/cadvisor.log


================================================
FILE: .gitignore
================================================
cadvisor
/release
.vscode
_output/

# Log files
*.log

# Go test binaries
*.test

# Files generated by JetBrains IDEs, e.g. IntelliJ IDEA
.idea/
*.iml
*.swp


================================================
FILE: .golangci.yml
================================================
version: "2"

run:
  timeout: 5m

linters:
  default: none
  enable:
    - govet
    - errcheck
    - staticcheck
    - unused
    - ineffassign
  settings:
    govet:
      disable:
        - fieldalignment  # too noisy, requires significant refactoring
    errcheck:
      exclude-functions:
        - (io.Closer).Close
        - (net.Conn).Close
        - (*os.File).Close
        - (net/http.ResponseWriter).Write
        - os.Remove
        - os.RemoveAll
        - os.Setenv
        - fmt.Fprint
        - fmt.Fprintf
        - fmt.Fprintln
        - syscall.Close
    staticcheck:
      checks:
        - "all"
        - "-ST1000" # package comments - too noisy for existing codebase
        - "-ST1003" # naming conventions (e.g., CrioId vs CrioID) - would break public API
        - "-ST1020" # comment format on exported methods - too many to fix
        - "-ST1021" # comment format on exported types - too many to fix
        - "-ST1022" # comment format on exported consts - too many to fix
        - "-QF*"    # disable quickfix suggestions
  exclusions:
    rules:
      # Exclude errcheck in test files for cleaner test code
      - linters:
          - errcheck
        path: "_test\\.go$"
      # Exclude errcheck for Close() calls on any type
      - linters:
          - errcheck
        text: "Error return value of .*.Close.* is not checked"
      # Exclude govet printf check false positives
      - linters:
          - govet
        text: "printf: non-constant format string"

formatters:
  enable:
    - gofmt
    - goimports

issues:
  max-issues-per-linter: 0
  max-same-issues: 0


================================================
FILE: AUTHORS
================================================
# This is the official list of cAdvisor authors for copyright purposes.

# Names should be added to this file as
#     Name or Organization <email address>
# The email address is not required for organizations.

# Please keep the list sorted.

Google Inc.


================================================
FILE: CHANGELOG.md
================================================
# Changelog

### 0.39.0 (2021-03-08)

- [do not initialize libipmctl package when getting an error from nvm_init()](https://github.com/google/cadvisor/pull/2723)
- [Don't fail permenantly when nvml isn't installed](https://github.com/google/cadvisor/pull/2732)
- [Update libpfm to 4.11.0](https://github.com/google/cadvisor/pull/2746)
- [Fix race between `OnDemandHousekeeping` and `housekeepingTick`](https://github.com/google/cadvisor/pull/2755)
- [Fix timeout flooding issue after containerd restart](https://github.com/google/cadvisor/pull/2749)
- [Refactor process parsing to accommodate commands with spaces + Memory cgroup is not available on some systems](https://github.com/google/cadvisor/pull/2751)
- [Switch from k8s utils/mount to moby/sys mount](https://github.com/google/cadvisor/pull/2782)
- [Support nfs in processMounts](https://github.com/google/cadvisor/pull/2787)
- [Update docker/runc and a few other dependencies](https://github.com/google/cadvisor/pull/2790)
- [Add container_blkio_device_usage metric](https://github.com/google/cadvisor/pull/2795)
- [Update heuristic for container creation time](https://github.com/google/cadvisor/pull/2800)
- [Fix incorrect CPU topology on single NUMA and multi socket platform.](https://github.com/google/cadvisor/pull/2799)
- [Added support for filesystem metrics on Docker](https://github.com/google/cadvisor/pull/2768)
- [sched_getaffinity does not return number of online CPUs](https://github.com/google/cadvisor/pull/2805)
- [Add libipmctl to the docker image.](https://github.com/google/cadvisor/pull/2674)
- [Add cgroup_memory_migrate metric](https://github.com/google/cadvisor/pull/2796)
- [bump runc to v1.0.0-rc93](https://github.com/google/cadvisor/pull/2809)
- [Fix memory stats for cgroup v2](https://github.com/google/cadvisor/pull/2810)
- [Allow gathering of stats for root cgroup on v2](https://github.com/google/cadvisor/pull/2801)
- [Remove trailing \0 from values read from ppc64le device-tree](https://github.com/google/cadvisor/pull/2811)
- [Fix oomparser regex for kernels 5.0 and higher](https://github.com/google/cadvisor/pull/2817)
- [Handling arm64: topology and online information](https://github.com/google/cadvisor/pull/2744)
- [Bump golang to 1.16](https://github.com/google/cadvisor/pull/2818)
- [Bump containerd to 1.4.4](https://github.com/google/cadvisor/pull/2826)
- [Conditionally gathering FS usage metrics](https://github.com/google/cadvisor/pull/2828)

### 0.38.8 (2021-02-18)
- [Cherrypick to v0.38 - Fix incorrect CPU topology on single NUMA and multi socket platform](https://github.com/google/cadvisor/pulls/2799)
- [Cherrypick to v0.38 - sched_getaffinity does not return number of online CPUs](https://github.com/google/cadvisor/pulls/2805)

### 0.37.5 (2021-02-18)
- [Cherrypick to v0.37 - Fix incorrect CPU topology on single NUMA and multi socket platform](https://github.com/google/cadvisor/pulls/2799)
- [Cherrypick to v0.37 - sched_getaffinity does not return number of online CPUs](https://github.com/google/cadvisor/pulls/2805)

### 0.38.7 (2021-01-13)
- [Cherrypick to v0.37: Return correct DeviceInfo from GetDirFsDevice on / path for Btrfs - Fix kubernetes issue #94335](https://github.com/google/cadvisor/pulls/2775)

### 0.37.4 (2021-01-13)
- [Cherrypick to v0.37: Return correct DeviceInfo from GetDirFsDevice on / path for Btrfs - Fix kubernetes issue #94335](https://github.com/google/cadvisor/pulls/2776)

### 0.38.6 (2020-12-9)
- [Cherrypick to v0.37: Fix timeout flooding issue after containerd restart](https://github.com/google/cadvisor/pulls/2759)

### 0.37.3 (2020-12-9)
- [Cherrypick to v0.37: Fix timeout flooding issue after containerd restart](https://github.com/google/cadvisor/pulls/2758)

### 0.38.5 (2020-11-23)
- [Cherrypick to v0.37: don't fail permenantly when nvml isn't installed](https://github.com/google/cadvisor/pulls/2735)

### 0.37.2 (2020-11-23)
- [Cherrypick to v0.37 - update docker client method](https://github.com/google/cadvisor/pulls/2734)

### 0.37.1 (2020-11-18)
- [Cherrypick to v0.37: don't fail permenantly when nvml isn't installed](https://github.com/google/cadvisor/pulls/2737)

### 0.38.4 (2020-11-12)
- [vendor: run go mod tidy](https://github.com/google/cadvisor/pulls/2731)

### 0.38.3 (2020-11-12)
- [vendor: Rollback gopkg.in/yaml.v2 to v2.2.8](https://github.com/google/cadvisor/pulls/2728)

### 0.38.2 (2020-11-10)
- [Revert mount-utils back to utils/mount](https://github.com/google/cadvisor/pulls/2726)

### 0.38.1 (2020-11-10)
- [deps: Rollback grpc from v1.33.2 to v1.27.1](https://github.com/google/cadvisor/pull/2724)
- [do not initialize libipmctl package when getting an error from nvm_init()](https://github.com/google/cadvisor/pull/2723)

### 0.38.0 (2020-11-09)

- [#1594 - chore: add storage_driver_buffer_duration in Influxdb storage docs](https://github.com/google/cadvisor/pull/1594)
- [#1924 - add hugepages info to attributes](https://github.com/google/cadvisor/pull/1924)
- [#2578 - Add perf event grouping.](https://github.com/google/cadvisor/pull/2578)
- [#2590 - Use current Docker registry](https://github.com/google/cadvisor/pull/2590)
- [#2611 - Aggregate perf metrics](https://github.com/google/cadvisor/pull/2611)
- [#2612 - Add stats to stdout storage](https://github.com/google/cadvisor/pull/2612)
- [#2618 - Update to containerd v1.4.0-beta.2 and runc v1.0.0-rc91](https://github.com/google/cadvisor/pull/2618)
- [#2621 - Memory numa stats](https://github.com/google/cadvisor/pull/2621)
- [#2627 - use Google Charts loader and not jsapi](https://github.com/google/cadvisor/pull/2627)
- [#2631 - Add entry for libpfm related tests to Makefile](https://github.com/google/cadvisor/pull/2631)
- [#2632 - Handling zeros in readPerfStat](https://github.com/google/cadvisor/pull/2632)
- [#2638 - Add stats to statsd storage](https://github.com/google/cadvisor/pull/2638)
- [#2639 - Add logs and simplify setup of raw perf events](https://github.com/google/cadvisor/pull/2639)
- [#2640 - Remove exclude guest flag from perf event attrs. ](https://github.com/google/cadvisor/pull/2640)
- [#2644 - Use perf attributes from unix lib.](https://github.com/google/cadvisor/pull/2644)
- [#2646 - Fixed https proxy issue by installing 'full' wget in Docker alpine-based build stage](https://github.com/google/cadvisor/pull/2646)
- [#2655 - Update readme to point to discuss.kubernetes.io](https://github.com/google/cadvisor/pull/2655)
- [#2659 - Fix ordering of processes table](https://github.com/google/cadvisor/pull/2659)
- [#2665 - add clean operation when watchForNewContainers/Start failed](https://github.com/google/cadvisor/pull/2665)
- [#2669 - Update release documentation and process](https://github.com/google/cadvisor/pull/2669)
- [#2676 - Fix runtime error when there are no NVM devices.](https://github.com/google/cadvisor/pull/2676)
- [#2678 - Add checking checksum of libpfm4](https://github.com/google/cadvisor/pull/2678)
- [#2679 - Fix typo in libipmctl](https://github.com/google/cadvisor/pull/2679)
- [#2682 - Add missing flag to runtime_options.md](https://github.com/google/cadvisor/pull/2682)
- [#2683 - Add flags that were not previously published](https://github.com/google/cadvisor/pull/2683)
- [#2687 - Move mount library dependency from utils/mount to mount-utils](https://github.com/google/cadvisor/pull/2687)
- [#2689 - Increase the readability of perf event logs.](https://github.com/google/cadvisor/pull/2689)
- [#2690 - Try to read from sysfs before giving up on non-x86_64](https://github.com/google/cadvisor/pull/2690)
- [#2691 - Broken build configuration when custom build tags are used](https://github.com/google/cadvisor/pull/2691)
- [#2695 - Add information about limits of opened perf event files.](https://github.com/google/cadvisor/pull/2695)
- [#2697 - Update to new docker(v19.03.13) and containerd(1.4.1)](https://github.com/google/cadvisor/pull/2697)
- [#2702 - Increase golang ci lint timeout to 5 minutes](https://github.com/google/cadvisor/pull/2702)
- [#2706 - Add a badge for the current e2e test result](https://github.com/google/cadvisor/pull/2706)
- [#2707 - Fix Avoid random values in unix.PerfEventAttr{}](https://github.com/google/cadvisor/pull/2707)
- [#2711 - validateMemoryAccounting: fix for cgroup v2](https://github.com/google/cadvisor/pull/2711)
- [#2713 - Bump golang to 1.15](https://github.com/google/cadvisor/pull/2713)
- [#2714 - update docker client method](https://github.com/google/cadvisor/pull/2714)
- [#2716 - Update dependencies](https://github.com/google/cadvisor/pull/2716)

### 0.35.1 (2020-11-05)
- [Make a copy of MachineInfo in GetMachineInfo()](https://github.com/google/cadvisor/pull/2490)

### 0.37.0 (2020-07-07)
- Add on-demand collection for prometheus metrics
- Fix detection of image filesystem
- Fix disk metrics for devicemapper devices
- Add NVM Power and NVM, Dimm, memory information to machine info
- Fix detection of OOM Kills on 5.0 linux kernels
- Add support for perf core and uncore event monitoring
- Add hugetlb container metrics
- Split into multiple go modules
- Add referenced memory metrics
- Publish images to gcr.io/cadvisor instead of gcr.io/google_containers
- Add socket id to numa topology in machine info
- Add resource control (Resctlr) metrics

### 0.36.0 (2020-02-28)
- Add support for risc and mips CPUs
- Add advanced TCP stats
- Fix bug in which cAdvisor could fail to discover docker's root directory
- The stdout storage driver now supports metric timestamps
- Add ulimit metrics
- Support multi-arch container builds
- Switch to go modules

### 0.35.0 (2019-11-27)
- Add hugepage info per-numa-node
- Add support for cgoups v2 unified higherarchy
- Drop support for rkt
- Fix a bug that prevented running with multiple tmpfs mounts

### 0.34.0 (2019-08-26)
- Fix disk stats in LXD using ZFS storage pool
- Support monitoring non-k8s containerd namespaces
- The `storage_driver` flag now supports comma-separated inputs
- Add `container_sockets`, `container_threads`, and `container_threads_max` metrics
- Fix CRI-O missing network metris bug
- Add `disable_root_cgroup_stats` flag to allow not collecting stats from the root cgroup.

### 0.33.0 (2019-02-26)
- Add --raw_cgroup_prefix_whitelist flag to allow configuring which raw cgroup trees cAdvisor monitors
- Replace `du` and `find` with a golang implementation
- Periodically update MachineInfo to support hot-add/remove
- Add explicit timestamps to prometheus metrics to fix rate calculations
- Add --url_base_prefix flag to provide better support for reverse proxies
- Add --white_listed_container_labels flag to allow specifying the container labels added as prometheus labels

### 0.32.0 (2018-11-12)
- Add container process and file descriptor metrics (disabled by default)
- Rename `type` label to `failure_type` for prometheus `memory_failures_total` metric
- Reduce mesos error logging when mesos not present

### 0.31.0 (2018-09-07)
- Fix NVML initialization race condition
- Fix brtfs filesystem discovery
- Fix race condition with AllDockerContainers
- Don't watch .mount cgroups
- Reduce lock contention during list containers
- Don't produce prometheus metrics for ignored metrics
- Add option to not export container labels as prometheus labels
- Docs: Publish cAdvisor daemonset
- Docs: Add documentation for exported prometheus metrics

### 0.30.1 (2018-06-11)
- Revert switch from inotify to fsnotify

### 0.30.0 (2018-06-05)
- Use IONice to reduce IO priority of `du` and `find`
- BREAKING API CHANGE: ContainerReference no longer contains Labels.  Use ContainerSpec instead.
- Add schedstat metrics, disabled by default.
- Fix a bug where cadvisor failed to discover a sub-cgroup that was created soon after the parent cgroup.

### 0.29.0 (2018-02-20)
- Disable per-cpu metrics by default for scalability
- Fix disk usage monitoring of overlayFs
- Retry docker connection on startup timeout

### 0.28.3 (2017-12-7)
- Add timeout for docker calls
- Fix prometheus label consistency

### 0.28.2 (2017-11-21)
- Fix GPU init race condition

### 0.28.1 (2017-11-20)
- Add containerd support
- Fix fsnotify regression from 0.28.0
- Add on demand metrics

### 0.28.0 (2017-11-06)
- Add container nvidia GPU metrics
- Expose container memory max_usage_in_bytes
- Add container memory reservation to prometheus

### 0.27.1 (2017-09-06)
- Add CRI-O support

### 0.27.0 (2017-09-01)
- Fix journalctl leak
- Fix container memory rss
- Add hugepages support
- Fix incorrect CPU usage with 4.7 kernel
- OOM parser uses kmsg
- Add tmpfs support

### 0.26.1 (2017-06-21)
- Fix prometheus metrics.

### 0.26.0 (2017-05-31)
- Fix disk partition discovery for brtfs
- Add ZFS support
- Add UDP metrics (collection disabled by default)
- Improve diskio prometheus metrics
- Update Prometheus godeps to v0.8
- Add overlay2 storage driver support

### 0.25.0 (2017-03-09)
- Disable thin_ls due to excessive iops
- Ignore .mount cgroups, fixing dissappearing stats
- Fix wc goroutine leak
- Update aws-sdk-go dependency to 1.6.10
- Update to go 1.7 for releases

### 0.24.1 (2016-10-10)

- Fix issue with running cAdvisor in a container on some distributions.

### 0.24.0 (2016-09-19)

- Added host-level inode stats (total & available)
- Improved robustness to partial failures
- Metrics collector improvements
  - Added ability to directly use endpoints from the container itself
  - Allow SSL endpoint access
  - Ability to provide a certificate which is exposed to custom endpoints
- Lots of bug fixes, including:
  - Devicemapper thin_ls fixes
  - Prometheus metrics fixes
  - Fixes for missing stats (memory reservation, FS usage, etc.)

### 0.23.9 (2016-08-09)

- Cherry-pick release:
  - Ensure minimum kernel version for thin_ls

### 0.23.8 (2016-08-02)

- Cherry-pick release:
  - Prefix Docker labels & env vars in Prometheus metrics to prevent conflicts

### 0.23.7 (2016-07-18)

- Cherry-pick release:
  - Modify working set memory stats calculation

### 0.23.6 (2016-06-23)

- Cherry-pick release:
  - Updating inotify to fix memory leak v0.23 cherrypick

### 0.23.5 (2016-06-22)

- Cherry-pick release:
  - support LVM based device mapper storage drivers

### 0.23.4 (2016-06-16)
- Cherry-pick release:
  - Check for thin_is binary in path for devicemapper when using ThinPoolWatcher
  - Fix uint64 overflow issue for CPU stats

### 0.23.3 (2016-06-08)
- Cherry-pick release:
  - Cap the maximum consecutive du commands
  - Fix a panic when a prometheus endpoint ends with a newline

### 0.23.2 (2016-05-18)
- Handle kernel log rotation
- More rkt support: poll rkt service for new containers
- Better handling of partial failures when fetching subcontainers
- Devicemapper thin_ls support (requires Device Mapper kernel module and supporting utilities)

### 0.23.1 (2016-05-11)
- Add multi-container charts to the UI
- Add TLS options for Kafka storage driver
- Switch to official Docker client
- Systemd:
  - Ignore .mount cgroups on systemd
  - Better OOM monitoring
- Bug: Fix broken -disable_metrics flag
- Bug: Fix openstack identified as AWS
- Bug: Fix EventStore when limit is 0

### 0.23.0 (2016-04-21)
- Docker v1.11 support
- Preliminary rkt support
- Bug: Fix file descriptor leak

### 0.22.0 (2016-02-25)
- Disk usage calculation bug fixes
- Systemd integration bug fixes
- Instance ID support for Azure and AWS
- Limit number of custom metrics
- Support opt out for disk and network metrics

### 0.21.0 (2016-02-03)
- Support for filesystem stats with docker v1.10
- Bug fixes.

### 0.20.5 (2016-01-27)
- Breaking: Use uint64 for memory stats
- Bug: Fix devicemapper partition labelling
- Bug: Fix network stats when using new Docker network functionality
- Bug: Fix env var label mapping initialization
- Dependencies: libcontainer update

### 0.20.4 (2016-01-20)
- Godep updates

### 0.20.3 (2016-01-19)
- Bug fixes
- Jitter added to housekeeping to smooth CPU usage.

### 0.20.2 (2016-01-15)
- New v2.1 API with better filesystem stats
- Internal refactoring
- Bug fixes.

### 0.18.0 (2015-09-23)
- Large bunch of bug-fixes
- Fixed networking stats for newer docker versions using libnetwork.
- Added application-specific metrics

## 0.16.0 (2015-06-26)
- Misc fixes.

## 0.15.1 (2015-06-10)
- Fix longstanding memory leak.
- Fix UI on newest Chrome.

## 0.15.0 (2015-06-08)
- Expose multiple network intefaces in UI and API.
- Add support for XFS.
- Fixes in inotify watches.
- Fixes on PowerPC machines.
- Fixes for newer systems with systemd.
- Extra debuging informaiton in /validate.

## 0.14.0 (2015-05-21)
- Add process stats to container pages in the UI.
- Serve UI from relative paths (allows reverse proxying).
- Minor fixes to events API.
- Add bytes available to FS info.
- Adding Docker status and image information to UI.
- Basic Redis storage backend.
- Misc reliability improvements.

## 0.13.0 (2015-05-01)
- Added `--docker_only` to limit monitoring to only Docker containers.
- Added support for Docker labels.
- Added limit for events storage.
- Fixes for OOM event monitoring.
- Changed event type to a string in the API.
- Misc fixes.

## 0.12.0 (2015-04-15)
- Added support for Docker 1.6.
- Split OOM event into OOM kill and OOM.
- Made EventData a concrete type in returned events.
- Enabled CPU load tracking (experimental).

## 0.11.0 (2015-03-27)
- Export all stats as [Prometheus](https://prometheus.io/) metrics.
- Initial support for [events](docs/api.md): creation, deletion, and OOM.
- Adding machine UUID information.
- Beta release of the cAdvisor [2.0 API](docs/api_v2.md).
- Improve handling of error conditions.
- Misc fixes and improvements.

## 0.10.1 (2015-02-27)
- Disable OOM monitoring which is using too much CPU.
- Fix break in summary stats.

## 0.10.0 (2015-02-24)
- Adding Start and End time for ContainerInfoRequest.
- Various misc fixes.

## 0.9.0 (2015-02-06)
- Support for more network devices (all non-eth).
- Support for more partition types (btrfs, device-mapper, whole-disk).
- Added reporting of DiskIO stats.
- Adding container creation time to ContainerSpec.
- More robust handling of stats failures.
- Various misc fixes.

## 0.8.0 (2015-01-09)
- Added ethernet device information.
- Added machine-wide networking statistics.
- Misc UI fixes.
- Fixes for partially-isolated containers.

## 0.7.1 (2014-12-23)
- Avoid repeated logging of container errors.
- Handle non identify mounts for cgroups.

## 0.7.0 (2014-12-18)
- Support for HTTP basic auth.
- Added /validate to perform basic checks and determine support for cAdvisor.
- All stats in the UI are now updated.
- Added gauges for filesystem usage.
- Added device information to machine info.
- Fixes to container detection.
- Fixes for systemd detection.
- ContainerSpecs are now cached.
- Performance improvements.

## 0.6.2 (2014-11-20)
- Fixes for Docker API and UI endpoints.
- Misc UI bugfixes.

## 0.6.1 (2014-11-18)
- Bug fix in InfluxDB storage driver. Container name and hostname will be exported.

## 0.6.0 (2014-11-17)
- Adding /docker UI endpoint for Docker containers.
- Fixes around handling Docker containers.
- Performance enhancements.
- Embed all external dependencies.
- ContainerStats Go struct has been flattened. The wire format remains unchanged.
- Misc bugfixes and cleanups.

## 0.5.0 (2014-10-28)
- Added disk space stats. On by default for root, available on AUFS Docker containers.
- Introduced v1.2 remote API with new "docker" resource for Docker containers.
- Added "ContainerHints" file based interface to inject extra information about containers.

## 0.4.1 (2014-09-29)
- Support for Docker containers in systemd systems.
- Adding DiskIO stats
- Misc bugfixes and cleanups

## 0.4.0 (2014-09-19)
- Various performance enhancements: brings CPU usage down 85%+
- Implemented dynamic sampling through dynamic housekeeping.
- Memory storage driver is always on, BigQuery and InfluxDB are now optional storage backends.
- Fix for DNS resolution crashes when contacting InfluxDB.
- New containers are now detected using inotify.
- Added pprof HTTP endpoint.
- UI bugfixes.

## 0.3.0 (2014-09-05)
- Support for Docker with LXC backend.
- Added BigQuery storage driver.
- Performance and stability fixes for InfluxDB storage driver.
- UI fixes and improvements.
- Configurable stats gathering interval (default: 1s).
- Improvements to startup and CPU utilization.
- Added /healthz endpoint for determining whether cAdvisor is healthy.
- Bugfixes and performance improvements.

## 0.2.2 (2014-08-13)
- Improvements to influxDB plugin.
	Table name is now 'stats'.
	Network stats added.
	Detailed cpu and memory stats are no longer exported to reduce the load on the DB.
	Docker container alias now exported - It is now possible to aggregate stats across multiple nodes.
- Make the UI independent of the storage backend by caching recent stats in memory.
- Switched to glog.
- Bugfixes and performance improvements.
- Introduced v1.1 remote API with new "subcontainers" resource.

## 0.2.1 (2014-07-25)
- Handle old Docker versions.
- UI fixes and other bugfixes.

## 0.2.0 (2014-07-24)
- Added network stats to the UI.
- Added support for CoreOS and RHEL.
- Bugfixes and reliability fixes.

## 0.1.4 (2014-07-22)
- Add network statistics to REST API.
- Add "raw" driver to handle non-Docker containers.
- Remove lmctfy in favor of the raw driver.
- Bugfixes for Docker containers and logging.

## 0.1.3 (2014-07-14)
- Add support for systemd systems.
- Fixes for UI with InfluxDB storage driver.

## 0.1.2 (2014-07-10)
- Added Storage Driver concept (flag: storage_driver), default is the in-memory driver
- Implemented InfluxDB storage driver
- Support in REST API for specifying number of stats to return
- Allow running without lmctfy (flag: allow_lmctfy)
- Bugfixes

## 0.1.0 (2014-06-14)
- Support for container aliases
- Sampling historical usage and exporting that in the REST API
- Bugfixes for UI

## 0.0.0 (2014-06-10)
- Initial version of cAdvisor
- Web UI with auto-updating stats
- v1.0 REST API with container and machine information
- Support for Docker containers
- Support for lmctfy containers


================================================
FILE: CONTRIBUTING.md
================================================
## How to contribute

Open an issue or a pull request, its that easy!

## Contributor License Agreements

We'd love to accept your pull requests! Before we can merge them, we have to jump a couple of legal hurdles.

Please fill out either the individual or corporate Contributor License Agreement (CLA).

  * If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an [individual CLA](http://code.google.com/legal/individual-cla-v1.0.html).
  * If you work for a company that wants to allow you to contribute your work, then you'll need to sign a [corporate CLA](http://code.google.com/legal/corporate-cla-v1.0.html).

Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Once we receive it, we'll be able to accept your pull requests.


================================================
FILE: LICENSE
================================================
   Copyright 2014 The cAdvisor Authors

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS


================================================
FILE: Makefile
================================================
# Copyright 2015 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

GO := go
GOLANGCI_VER := 2.6.2
GO_TEST ?= $(GO) test $(or $(GO_FLAGS),-race)
arch ?= $(shell go env GOARCH)

all: presubmit build test

test:
	@echo ">> running tests"
	@# Filter out integration.
	$(GO) list ./... | grep -vw integration | xargs $(GO_TEST)
	cd cmd && $(GO_TEST) ./...

test-with-libpfm: GO_FLAGS=-race -tags libpfm
test-with-libpfm: test

container-test:
	@echo ">> runinng tests in a container"
	@./build/unit-in-container.sh

docker-test: container-test
	@echo "docker-test target is deprecated, use container-test instead"

test-integration:
	GO_FLAGS=$(or $(GO_FLAGS),-race) ./build/build.sh
	$(GO_TEST) -c github.com/google/cadvisor/integration/tests/api
	$(GO_TEST) -c github.com/google/cadvisor/integration/tests/common
	$(GO_TEST) -c github.com/google/cadvisor/integration/tests/metrics
	@./build/integration.sh

docker-test-integration:
	@./build/integration-in-docker.sh

docker-test-integration-crio:
	@./build/integration-in-docker-crio.sh

test-integration-crio:
	GO_FLAGS=$(or $(GO_FLAGS),-race) ./build/build.sh
	$(GO_TEST) -c github.com/google/cadvisor/integration/tests/crio
	$(GO_TEST) -c github.com/google/cadvisor/integration/tests/common
	@./build/integration-crio.sh

test-runner:
	@$(GO) build github.com/google/cadvisor/integration/runner

tidy:
	@$(GO) mod tidy
	@cd cmd && $(GO) mod tidy

format:
	@echo ">> formatting code"
	@# goimports is a superset of gofmt.
	@goimports -w -local github.com/google/cadvisor .

build: assets
	@echo ">> building binaries"
	@./build/build.sh $(arch)

assets:
	@echo ">> building assets"
	@./build/assets.sh

release:
	@echo ">> building release binaries"
	@./build/release.sh

docker-%:
	@docker build -t cadvisor:$(shell git rev-parse --short HEAD) -f deploy/Dockerfile .

docker-build:
	@docker run --rm -w /go/src/github.com/google/cadvisor -v ${PWD}:/go/src/github.com/google/cadvisor golang:1.25 make build

presubmit: lint
	@echo ">> checking go mod tidy"
	@./build/check_gotidy.sh
	@echo ">> checking file boilerplate"
	@./build/check_boilerplate.sh

lint:
	@# This assumes GOPATH/bin is in $PATH -- if not, the target will fail.
	@# Extract the current golangci-lint version (empty if not installed),
	@# then use GNU sort to check if GOT >= GOLANGCI_VER.
	@GOT=$$(golangci-lint version 2>/dev/null | sed 's/^.* version \([^ ]*\) .*$$/\1/'); \
	if ! printf $(GOLANGCI_VER)\\n$$GOT\\n | sort --version-sort --check=quiet; then \
		echo ">> upgrading golangci-lint from $$GOT to $(GOLANGCI_VER)"; \
		curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $$(go env GOPATH)/bin v$(GOLANGCI_VER); \
		GOT=$(GOLANGCI_VER); \
	else \
		echo ">> using installed golangci-lint $$GOT >= $(GOLANGCI_VER)"; \
	fi
	@echo ">> running golangci-lint using configuration at .golangci.yml"
	@golangci-lint run
	@cd cmd && golangci-lint run

clean:
	@rm -f *.test cadvisor
	@rm -rf _output/

.PHONY: all build docker format release test test-integration test-integration-crio lint presubmit tidy


================================================
FILE: README.md
================================================
![cAdvisor](logo.png "cAdvisor")

![test status](https://github.com/google/cadvisor/workflows/Test/badge.svg)

cAdvisor (Container Advisor) provides container users an understanding of the resource usage and performance characteristics of their running containers. It is a running daemon that collects, aggregates, processes, and exports information about running containers. Specifically, for each container it keeps resource isolation parameters, historical resource usage, histograms of complete historical resource usage and network statistics. This data is exported by container and machine-wide.

cAdvisor has native support for [Docker](https://github.com/docker/docker) containers and should support just about any other container type out of the box. We strive for support across the board so feel free to open an issue if that is not the case. cAdvisor's container abstraction is based on [lmctfy](https://github.com/google/lmctfy)'s so containers are inherently nested hierarchically.

#### Quick Start: Running cAdvisor in a Docker Container

To quickly tryout cAdvisor on your machine with Docker, we have a Docker image that includes everything you need to get started. You can run a single cAdvisor to monitor the whole machine. Simply run:

```
VERSION=0.55.1 # use the latest release version from https://github.com/google/cadvisor/releases
sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  ghcr.io/google/cadvisor:$VERSION # for versions prior to v0.53.0, use gcr.io/cadvisor/cadvisor instead
```

cAdvisor is now running (in the background) on `http://localhost:8080`. The setup includes directories with Docker state cAdvisor needs to observe.

**Note**: If you're running on CentOS, Fedora, or RHEL (or are using LXC), take a look at our [running instructions](docs/running.md).

We have detailed [instructions](docs/running.md#standalone) on running cAdvisor standalone outside of Docker. cAdvisor [running options](docs/runtime_options.md) may also be interesting for advanced usecases. If you want to build your own cAdvisor Docker image, see our [deployment](docs/deploy.md) page.

For [Kubernetes](https://github.com/kubernetes/kubernetes) users, cAdvisor can be run as a daemonset. See the [instructions](deploy/kubernetes) for how to get started, and for how to [kustomize](https://github.com/kubernetes-sigs/kustomize#kustomize) it to fit your needs.

## Building and Testing

See the more detailed instructions in the [build page](docs/development/build.md). This includes instructions for building and deploying the cAdvisor Docker image.

## Exporting stats

cAdvisor supports exporting stats to various storage plugins. See the [documentation](docs/storage/README.md) for more details and examples.

## Web UI

cAdvisor exposes a web UI at its port:

`http://<hostname>:<port>/`

See the [documentation](docs/web.md) for more details.

## Remote REST API & Clients

cAdvisor exposes its raw and processed stats via a versioned remote REST API. See the API's [documentation](docs/api.md) for more information.

There is also an official Go client implementation in the [client](client/) directory. See the [documentation](docs/clients.md) for more information.

## Roadmap

cAdvisor aims to improve the resource usage and performance characteristics of running containers. Today, we gather and expose this information to users. In our roadmap:

- Advise on the performance of a container (e.g.: when it is being negatively affected by another, when it is not receiving the resources it requires, etc).
- Auto-tune the performance of the container based on previous advise.
- Provide usage prediction to cluster schedulers and orchestration layers.

## Community

Contributions, questions, and comments are all welcomed and encouraged! cAdvisor developers hang out on [Slack](https://kubernetes.slack.com) in the #sig-node channel (get an invitation [here](http://slack.kubernetes.io/)). We also have [discuss.kubernetes.io](https://discuss.kubernetes.io/).

Please reach out and get involved in the project, we're actively looking for more contributors to bring on board!

### Core Team
* [@bobbypage, Google](https://github.com/bobbypage)
* [@iwankgb, Independent](https://github.com/iwankgb)
* [@creatone, Independent](https://github.com/creatone)
* [@dims, VMWare](https://github.com/dims)
* [@mrunalp, RedHat](https://github.com/mrunalp)

### Frequent Collaborators
* [@haircommander, RedHat](https://github.com/haircommander)

### Emeritus
* [@dashpole, Google](https://github.com/dashpole)
* [@dchen1107, Google](https://github.com/dchen1107)
* [@derekwaynecarr, RedHat](https://github.com/derekwaynecarr)


================================================
FILE: build/assets.sh
================================================
#!/bin/bash

# Copyright 2015 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -e

GIT_ROOT=$(dirname "${BASH_SOURCE}")/..

ASSETS_INPUT_DIRS="$GIT_ROOT/cmd/internal/pages/assets/js/... $GIT_ROOT/cmd/internal/pages/assets/styles/..."
ASSETS_OUTPUT_PATH="$GIT_ROOT/cmd/internal/pages/static/assets.go"
ASSETS_PACKAGE="static"

TEMPLATES_INPUT_DIRS="$GIT_ROOT/cmd/internal/pages/assets/html/..."
TEMPLATES_OUTPUT_PATH="$GIT_ROOT/cmd/internal/pages/templates.go"
TEMPLATES_PACKAGE="pages"

FORCE="${FORCE:-}" # Force assets to be rebuilt if FORCE=true

# Install while in a temp dir to avoid polluting go.mod/go.sum
pushd "${TMPDIR:-/tmp}" > /dev/null
go install github.com/kevinburke/go-bindata/go-bindata@v3.24.0
popd > /dev/null

build_asset () {
  local package=$1
  local output_path=$2
  local input_dirs=${@:3}
  local tmp_output=$(mktemp)
  local year="$(git log -1 --date=format:'%Y' --format=%cd -- ${output_path})"

  go-bindata -nometadata -o $output_path -pkg $package $input_dirs
  cat build/boilerplate/boilerplate.go.txt | sed "s/YEAR/$year/" > "${tmp_output}"
  echo -e "// generated by build/assets.sh; DO NOT EDIT\n" >> "${tmp_output}"
  cat "${output_path}" >> "${tmp_output}"
  gofmt -w -s "${tmp_output}"
  mv "${tmp_output}" "${output_path}"
}

for f in $GIT_ROOT/cmd/internal/pages/assets/js/* $GIT_ROOT/cmd/internal/pages/assets/styles/*; do
  if [ "$FORCE" == "true" ] || [ "$f" -nt $ASSETS_OUTPUT_PATH -o ! -e $ASSETS_OUTPUT_PATH ]; then
    build_asset "$ASSETS_PACKAGE" "$ASSETS_OUTPUT_PATH" "$ASSETS_INPUT_DIRS"
    break;
  fi
done

for f in $GIT_ROOT/cmd/internal/pages/assets/html/*; do
  if [ "$FORCE" == "true" ] || [ "$f" -nt $TEMPLATES_OUTPUT_PATH -o ! -e $TEMPLATES_OUTPUT_PATH ]; then
    build_asset "$TEMPLATES_PACKAGE" "$TEMPLATES_OUTPUT_PATH" "$TEMPLATES_INPUT_DIRS"
    break;
  fi
done

exit 0


================================================
FILE: build/boilerplate/boilerplate.go.txt
================================================
// Copyright YEAR Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.


================================================
FILE: build/boilerplate/boilerplate.py
================================================
#!/usr/bin/env python3

# Copyright 2016 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from __future__ import print_function

import argparse
import glob
import json
import mmap
import os
import re
import sys

parser = argparse.ArgumentParser()
parser.add_argument("filenames", help="list of files to check, all files if unspecified", nargs='*')
args = parser.parse_args()

rootdir = os.path.dirname(__file__) + "/../../"
rootdir = os.path.abspath(rootdir)

def get_refs():
    refs = {}
    for path in glob.glob(os.path.join(rootdir, "build/boilerplate/boilerplate.*.txt")):
        extension = os.path.basename(path).split(".")[1]

        ref_file = open(path, 'r')
        ref = ref_file.read().splitlines()
        ref_file.close()
        refs[extension] = ref

    return refs

def file_passes(filename, refs, regexs):
    try:
        f = open(filename, 'r')
    except:
        return False

    data = f.read()
    f.close()

    extension = file_extension(filename)
    ref = refs[extension]

    # remove build tags from the top of Go files
    if extension == "go":
        p = regexs["go_build_constraints"]
        (data, found) = p.subn("", data, 1)

    # remove shebang from the top of shell files
    if extension == "sh":
        p = regexs["shebang"]
        (data, found) = p.subn("", data, 1)

    data = data.splitlines()

    # if our test file is smaller than the reference it surely fails!
    if len(ref) > len(data):
        return False

    # trim our file to the same number of lines as the reference file
    data = data[:len(ref)]

    p = regexs["year"]
    for d in data:
        if p.search(d):
            return False

    # Replace all occurrences of the regex "2016|2015|2014" with "YEAR"
    p = regexs["date"]
    for i, d in enumerate(data):
        (data[i], found) = p.subn('YEAR', d)
        if found != 0:
            break

    # if we don't match the reference at this point, fail
    if ref != data:
        return False

    return True

def file_extension(filename):
    return os.path.splitext(filename)[1].split(".")[-1].lower()

skipped_dirs = ['Godeps', 'vendor', 'third_party', '_gopath', '_output', '.git']
def normalize_files(files):
    newfiles = []
    for pathname in files:
        if any(x in pathname for x in skipped_dirs):
            continue
        newfiles.append(pathname)
    for i, pathname in enumerate(newfiles):
        if not os.path.isabs(pathname):
            newfiles[i] = os.path.join(rootdir, pathname)
    return newfiles

def get_files(extensions):
    files = []
    if len(args.filenames) > 0:
        files = args.filenames
    else:
        for root, dirs, walkfiles in os.walk(rootdir):
            # don't visit certain dirs. This is just a performance improvement
            # as we would prune these later in normalize_files(). But doing it
            # cuts down the amount of filesystem walking we do and cuts down
            # the size of the file list
            for d in skipped_dirs:
                if d in dirs:
                    dirs.remove(d)

            for name in walkfiles:
                pathname = os.path.join(root, name)
                files.append(pathname)

    files = normalize_files(files)
    outfiles = []
    for pathname in files:
        extension = file_extension(pathname)
        if extension in extensions:
            outfiles.append(pathname)
    return outfiles

def get_regexs():
    regexs = {}
    # Search for "YEAR" which exists in the boilerplate, but shouldn't in the real thing
    regexs["year"] = re.compile( 'YEAR' )
    # dates can be something in the 21st century
    regexs["date"] = re.compile( '20[0-9][0-9]' )
    # strip // +build \n\n build and //go:build constraints
    regexs["go_build_constraints"] = re.compile(r"^(//\s*(\+build|go:build).*\n)+\n", re.MULTILINE)
    # strip #!.* from shell scripts
    regexs["shebang"] = re.compile(r"^(#!.*\n)\n*", re.MULTILINE)
    return regexs

def main():
    regexs = get_regexs()
    refs = get_refs()
    filenames = get_files(refs.keys())

    for filename in filenames:
        if not file_passes(filename, refs, regexs):
            print(filename, file=sys.stdout)

if __name__ == "__main__":
  sys.exit(main())


================================================
FILE: build/boilerplate/boilerplate.py.txt
================================================
#!/usr/bin/env python3

# Copyright YEAR Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


================================================
FILE: build/boilerplate/boilerplate.sh.txt
================================================
# Copyright YEAR Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


================================================
FILE: build/build.sh
================================================
#!/usr/bin/env bash

# Copyright 2015 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -e

export GOOS=${GOOS:-$(go env GOOS)}
export GOARCH=${GOARCH:-$(go env GOARCH)}
export CGO_ENABLED=${GO_CGO_ENABLED:-"1"}
GO_FLAGS=${GO_FLAGS:-"-tags=netgo"}    # Extra go flags to use in the build.
BUILD_USER=${BUILD_USER:-"${USER}@${HOSTNAME}"}
BUILD_DATE=${BUILD_DATE:-$( date +%Y%m%d-%H:%M:%S )}
VERBOSE=${VERBOSE:-}
OUTPUT_NAME_WITH_ARCH=${OUTPUT_NAME_WITH_ARCH:-"false"}

repo_path="github.com/google/cadvisor"

version=${VERSION:-$( git describe --tags --dirty --abbrev=14 | sed -E 's/-([0-9]+)-g/.\1+/' )}
revision=$( git rev-parse --short HEAD 2> /dev/null || echo 'unknown' )
branch=$( git rev-parse --abbrev-ref HEAD 2> /dev/null || echo 'unknown' )
go_version=$( go version | sed -e 's/^[^0-9.]*\([0-9.]*\).*/\1/' )


# go 1.4 requires ldflags format to be "-X key value", not "-X key=value"
ldseparator="="
if [ "${go_version:0:3}" = "1.4" ]; then
	ldseparator=" "
fi

ldflags="
  -X ${repo_path}/version.Version${ldseparator}${version}
  -X ${repo_path}/version.Revision${ldseparator}${revision}
  -X ${repo_path}/version.Branch${ldseparator}${branch}
  -X ${repo_path}/version.BuildUser${ldseparator}${BUILD_USER}
  -X ${repo_path}/version.BuildDate${ldseparator}${BUILD_DATE}
  -X ${repo_path}/version.GoVersion${ldseparator}${go_version}"

echo ">> building cadvisor"

if [ -n "$VERBOSE" ]; then
  echo "Building with -ldflags $ldflags"
fi

mkdir -p "$PWD/_output"
output_file="$PWD/_output/cadvisor"
if [ "${OUTPUT_NAME_WITH_ARCH}" = "true" ] ; then
  output_file="${output_file}-${version}-${GOOS}-${GOARCH}"
fi

# Since github.com/google/cadvisor/cmd is a submodule, we must build from inside that directory
pushd cmd > /dev/null
  go build ${GO_FLAGS} -ldflags "${ldflags}" -o "${output_file}" "${repo_path}/cmd"
popd > /dev/null

exit 0


================================================
FILE: build/check_boilerplate.sh
================================================
#!/bin/bash

# Copyright 2015 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -o errexit
set -o nounset
set -o pipefail

GIT_ROOT=$(dirname "${BASH_SOURCE}")/..
boiler="${GIT_ROOT}/build/boilerplate/boilerplate.py"

files_need_boilerplate=($(${boiler} "$@"))

if [[ ${#files_need_boilerplate[@]} -gt 0 ]]; then
  for file in "${files_need_boilerplate[@]}"; do
    echo "Boilerplate header is wrong for: ${file}"
  done

  exit 1
fi


================================================
FILE: build/check_container.sh
================================================
#!/usr/bin/env bash
# Copyright 2015 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Description:
# This script is meant to run a basic test against each of the CPU architectures
# cadvisor should support.
#
# This script requires that you have run qemu-user-static so that your machine
# can interpret ELF binaries for other architectures using QEMU:
# https://github.com/multiarch/qemu-user-static#getting-started
#
# $ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
#
# Usage:
# ./check_container.sh gcr.io/tstapler-gke-dev/cadvisor:v0.44.1-test-4
target_image=$1

# Architectures officially supported by cadvisor
arches=( "amd64" "arm" "arm64" "s390x" )

# Docker doesn't handle images with different architectures but the same tag.
# Remove the container and the image use by it to avoid problems.
cleanup() {
    echo Cleaning up the container $1
    docker stop $1
    docker rmi $target_image
    echo
}

for arch in "${arches[@]}"; do
  echo Testing that we can run $1 on $arch and curl the /healthz endpoint
  echo
  container_id=$(docker run --platform "linux/$arch" -p 8080:8080 --rm --detach "$target_image")
  docker_exit_code=$?
  if [ $docker_exit_code -ne 0 ]; then
    echo Failed to run container docker exited with $docker_exit_code
    cleanup $container_id
    exit $docker_exit_code
  fi
  sleep 10
  echo
  echo Testing the container with curl:
  curl --show-error --retry 5 --fail -L 127.0.0.1:8080/healthz
  echo
  echo
  curl_exit=$?
  if [ $curl_exit -ne 0 ]; then
    echo  Curling $target_image did not work
    cleanup $container_id
    exit $curl_exit
  fi
  echo Success!
  echo
  cleanup $container_id
done


================================================
FILE: build/check_gotidy.sh
================================================
#!/bin/bash

# Copyright 2020 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# TODO(bobbypage): Replace this with `go mod tidy --check` when it exists:
# https://github.com/golang/go/issues/27005.

# Checks if go mod tidy changes are needed for a given go module.
# If changes are needed, prints the diff and exits 1 status code.
# Arguments:
#   Directory of go module
function lint_gotidy() {
    MODULE_DIRECTORY="$1"

    pushd "${MODULE_DIRECTORY}" > /dev/null
    TMP_GOMOD=$(mktemp)
    TMP_GOSUM=$(mktemp)

    # Make a copy of the current files
    cp go.mod "${TMP_GOMOD}"
    cp go.sum "${TMP_GOSUM}"

    go mod tidy

    DIFF_MOD=$(diff -u "${TMP_GOMOD}" go.mod)
    DIFF_SUM=$(diff -u "${TMP_GOSUM}" go.sum)

    # Copy the files back
    cp "${TMP_GOMOD}" go.mod
    cp "${TMP_GOSUM}" go.sum

    if [[ -n "${DIFF_MOD}" || -n "${DIFF_SUM}" ]]; then
        echo "go tidy changes are needed; please run make tidy"
        echo "go.mod diff:"
        echo "${DIFF_MOD}"
        echo "go.sum diff:"
        echo "${DIFF_SUM}"
        exit 1
    fi

    popd > /dev/null
}

# Check if go mod tidy changes needed on main module
lint_gotidy "."

# Check if go mod tidy changes needed on cmd module
lint_gotidy "cmd"


================================================
FILE: build/config/crio.sh
================================================
# Copyright 2024 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# CRI-O plain configuration - no special build flags
unset GO_FLAGS
unset PACKAGES
unset BUILD_PACKAGES
unset CADVISOR_ARGS


================================================
FILE: build/config/libipmctl.sh
================================================
# Copyright 2020 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

export GO_FLAGS="-tags=libipmctl,cgo -race"
export PACKAGES="sudo libipmctl5"
export BUILD_PACKAGES="libipmctl5 libipmctl-dev"
export CADVISOR_ARGS="-perf_events_config=perf/testing/perf-non-hardware.json"


================================================
FILE: build/config/libpfm4.sh
================================================
# Copyright 2020 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

export GO_FLAGS="-tags=libpfm,netgo -race"
export PACKAGES="sudo libpfm4"
export BUILD_PACKAGES="libpfm4 libpfm4-dev"
export CADVISOR_ARGS="-perf_events_config=perf/testing/perf-non-hardware.json"


================================================
FILE: build/config/plain.sh
================================================
# Copyright 2020 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Unsetting all the important variables.
unset GO_FLAGS
unset PACKAGES
unset BUILD_PACKAGES
unset CADVISOR_ARGS


================================================
FILE: build/integration-crio.sh
================================================
#!/usr/bin/env bash

# Copyright 2024 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -e
# When running this script locally, you may need to run cadvisor with sudo
# permissions if cadvisor can't find containers.
# USE_SUDO=true make test-integration-crio
USE_SUDO=${USE_SUDO:-false}
cadvisor_bin=${CADVISOR_BIN:-"./_output/cadvisor"}

if ! [ -f "$cadvisor_bin" ]; then
  echo Failed to find cadvisor binary for integration test at path $cadvisor_bin
  exit 1
fi

log_file="cadvisor.log"
if [ "$#" -gt 0 ]; then
  log_file="$1"
fi

TEST_PID=$$
printf "" # Refresh sudo credentials if necessary.

# Check if CRI-O is available and start it if not running
CRIO_SOCK="/var/run/crio/crio.sock"

# Function to start CRI-O if not running (for CI environments)
start_crio_if_needed() {
  if [ -S "$CRIO_SOCK" ]; then
    echo ">> CRI-O already running"
    return 0
  fi

  echo ">> CRI-O not running, attempting to start..."

  # Check if crio binary exists
  CRIO_BIN=""
  if command -v crio >/dev/null 2>&1; then
    CRIO_BIN="crio"
  elif [ -x /usr/local/bin/crio ]; then
    CRIO_BIN="/usr/local/bin/crio"
  fi

  if [ -z "$CRIO_BIN" ]; then
    echo "!! crio binary not found"
    return 1
  fi

  # Create required directories
  mkdir -p /var/run/crio /var/lib/containers/storage /var/log/crio/pods /run/containers/storage /etc/crio

  # Install conmon if not available (CRI-O requires it)
  if ! command -v conmon >/dev/null 2>&1 && [ ! -x /usr/local/bin/conmon ]; then
    echo ">> Installing conmon..."
    CONMON_VERSION=v2.1.8
    curl -L https://github.com/containers/conmon/releases/download/${CONMON_VERSION}/conmon.amd64 -o /usr/local/bin/conmon 2>/dev/null && \
    chmod +x /usr/local/bin/conmon
  fi

  # Ensure conmon is in PATH
  if [ -x /usr/local/bin/conmon ]; then
    export PATH=/usr/local/bin:$PATH
  fi

  # Install CNI plugins if not available
  if [ ! -d /opt/cni/bin ] || [ -z "$(ls -A /opt/cni/bin 2>/dev/null)" ]; then
    echo ">> Installing CNI plugins..."
    CNI_VERSION=v1.3.0
    mkdir -p /opt/cni/bin
    curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz" | tar -xz -C /opt/cni/bin
  fi

  # Create CNI config for bridge networking
  mkdir -p /etc/cni/net.d
  if [ ! -f /etc/cni/net.d/10-bridge.conf ]; then
    echo '{"cniVersion":"0.4.0","name":"bridge","type":"bridge","bridge":"cni0","isGateway":true,"ipMasq":true,"ipam":{"type":"host-local","subnet":"10.88.0.0/16","routes":[{"dst":"0.0.0.0/0"}]}}' > /etc/cni/net.d/10-bridge.conf
    echo '{"cniVersion":"0.4.0","name":"loopback","type":"loopback"}' > /etc/cni/net.d/99-loopback.conf
  fi

  # Create CRI-O config (always recreate to ensure correct settings)
  echo ">> Creating CRI-O config..."
  # Use vfs storage driver for Docker-in-Docker (overlay on overlay doesn't work)
  cat > /etc/crio/crio.conf << 'EOF'
[crio]
root = "/var/lib/containers/storage"
runroot = "/var/run/containers/storage"
log_dir = "/var/log/crio/pods"
version_file = "/var/run/crio/version"
storage_driver = "vfs"

[crio.api]
listen = "/var/run/crio/crio.sock"

[crio.runtime]
default_runtime = "crun"
[crio.runtime.runtimes.crun]
runtime_path = "/usr/bin/crun"
runtime_type = "oci"
runtime_root = "/run/crun"

[crio.image]
pause_image = "registry.k8s.io/pause:3.9"
EOF

  # Also configure containers storage
  mkdir -p /etc/containers
  cat > /etc/containers/storage.conf << 'EOF'
[storage]
driver = "vfs"
runroot = "/var/run/containers/storage"
graphroot = "/var/lib/containers/storage"
EOF

  # Create containers policy (allow all images) if it doesn't exist
  if [ ! -f /etc/containers/policy.json ]; then
    echo '{"default":[{"type":"insecureAcceptAnything"}]}' > /etc/containers/policy.json
  fi

  # Verify policy.json exists and is valid
  echo ">> Verifying /etc/containers/policy.json..."
  cat /etc/containers/policy.json

  # Start CRI-O
  echo ">> Starting CRI-O daemon..."
  $CRIO_BIN --log-level debug &
  CRIO_PID=$!
  sleep 2

  # Wait for CRI-O to be ready
  echo ">> Waiting for CRI-O to start..."
  CRICTL_BIN="crictl"
  if [ -x /usr/local/bin/crictl ]; then
    CRICTL_BIN="/usr/local/bin/crictl"
  fi

  for i in $(seq 1 60); do
    if $CRICTL_BIN info >/dev/null 2>&1; then
      echo ">> CRI-O is ready"
      return 0
    fi
    echo "Waiting for CRI-O... attempt $i"
    sleep 1
  done

  echo "!! CRI-O failed to start"
  return 1
}

# Try to start CRI-O if in Docker-in-Docker environment
if [[ "${DOCKER_IN_DOCKER_ENABLED:-}" == "true" ]]; then
  start_crio_if_needed
fi

# Diagnostic logging for CRI-O debugging
echo ">> Diagnostic information:"
echo "=== CRI-O version ==="
crio --version 2>/dev/null || /usr/local/bin/crio --version 2>/dev/null || echo "crio --version failed"
echo "=== crictl version ==="
crictl version 2>/dev/null || /usr/local/bin/crictl version 2>/dev/null || echo "crictl version failed"
echo "=== CRI-O socket check ==="
ls -la /var/run/crio/ 2>/dev/null || echo "/var/run/crio/ not found"
ls -la /run/crio/ 2>/dev/null || echo "/run/crio/ not found"
echo "=== CRI-O info ==="
crictl info 2>/dev/null || /usr/local/bin/crictl info 2>/dev/null || echo "crictl info failed"
echo "=== Running processes (crio) ==="
ps aux | grep -E "crio" | grep -v grep || echo "No crio processes found"
echo "=== Kernel version ==="
uname -r
echo "=== End diagnostic information ==="

# CRI-O socket is hardcoded in cAdvisor to /var/run/crio/crio.sock
if [ -S "$CRIO_SOCK" ]; then
  echo ">> CRI-O socket found at: $CRIO_SOCK"
else
  echo "!! CRI-O socket not found at: $CRIO_SOCK"
  echo "!! CRI-O may not be running"
fi

function start {
  set +e  # We want to handle errors if cAdvisor crashes.
  echo ">> starting cAdvisor locally"
  cadvisor_prereqs=""
  if [ $USE_SUDO = true ]; then
    cadvisor_prereqs=sudo
  fi
  # cpu, cpuset, percpu, memory, disk, diskIO, network metrics should be enabled.
  GORACE="halt_on_error=1" $cadvisor_prereqs $cadvisor_bin --enable_metrics="cpu,cpuset,percpu,memory,disk,diskIO,network" --env_metadata_whitelist=TEST_VAR --v=6 --logtostderr $CADVISOR_ARGS &> "$log_file"
  exit_code=$?
  if [ $exit_code != 0 ]; then
    echo "!! cAdvisor exited unexpectedly with Exit $exit_code"
    cat $log_file
    kill $TEST_PID # cAdvisor crashed: abort testing.
  fi
}
start &
RUNNER_PID=$!

function cleanup {
  if pgrep cadvisor > /dev/null; then
    echo ">> stopping cAdvisor"
    pkill -SIGINT cadvisor
    wait $RUNNER_PID
  fi
}
trap cleanup EXIT SIGINT TERM

readonly TIMEOUT=30 # Timeout to wait for cAdvisor, in seconds.
START=$(date +%s)
while [ "$(curl -Gs http://localhost:8080/healthz)" != "ok" ]; do
  if (( $(date +%s) - $START > $TIMEOUT )); then
    echo "Timed out waiting for cAdvisor to start"
    exit 1
  fi
  echo "Waiting for cAdvisor to start ..."
  sleep 1
done

if [[ "${DOCKER_IN_DOCKER_ENABLED:-}" == "true" ]]; then
  # see https://github.com/moby/moby/blob/master/hack/dind
  # cgroup v2: enable nesting
  if [ -f /sys/fs/cgroup/cgroup.controllers ]; then
    echo ">> configuring cgroupsv2 for crio in container..."
    # move the processes from the root group to the /init group,
    # otherwise writing subtree_control fails with EBUSY.
    # An error during moving non-existent process (i.e., "cat") is ignored.
    mkdir -p /sys/fs/cgroup/init
    xargs -rn1 < /sys/fs/cgroup/cgroup.procs > /sys/fs/cgroup/init/cgroup.procs || :
    # enable controllers
    sed -e 's/ / +/g' -e 's/^/+/' < /sys/fs/cgroup/cgroup.controllers \
      > /sys/fs/cgroup/cgroup.subtree_control
  fi
fi

echo ">> running CRI-O integration tests against local cAdvisor"
if ! [ -f ./crio.test ]; then
  echo You must compile the ./crio.test binary before
  echo running the integration tests.
  exit 1
fi
./crio.test --vmodule=*=2 -test.v

echo ">> running common integration tests against local cAdvisor"
if [ -f ./common.test ]; then
  ./common.test -test.v
else
  echo "Skipping common tests (./common.test not found)"
fi


================================================
FILE: build/integration-in-docker-crio.sh
================================================
#!/usr/bin/env bash

# Copyright 2024 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -ex

ROOT="$(cd "$(dirname "${BASH_SOURCE}")/.." && pwd -P)"
TMPDIR=$(mktemp -d)
function delete() {
  echo "Deleting ${TMPDIR}..."
  if [[ $EUID -ne 0 ]]; then
    sudo rm -rf "${TMPDIR}"
  else
    rm -rf "${TMPDIR}"
  fi
}
trap delete EXIT INT TERM

function run_tests() {

  # Detect architecture - the bootstrap image is amd64-only
  DOCKER_PLATFORM="linux/amd64"

  # Add safe.directory as workaround for https://github.com/actions/runner/issues/2033
  # Build for amd64 to match the test container
  BUILD_CMD="git config --global safe.directory /go/src/github.com/google/cadvisor && env GOOS=linux GOARCH=amd64 GO_FLAGS='$GO_FLAGS' CGO_ENABLED=0 ./build/build.sh && \
    env GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go test -c github.com/google/cadvisor/integration/tests/crio && \
    env GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go test -c github.com/google/cadvisor/integration/tests/common"

  if [ "$BUILD_PACKAGES" != "" ]; then
    BUILD_CMD="apt update && apt install -y $BUILD_PACKAGES && \
    $BUILD_CMD"
  fi

  # Build in amd64 container to match test environment
  docker run --rm \
    --platform ${DOCKER_PLATFORM} \
    -w /go/src/github.com/google/cadvisor \
    -v ${PWD}:/go/src/github.com/google/cadvisor \
    golang:"$GOLANG_VERSION-bookworm" \
    bash -c "$BUILD_CMD"

  EXTRA_DOCKER_OPTS="-e DOCKER_IN_DOCKER_ENABLED=true"
  if [[ "${OSTYPE}" == "linux"* ]]; then
    EXTRA_DOCKER_OPTS+=" -v ${TMPDIR}/crio-graph:/var/lib/containers"
  fi

  mkdir -p ${TMPDIR}/crio-graph

  # Run tests in a privileged container with CRI-O
  # Use --platform to ensure consistent architecture
  # Use --cgroupns=host and --pid=host to share host namespaces (required for systemd cgroup manager)
  # Mount host's systemd and dbus sockets so CRI-O can use systemd cgroup manager
  docker run --rm \
    --platform ${DOCKER_PLATFORM} \
    -w /go/src/github.com/google/cadvisor \
    -v ${ROOT}:/go/src/github.com/google/cadvisor \
    -v /sys/fs/cgroup:/sys/fs/cgroup:rw \
    -v /run/systemd:/run/systemd:ro \
    -v /run/dbus:/run/dbus:ro \
    ${EXTRA_DOCKER_OPTS} \
    --privileged \
    --cap-add="sys_admin" \
    --cgroupns=host \
    --pid=host \
    --entrypoint="" \
    gcr.io/k8s-staging-test-infra/bootstrap:v20250702-52f5173c3a \
    bash -c "export DEBIAN_FRONTEND=noninteractive && \
    apt-get update && \
    apt-get install -y $PACKAGES curl conntrack iptables dbus && \

    # Check if host systemd and dbus are available
    echo 'Checking host systemd and dbus...' && \
    ls -la /run/systemd/ || true && \
    ls -la /run/dbus/ || true && \
    systemctl --version || true && \

    # Install CRI-O and crictl from static binaries (more reliable than apt)
    CRIO_VERSION=v1.28.0 && \
    CRICTL_VERSION=v1.28.0 && \

    # Download and install crictl
    echo 'Installing crictl...' && \
    curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/\${CRICTL_VERSION}/crictl-\${CRICTL_VERSION}-linux-amd64.tar.gz | tar -C /usr/local/bin -xz && \
    chmod +x /usr/local/bin/crictl && \

    # Download and install CRI-O from Google Cloud Storage
    echo 'Installing CRI-O...' && \
    mkdir -p /tmp/crio-install && \
    curl -L https://storage.googleapis.com/cri-o/artifacts/cri-o.amd64.\${CRIO_VERSION}.tar.gz | tar -xz -C /tmp/crio-install && \
    mkdir -p /usr/local/bin /etc/crio /etc/containers && \
    ls -la /tmp/crio-install/cri-o/bin/ && \
    cp /tmp/crio-install/cri-o/bin/crio /usr/local/bin/ && \
    cp /tmp/crio-install/cri-o/bin/crio-status /usr/local/bin/ 2>/dev/null || true && \
    cp /tmp/crio-install/cri-o/bin/pinns /usr/local/bin/ 2>/dev/null || true && \
    cp /tmp/crio-install/cri-o/bin/conmon /usr/local/bin/ 2>/dev/null || true && \
    cp /tmp/crio-install/cri-o/bin/conmonrs /usr/local/bin/ 2>/dev/null || true && \
    chmod +x /usr/local/bin/crio* /usr/local/bin/pinns /usr/local/bin/conmon* 2>/dev/null || true && \
    ls -la /usr/local/bin/crio* /usr/local/bin/conmon* /usr/local/bin/pinns 2>/dev/null && \

    # Create CRI-O config with systemd cgroup manager (using host systemd via mounted socket)
    mkdir -p /etc/crio/crio.conf.d && \
    cat > /etc/crio/crio.conf <<CRIOEOF
[crio]
root = \"/var/lib/containers/storage\"
runroot = \"/var/run/containers/storage\"
log_dir = \"/var/log/crio/pods\"
version_file = \"/var/run/crio/version\"

[crio.api]
listen = \"/var/run/crio/crio.sock\"

[crio.runtime]
cgroup_manager = \"systemd\"
conmon_cgroup = \"pod\"
default_runtime = \"crun\"
[crio.runtime.runtimes.crun]
runtime_path = \"/usr/bin/crun\"
runtime_type = \"oci\"
runtime_root = \"/run/crun\"

[crio.image]
pause_image = \"registry.k8s.io/pause:3.9\"
CRIOEOF

    # Install crun as the runtime
    apt-get install -y crun && \

    # Create containers policy (required for image pulling)
    mkdir -p /etc/containers && \
    echo '{\"default\":[{\"type\":\"insecureAcceptAnything\"}]}' > /etc/containers/policy.json && \
    echo 'Created /etc/containers/policy.json:' && \
    cat /etc/containers/policy.json && \

    # Install CNI plugins
    echo 'Installing CNI plugins...' && \
    CNI_VERSION=v1.3.0 && \
    mkdir -p /opt/cni/bin && \
    curl -L \"https://github.com/containernetworking/plugins/releases/download/\${CNI_VERSION}/cni-plugins-linux-amd64-\${CNI_VERSION}.tgz\" | tar -xz -C /opt/cni/bin && \
    ls -la /opt/cni/bin/ && \

    # Create CNI config for bridge networking
    mkdir -p /etc/cni/net.d && \
    echo '{\"cniVersion\":\"0.4.0\",\"name\":\"bridge\",\"type\":\"bridge\",\"bridge\":\"cni0\",\"isGateway\":true,\"ipMasq\":true,\"ipam\":{\"type\":\"host-local\",\"subnet\":\"10.88.0.0/16\",\"routes\":[{\"dst\":\"0.0.0.0/0\"}]}}' > /etc/cni/net.d/10-bridge.conf && \
    echo '{\"cniVersion\":\"0.4.0\",\"name\":\"loopback\",\"type\":\"loopback\"}' > /etc/cni/net.d/99-loopback.conf && \
    echo 'CNI config created:' && \
    cat /etc/cni/net.d/10-bridge.conf && \

    # Configure crictl to use CRI-O socket
    cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///var/run/crio/crio.sock
image-endpoint: unix:///var/run/crio/crio.sock
timeout: 30
debug: true
EOF

    # Start CRI-O daemon in background
    mkdir -p /var/run/crio /var/lib/containers/storage /var/log/crio/pods /run/containers/storage && \
    echo 'Starting CRI-O...' && \
    /usr/local/bin/crio --log-level debug &
    CRIO_PID=\$! && \
    sleep 2 && \

    # Wait for CRI-O to be ready
    echo 'Waiting for CRI-O to start...' && \
    for i in \$(seq 1 60); do \
      if /usr/local/bin/crictl info >/dev/null 2>&1; then \
        echo 'CRI-O is ready'; \
        break; \
      fi; \
      echo \"Waiting for CRI-O... attempt \$i\"; \
      sleep 1; \
    done && \

    # Verify CRI-O is running
    /usr/local/bin/crictl info && \

    # Pull required images
    echo 'Pulling test images...' && \
    /usr/local/bin/crictl pull registry.k8s.io/pause:3.9 || true && \
    /usr/local/bin/crictl pull registry.k8s.io/busybox:1.27 || true && \

    # Add /usr/local/bin to PATH for the test runner
    export PATH=/usr/local/bin:\$PATH && \

    # Run the integration tests
    CADVISOR_ARGS='$CADVISOR_ARGS' /usr/local/bin/runner.sh build/integration-crio.sh"
}

# Note: -race requires CGO, but cross-compilation with CGO is problematic
# So we use -tags=netgo without -race for cross-platform compatibility
GO_FLAGS=${GO_FLAGS:-"-tags=netgo"}
PACKAGES=${PACKAGES:-"sudo"}
BUILD_PACKAGES=${BUILD_PACKAGES:-}
CADVISOR_ARGS=${CADVISOR_ARGS:-}
GOLANG_VERSION=${GOLANG_VERSION:-"1.25"}
run_tests


================================================
FILE: build/integration-in-docker.sh
================================================
#!/usr/bin/env bash

# Copyright 2020 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -ex

ROOT="$(cd "$(dirname "${BASH_SOURCE}")/.." && pwd -P)"
TMPDIR=$(mktemp -d)
function delete() {
  echo "Deleting ${TMPDIR}..."
  if [[ $EUID -ne 0 ]]; then
    sudo rm -rf "${TMPDIR}"
  else
    rm -rf "${TMPDIR}"
  fi
}
trap delete EXIT INT TERM

function run_tests() {

  # Add safe.directory as workaround for https://github.com/actions/runner/issues/2033
  BUILD_CMD="git config --global safe.directory /go/src/github.com/google/cadvisor && env GOOS=linux GOARCH=amd64 GO_FLAGS='$GO_FLAGS' ./build/build.sh && \
    env GOOS=linux GOFLAGS='$GO_FLAGS' go test -c github.com/google/cadvisor/integration/tests/api && \
    env GOOS=linux GOFLAGS='$GO_FLAGS' go test -c github.com/google/cadvisor/integration/tests/common && \
    env GOOS=linux GOFLAGS='$GO_FLAGS' go test -c github.com/google/cadvisor/integration/tests/metrics"

  if [ "$BUILD_PACKAGES" != "" ]; then
    BUILD_CMD="apt update && apt install -y $BUILD_PACKAGES && \
    $BUILD_CMD"
  fi
  docker run --rm \
    --platform linux/amd64 \
    -w /go/src/github.com/google/cadvisor \
    -v ${PWD}:/go/src/github.com/google/cadvisor \
    golang:"$GOLANG_VERSION-$DEBIAN_VERSION" \
    bash -c "$BUILD_CMD"

  EXTRA_DOCKER_OPTS="-e DOCKER_IN_DOCKER_ENABLED=true"
  if [[ "${OSTYPE}" == "linux"* ]]; then
    EXTRA_DOCKER_OPTS+=" -v ${TMPDIR}/docker-graph:/docker-graph"
  fi

  mkdir ${TMPDIR}/docker-graph
  docker run --rm \
    --platform linux/amd64 \
    -w /go/src/github.com/google/cadvisor \
    -v ${ROOT}:/go/src/github.com/google/cadvisor \
    ${EXTRA_DOCKER_OPTS} \
    --privileged \
    --cap-add="sys_admin" \
    --entrypoint="" \
    gcr.io/k8s-staging-test-infra/bootstrap:v20250702-52f5173c3a \
    bash -c "export DEBIAN_FRONTEND=noninteractive && \
    apt update && \
    apt install -y $PACKAGES && \
    CADVISOR_ARGS=$CADVISOR_ARGS /usr/local/bin/runner.sh build/integration.sh"
}

GO_FLAGS=${GO_FLAGS:-"-tags=netgo -race"}
PACKAGES=${PACKAGES:-"sudo"}
BUILD_PACKAGES=${BUILD_PACKAGES:-}
CADVISOR_ARGS=${CADVISOR_ARGS:-}
GOLANG_VERSION=${GOLANG_VERSION:-"1.25"}
DEBIAN_VERSION=${DEBIAN_VERSION:-"trixie"}
run_tests


================================================
FILE: build/integration.sh
================================================
#!/usr/bin/env bash

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -e
# When running this script locally, you may need to run cadvisor with sudo
# permissions if you cadvisor can't find containers.
# USE_SUDO=true make test-integration
USE_SUDO=${USE_SUDO:-false}
cadvisor_bin=${CADVISOR_BIN:-"./_output/cadvisor"}

if ! [ -f "$cadvisor_bin" ]; then
  echo Failed to find cadvisor binary for integration test at path $cadvisor_bin
  exit 1
fi

log_file="cadvisor.log"
if [ "$#" -gt 0 ]; then
  log_file="$1"
fi

TEST_PID=$$
printf "" # Refresh sudo credentials if necessary.

# Diagnostic logging for docker/containerd debugging
echo ">> Diagnostic information:"
echo "=== Docker version ==="
docker version || echo "docker version failed"
echo "=== Docker info ==="
docker info || echo "docker info failed"
echo "=== Containerd socket check ==="
ls -la /run/containerd/ 2>/dev/null || echo "/run/containerd/ not found"
ls -la /var/run/containerd/ 2>/dev/null || echo "/var/run/containerd/ not found"
ls -la /var/run/docker/containerd/ 2>/dev/null || echo "/var/run/docker/containerd/ not found"
echo "=== Find all containerd sockets ==="
find /var/run /run -name "*.sock" 2>/dev/null | head -20 || echo "No sockets found"
echo "=== Docker socket check ==="
ls -la /var/run/docker.sock 2>/dev/null || echo "/var/run/docker.sock not found"
echo "=== Running processes (docker/containerd) ==="
ps aux | grep -E "(docker|containerd)" | grep -v grep || echo "No docker/containerd processes found"
echo "=== Kernel version ==="
uname -r
echo "=== End diagnostic information ==="

# Install ctr (containerd CLI) if not available - needed for containerd integration tests
if ! command -v ctr &> /dev/null; then
  CTR_VERSION="1.7.24"
  CTR_ARCH="amd64"
  [ "$(uname -m)" = "aarch64" ] && CTR_ARCH="arm64"
  curl -sL "https://github.com/containerd/containerd/releases/download/v${CTR_VERSION}/containerd-${CTR_VERSION}-linux-${CTR_ARCH}.tar.gz" | sudo tar -xz -C /usr/local
fi

# Detect containerd socket path - Docker-in-Docker uses a different path
export CONTAINERD_SOCK="/run/containerd/containerd.sock"
if [ -S "/run/docker/containerd/containerd.sock" ]; then
  export CONTAINERD_SOCK="/run/docker/containerd/containerd.sock"
  echo ">> Using Docker-embedded containerd socket: $CONTAINERD_SOCK"
fi

# Set up cgroup delegation for containerd k8s.io namespace (cgroups v2)
sudo mkdir -p /sys/fs/cgroup/init
xargs -rn1 < /sys/fs/cgroup/cgroup.procs 2>/dev/null | sudo tee /sys/fs/cgroup/init/cgroup.procs > /dev/null 2>&1 || true
sed -e 's/ / +/g' -e 's/^/+/' < /sys/fs/cgroup/cgroup.controllers | sudo tee /sys/fs/cgroup/cgroup.subtree_control > /dev/null 2>&1 || true
sudo mkdir -p /sys/fs/cgroup/k8s.io
sed -e 's/ / +/g' -e 's/^/+/' < /sys/fs/cgroup/cgroup.controllers | sudo tee /sys/fs/cgroup/k8s.io/cgroup.subtree_control > /dev/null 2>&1 || true

function start {
  set +e  # We want to handle errors if cAdvisor crashes.
  echo ">> starting cAdvisor locally"
  cadvisor_prereqs=""
  if [ $USE_SUDO = true ]; then
    cadvisor_prereqs=sudo
  fi
  # cpu, cpuset, percpu, memory, disk, diskIO, network, perf_event metrics should be enabled.
  GORACE="halt_on_error=1" $cadvisor_prereqs $cadvisor_bin --enable_metrics="cpu,cpuset,percpu,memory,disk,diskIO,network,perf_event" --env_metadata_whitelist=TEST_VAR --containerd="$CONTAINERD_SOCK" --v=6 --logtostderr $CADVISOR_ARGS &> "$log_file"
  exit_code=$?
  if [ $exit_code != 0 ]; then
    echo "!! cAdvisor exited unexpectedly with Exit $exit_code"
    cat $log_file
    kill $TEST_PID # cAdvisor crashed: abort testing.
  fi
}
start &
RUNNER_PID=$!

function cleanup {
  if pgrep cadvisor > /dev/null; then
    echo ">> stopping cAdvisor"
    pkill -SIGINT cadvisor
    wait $RUNNER_PID
  fi
}
trap cleanup EXIT SIGINT TERM

readonly TIMEOUT=30 # Timeout to wait for cAdvisor, in seconds.
START=$(date +%s)
while [ "$(curl -Gs http://localhost:8080/healthz)" != "ok" ]; do
  if (( $(date +%s) - $START > $TIMEOUT )); then
    echo "Timed out waiting for cAdvisor to start"
    exit 1
  fi
  echo "Waiting for cAdvisor to start ..."
  sleep 1
done

if [[ "${DOCKER_IN_DOCKER_ENABLED:-}" == "true" ]]; then
  # see https://github.com/moby/moby/blob/master/hack/dind
  # cgroup v2: enable nesting
  if [ -f /sys/fs/cgroup/cgroup.controllers ]; then
    echo ">> configuring cgroupsv2 for docker in docker..."
    # move the processes from the root group to the /init group,
    # otherwise writing subtree_control fails with EBUSY.
    # An error during moving non-existent process (i.e., "cat") is ignored.
    mkdir -p /sys/fs/cgroup/init
    xargs -rn1 < /sys/fs/cgroup/cgroup.procs > /sys/fs/cgroup/init/cgroup.procs || :
    # enable controllers
    sed -e 's/ / +/g' -e 's/^/+/' < /sys/fs/cgroup/cgroup.controllers \
      > /sys/fs/cgroup/cgroup.subtree_control
  fi
fi

echo ">> running integration tests against local cAdvisor"
if ! [ -f ./api.test ] || ! [ -f ./common.test ] || ! [ -f ./metrics.test ]; then
  echo You must compile the ./api.test, ./common.test, and ./metrics.test binaries
  echo before running the integration tests.
  exit 1
fi
./api.test --vmodule=*=2 -test.v
./common.test -test.v
./metrics.test -test.v


================================================
FILE: build/prow_e2e.sh
================================================
#!/usr/bin/env bash

# Copyright 2018 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -e
set -x

BUILDER=${BUILDER:-false} # Whether this is running a PR builder job.

export GO_FLAGS="-race"
export GORACE="halt_on_error=1"

# cd to cadvisor directory
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd "$parent_path/.."

# Check whether assets need to be rebuilt.
FORCE=true build/assets.sh
if [[ ! -z "$(git diff --name-only -- cmd/internal/pages)" ]]; then
  echo "Found changes to UI assets:"
  git diff --name-only -- cmd/internal/pages
  echo "Run: 'make assets FORCE=true'"
  exit 1
fi

make build test

# compile integration tests so they can be run without go installed
go test -c github.com/google/cadvisor/integration/tests/api
go test -c github.com/google/cadvisor/integration/tests/healthz


================================================
FILE: build/release.sh
================================================
#!/usr/bin/env bash

# Copyright 2015 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -e

if [ -z "$VERSION" ]; then
  VERSION=$( git describe --tags --dirty --abbrev=14 | sed -E 's/-([0-9]+)-g/.\1+/' )
  # Only allow releases of tagged versions.
  TAGGED='^v[0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta|rc)\.?[0-9]*)?$'
  if [[ ! "$VERSION" =~ $TAGGED ]]; then
    echo "Error: Only tagged versions are allowed for releases" >&2
    echo "Found: $VERSION" >&2
    exit 1
  fi
fi

read -p "Please confirm: $VERSION is the desired version (Type y/n to continue):" -n 1 -r
echo
if ! [[ $REPLY =~ ^[Yy]$ ]]; then
  exit 1
fi

# Don't include hostname with release builds
if ! git_user="$(git config --get user.email)"; then
  echo "Error: git user not set, use:"
  echo "git config user.email <email>"
  exit 1
fi

export BUILD_USER="$git_user"
export BUILD_DATE=$( date +%Y%m%d ) # Release date is only to day-granularity
export VERBOSE=true

# Build the docker image
echo ">> building cadvisor docker image"
image_name=${IMAGE_NAME:-"gcr.io/cadvisor/cadvisor"}
final_image="$image_name:${VERSION}"

docker buildx inspect cadvisor-builder > /dev/null \
|| docker buildx create --name cadvisor-builder --use

# Build binaries

# A mapping of the docker arch name to the qemu arch name
declare -A arches=( ["amd64"]="x86_64" ["arm"]="arm" ["arm64"]="aarch64" ["s390x"]="s390x" )

for arch in "${arches[@]}"; do
  if ! hash "qemu-${arch}-static"; then
    echo Releasing multi arch containers requires qemu-user-static.
    echo
    echo Please install using apt-get install qemu-user-static or
    echo a similar package for your OS.

    exit 1
  fi
done

for arch in "${!arches[@]}"; do
  GOARCH="$arch" GO_CGO_ENABLED="0" OUTPUT_NAME_WITH_ARCH="true" build/build.sh
  arch_specific_image="${image_name}-${arch}:${VERSION}"
  docker buildx build --platform "linux/${arch}" --provenance=false --build-arg VERSION="$VERSION" -f deploy/Dockerfile -t "$arch_specific_image"  --progress plain --push .
  docker manifest create --amend "$final_image" "$arch_specific_image"
  docker manifest annotate --os=linux --arch="$arch" "$final_image" "$arch_specific_image"
done
docker manifest push "$final_image"
echo
echo "Release info (copy to the release page)":
echo
echo Multi Arch Container Image:
echo $final_image
echo
echo Architecture Specific Container Images:
for arch in "${!arches[@]}"; do
  echo "${image_name}-${arch}:${VERSION}"
done
echo
echo Binaries:
(cd _output && find . -name "cadvisor-${VERSION}*" -exec sha256sum --tag {} \;)
exit 0


================================================
FILE: build/unit-in-container.sh
================================================
#!/usr/bin/env bash

# Copyright 2020 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -ex

if ! CONTAINER_ENGINE=$(command -v docker || command -v podman); then
  echo "Neither docker nor podman found. Exiting."
  exit 1
fi

function run_tests() {
  BUILD_CMD="make test"
  if [ "$BUILD_PACKAGES" != "" ]; then
    BUILD_CMD="echo 'deb http://deb.debian.org/debian buster-backports main'>/etc/apt/sources.list.d/buster.list
    apt update
    apt install -y -t buster-backports $BUILD_PACKAGES
    $BUILD_CMD"
  fi

  $CONTAINER_ENGINE run --rm \
    -w /go/src/github.com/google/cadvisor \
    -v ${PWD}:/go/src/github.com/google/cadvisor \
    -e GO_FLAGS \
    golang:${GOLANG_VERSION} \
    bash -e -c "$BUILD_CMD"
}

GO_FLAGS=${GO_FLAGS:-"-tags=netgo -race"}
BUILD_PACKAGES=${BUILD_PACKAGES:-}
GOLANG_VERSION=${GOLANG_VERSION:-"1.25"}
run_tests


================================================
FILE: cache/cache.go
================================================
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package cache

import info "github.com/google/cadvisor/info/v1"

type Cache interface {
	// Add a ContainerStats for the specified container.
	AddStats(ref info.ContainerReference, stats *info.ContainerStats) error

	// Remove all cached information for the specified container.
	RemoveContainer(containerName string) error

	// Read most recent stats. numStats indicates max number of stats
	// returned. The returned stats must be consecutive observed stats. If
	// numStats < 0, then return all stats stored in the storage. The
	// returned stats should be sorted in time increasing order, i.e. Most
	// recent stats should be the last.
	RecentStats(containerName string, numStats int) ([]*info.ContainerStats, error)

	// Close will clear the state of the storage driver. The elements
	// stored in the underlying storage may or may not be deleted depending
	// on the implementation of the storage driver.
	Close() error
}


================================================
FILE: cache/memory/memory.go
================================================
// Copyright 2014 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package memory

import (
	"errors"
	"sync"
	"time"

	info "github.com/google/cadvisor/info/v1"
	"github.com/google/cadvisor/storage"
	"github.com/google/cadvisor/utils"

	"k8s.io/klog/v2"
)

// ErrDataNotFound is the error resulting if failed to find a container in memory cache.
var ErrDataNotFound = errors.New("unable to find data in memory cache")

// containerCacheMap is a typed wrapper around sync.Map that eliminates the need
// for type assertions at every call site. It stores container name strings
// mapped to *containerCache values.
type containerCacheMap struct {
	m sync.Map
}

// Load retrieves a container cache by name. Returns nil, false if not found.
func (c *containerCacheMap) Load(name string) (*containerCache, bool) {
	v, ok := c.m.Load(name)
	if !ok {
		return nil, false
	}
	return v.(*containerCache), true
}

// Store saves a container cache with the given name.
func (c *containerCacheMap) Store(name string, cache *containerCache) {
	c.m.Store(name, cache)
}

// LoadOrStore returns the existing cache if present, otherwise stores and returns the given one.
func (c *containerCacheMap) LoadOrStore(name string, cache *containerCache) (*containerCache, bool) {
	v, loaded := c.m.LoadOrStore(name, cache)
	return v.(*containerCache), loaded
}

// Delete removes a container cache by name.
func (c *containerCacheMap) Delete(name string) {
	c.m.Delete(name)
}

// TODO(vmarmol): See about refactoring this class, we have an unnecessary redirection of containerCache and InMemoryCache.
// containerCache is used to store per-container information
type containerCache struct {
	ref         info.ContainerReference
	recentStats *utils.TimedStore
	maxAge      time.Duration
	lock        sync.RWMutex
}

func (c *containerCache) AddStats(stats *info.ContainerStats) error {
	c.lock.Lock()
	defer c.lock.Unlock()

	// Add the stat to storage.
	c.recentStats.Add(stats.Timestamp, stats)
	return nil
}

func (c *containerCache) RecentStats(start, end time.Time, maxStats int) ([]*info.ContainerStats, error) {
	c.lock.RLock()
	defer c.lock.RUnlock()
	result := c.recentStats.InTimeRange(start, end, maxStats)
	converted := make([]*info.ContainerStats, len(result))
	for i, el := range result {
		converted[i] = el.(*info.ContainerStats)
	}
	return converted, nil
}

func newContainerStore(ref info.ContainerReference, maxAge time.Duration) *containerCache {
	return &containerCache{
		ref:         ref,
		recentStats: utils.NewTimedStore(maxAge, -1),
		maxAge:      maxAge,
	}
}

type InMemoryCache struct {
	containerCacheMap containerCacheMap
	maxAge            time.Duration
	backend           []storage.StorageDriver
}

func (c *InMemoryCache) AddStats(cInfo *info.ContainerInfo, stats *info.ContainerStats) error {
	name := cInfo.ContainerReference.Name
	cstore, ok := c.containerCacheMap.Load(name)
	if !ok {
		newStore := newContainerStore(cInfo.ContainerReference, c.maxAge)
		cstore, _ = c.containerCacheMap.LoadOrStore(name, newStore)
	}

	for _, backend := range c.backend {
		// TODO(monnand): To deal with long delay write operations, we
		// may want to start a pool of goroutines to do write
		// operations.
		if err := backend.AddStats(cInfo, stats); err != nil {
			klog.Error(err)
		}
	}
	return cstore.AddStats(stats)
}

func (c *InMemoryCache) RecentStats(name string, start, end time.Time, maxStats int) ([]*info.ContainerStats, error) {
	cstore, ok := c.containerCacheMap.Load(name)
	if !ok {
		return nil, ErrDataNotFound
	}
	return cstore.RecentStats(start, end, maxStats)
}

func (c *InMemoryCache) Close() error {
	c.containerCacheMap = containerCacheMap{}
	return nil
}

func (c *InMemoryCache) RemoveContainer(containerName string) error {
	c.containerCacheMap.Delete(containerName)
	return nil
}

func New(
	maxAge time.Duration,
	backend []storage.StorageDriver,
) *InMemoryCache {
	return &InMemoryCache{
		maxAge:  maxAge,
		backend: backend,
	}
}


================================================
FILE: cache/memory/memory_test.go
================================================
// Copyright 2014 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package memory

import (
	"testing"
	"time"

	info "github.com/google/cadvisor/info/v1"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

const containerName = "/container"

var (
	cInfo = info.ContainerInfo{
		ContainerReference: info.ContainerReference{Name: containerName},
	}
	zero time.Time
)

// Make stats with the specified identifier.
func makeStat(i int) *info.ContainerStats {
	return &info.ContainerStats{
		Timestamp: zero.Add(time.Duration(i) * time.Second),
		Cpu: info.CpuStats{
			LoadAverage: int32(i),
		},
	}
}

func getRecentStats(t *testing.T, memoryCache *InMemoryCache, numStats int) []*info.ContainerStats {
	stats, err := memoryCache.RecentStats(containerName, zero, zero, numStats)
	require.Nil(t, err)
	return stats
}

func TestAddStats(t *testing.T) {
	memoryCache := New(60*time.Second, nil)

	assert := assert.New(t)
	assert.Nil(memoryCache.AddStats(&cInfo, makeStat(0)))
	assert.Nil(memoryCache.AddStats(&cInfo, makeStat(1)))
	assert.Nil(memoryCache.AddStats(&cInfo, makeStat(2)))
	assert.Nil(memoryCache.AddStats(&cInfo, makeStat(0)))
	cInfo2 := info.ContainerInfo{
		ContainerReference: info.ContainerReference{
			Name: "/container2",
		},
	}
	assert.Nil(memoryCache.AddStats(&cInfo2, makeStat(0)))
	assert.Nil(memoryCache.AddStats(&cInfo2, makeStat(1)))
}

func TestRecentStatsNoRecentStats(t *testing.T) {
	memoryCache := makeWithStats(t, 0)

	_, err := memoryCache.RecentStats(containerName, zero, zero, 60)
	assert.NotNil(t, err)
}

// Make an instance of InMemoryCache with n stats.
func makeWithStats(t *testing.T, n int) *InMemoryCache {
	memoryCache := New(60*time.Second, nil)

	for i := 0; i < n; i++ {
		assert.NoError(t, memoryCache.AddStats(&cInfo, makeStat(i)))
	}
	return memoryCache
}

func TestRecentStatsGetZeroStats(t *testing.T) {
	memoryCache := makeWithStats(t, 10)

	assert.Len(t, getRecentStats(t, memoryCache, 0), 0)
}

func TestRecentStatsGetSomeStats(t *testing.T) {
	memoryCache := makeWithStats(t, 10)

	assert.Len(t, getRecentStats(t, memoryCache, 5), 5)
}

func TestRecentStatsGetAllStats(t *testing.T) {
	memoryCache := makeWithStats(t, 10)

	assert.Len(t, getRecentStats(t, memoryCache, -1), 10)
}


================================================
FILE: client/README.md
================================================
# Example REST API Client

This is an implementation of a cAdvisor REST API in Go.  You can use it like this:

```go
client, err := client.NewClient("http://192.168.59.103:8080/")
```

Obviously, replace the URL with the path to your actual cAdvisor REST endpoint.


### MachineInfo

```go
client.MachineInfo()
```

This method returns a cadvisor/v1.MachineInfo struct with all the fields filled in.  Here is an example return value:

```
(*v1.MachineInfo)(0xc208022b10)({
 NumCores: (int) 4,
 MemoryCapacity: (int64) 2106028032,
 Filesystems: ([]v1.FsInfo) (len=1 cap=4) {
  (v1.FsInfo) {
   Device: (string) (len=9) "/dev/sda1",
   Capacity: (uint64) 19507089408
  }
 }
})
```

You can see the full specification of the [MachineInfo struct in the source](../info/v1/machine.go#L131)

### ContainerInfo

Given a container name and a [ContainerInfoRequest](../info/v1/container.go#L101), will return all information about the specified container.  See the [ContainerInfoRequest struct in the source](../info/v1/container.go#L101) for the full specification.

```go
request := v1.ContainerInfoRequest{NumStats: 10}
sInfo, err := client.ContainerInfo("/docker/d9d3eb10179e6f93a...", &request)
```
Returns a [ContainerInfo struct](../info/v1/container.go#L128)

### SubcontainersInfo

Given a container name and a [ContainerInfoRequest](../info/v1/container.go#L101), will recursively return all info about the container and all subcontainers contained within the container.  See the [ContainerInfoRequest struct in the source](../info/v1/container.go#L101) for the full specification.

```go
request := v1.ContainerInfoRequest{NumStats: 10}
sInfo, err := client.SubcontainersInfo("/docker", &request)
```

Returns a [ContainerInfo struct](../info/v1/container.go#L128) with the Subcontainers field populated.


================================================
FILE: client/client.go
================================================
// Copyright 2014 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// This is an implementation of a cAdvisor REST API in Go.
// To use it, create a client (replace the URL with your actual cAdvisor REST endpoint):
//
//	client, err := client.NewClient("http://192.168.59.103:8080/")
//
// Then, the client interface exposes go methods corresponding to the REST endpoints.
package client

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"path"
	"strings"

	v1 "github.com/google/cadvisor/info/v1"

	"k8s.io/klog/v2"
)

// Client represents the base URL for a cAdvisor client.
type Client struct {
	baseURL    string
	httpClient *http.Client
}

// NewClient returns a new v1.3 client with the specified base URL.
func NewClient(url string) (*Client, error) {
	return newClient(url, http.DefaultClient)
}

func newClient(url string, client *http.Client) (*Client, error) {
	if !strings.HasSuffix(url, "/") {
		url += "/"
	}

	return &Client{
		baseURL:    fmt.Sprintf("%sapi/v1.3/", url),
		httpClient: client,
	}, nil
}

// Returns all past events that satisfy the request
func (c *Client) EventStaticInfo(name string) (einfo []*v1.Event, err error) {
	u := c.eventsInfoURL(name)
	ret := new([]*v1.Event)
	if err = c.httpGetJSONData(ret, nil, u, "event info"); err != nil {
		return
	}
	einfo = *ret
	return
}

// Streams all events that occur that satisfy the request into the channel
// that is passed
func (c *Client) EventStreamingInfo(name string, einfo chan *v1.Event) (err error) {
	u := c.eventsInfoURL(name)
	if err = c.getEventStreamingData(u, einfo); err != nil {
		return
	}
	return nil
}

// MachineInfo returns the JSON machine information for this client.
// A non-nil error result indicates a problem with obtaining
// the JSON machine information data.
func (c *Client) MachineInfo() (minfo *v1.MachineInfo, err error) {
	u := c.machineInfoURL()
	ret := new(v1.MachineInfo)
	if err = c.httpGetJSONData(ret, nil, u, "machine info"); err != nil {
		return
	}
	minfo = ret
	return
}

// ContainerInfo returns the JSON container information for the specified
// container and request.
func (c *Client) ContainerInfo(name string, query *v1.ContainerInfoRequest) (cinfo *v1.ContainerInfo, err error) {
	u := c.containerInfoURL(name)
	ret := new(v1.ContainerInfo)
	if err = c.httpGetJSONData(ret, query, u, fmt.Sprintf("container info for %q", name)); err != nil {
		return
	}
	cinfo = ret
	return
}

// Returns the information about all subcontainers (recursive) of the specified container (including itself).
func (c *Client) SubcontainersInfo(name string, query *v1.ContainerInfoRequest) ([]v1.ContainerInfo, error) {
	var response []v1.ContainerInfo
	url := c.subcontainersInfoURL(name)
	err := c.httpGetJSONData(&response, query, url, fmt.Sprintf("subcontainers container info for %q", name))
	if err != nil {
		return []v1.ContainerInfo{}, err

	}
	return response, nil
}

// Returns the JSON container information for the specified
// Docker container and request.
func (c *Client) DockerContainer(name string, query *v1.ContainerInfoRequest) (cinfo v1.ContainerInfo, err error) {
	u := c.dockerInfoURL(name)
	ret := make(map[string]v1.ContainerInfo)
	if err = c.httpGetJSONData(&ret, query, u, fmt.Sprintf("Docker container info for %q", name)); err != nil {
		return
	}
	if len(ret) != 1 {
		err = fmt.Errorf("expected to only receive 1 Docker container: %+v", ret)
		return
	}
	for _, cont := range ret {
		cinfo = cont
	}
	return
}

// Returns the JSON container information for all Docker containers.
func (c *Client) AllDockerContainers(query *v1.ContainerInfoRequest) (cinfo []v1.ContainerInfo, err error) {
	u := c.dockerInfoURL("/")
	ret := make(map[string]v1.ContainerInfo)
	if err = c.httpGetJSONData(&ret, query, u, "all Docker containers info"); err != nil {
		return
	}
	cinfo = make([]v1.ContainerInfo, 0, len(ret))
	for _, cont := range ret {
		cinfo = append(cinfo, cont)
	}
	return
}

func (c *Client) machineInfoURL() string {
	return c.baseURL + path.Join("machine")
}

func (c *Client) containerInfoURL(name string) string {
	return c.baseURL + path.Join("containers", name)
}

func (c *Client) subcontainersInfoURL(name string) string {
	return c.baseURL + path.Join("subcontainers", name)
}

func (c *Client) dockerInfoURL(name string) string {
	return c.baseURL + path.Join("docker", name)
}

func (c *Client) eventsInfoURL(name string) string {
	return c.baseURL + path.Join("events", name)
}

func (c *Client) httpGetJSONData(data, postData interface{}, url, infoName string) error {
	var resp *http.Response
	var err error

	if postData != nil {
		data, marshalErr := json.Marshal(postData)
		if marshalErr != nil {
			return fmt.Errorf("unable to marshal data: %v", marshalErr)
		}
		resp, err = c.httpClient.Post(url, "application/json", bytes.NewBuffer(data))
	} else {
		resp, err = c.httpClient.Get(url)
	}
	if err != nil {
		return fmt.Errorf("unable to get %q from %q: %v", infoName, url, err)
	}
	if resp == nil {
		return fmt.Errorf("received empty response for %q from %q", infoName, url)
	}
	defer resp.Body.Close()
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		err = fmt.Errorf("unable to read all %q from %q: %v", infoName, url, err)
		return err
	}
	if resp.StatusCode != 200 {
		return fmt.Errorf("request %q failed with error: %q", url, strings.TrimSpace(string(body)))
	}
	if err = json.Unmarshal(body, data); err != nil {
		err = fmt.Errorf("unable to unmarshal %q (Body: %q) from %q with error: %v", infoName, string(body), url, err)
		return err
	}
	return nil
}

func (c *Client) getEventStreamingData(url string, einfo chan *v1.Event) error {
	req, err := http.NewRequest("GET", url, nil)
	if err != nil {
		return err
	}
	resp, err := c.httpClient.Do(req)
	if err != nil {
		return err
	}
	if resp.StatusCode != http.StatusOK {
		return fmt.Errorf("status code is not OK: %v (%s)", resp.StatusCode, resp.Status)
	}

	dec := json.NewDecoder(resp.Body)
	m := &v1.Event{}
	for {
		err := dec.Decode(m)
		if err != nil {
			if err == io.EOF {
				break
			}
			// if called without &stream=true will not be able to parse event and will trigger fatal
			klog.Fatalf("Received error %v", err)
		}
		einfo <- m
	}
	return nil
}


================================================
FILE: client/client_test.go
================================================
// Copyright 2014 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package client

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/http/httptest"
	"path"
	"reflect"
	"strings"
	"testing"
	"time"

	info "github.com/google/cadvisor/info/v1"
	itest "github.com/google/cadvisor/info/v1/test"

	"github.com/stretchr/testify/assert"
)

func cadvisorTestClient(path string, expectedPostObj *info.ContainerInfoRequest, replyObj interface{}, t *testing.T) (*Client, *httptest.Server, error) {
	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		if r.URL.Path == path {
			if expectedPostObj != nil {
				expectedPostObjEmpty := new(info.ContainerInfoRequest)
				decoder := json.NewDecoder(r.Body)
				if err := decoder.Decode(expectedPostObjEmpty); err != nil {
					t.Errorf("Received invalid object: %v", err)
				}
				if expectedPostObj.NumStats != expectedPostObjEmpty.NumStats ||
					expectedPostObj.Start.Unix() != expectedPostObjEmpty.Start.Unix() ||
					expectedPostObj.End.Unix() != expectedPostObjEmpty.End.Unix() {
					t.Errorf("Received unexpected object: %+v, expected: %+v", expectedPostObjEmpty, expectedPostObj)
				}
			}
			encoder := json.NewEncoder(w)
			err := encoder.Encode(replyObj)
			assert.NoError(t, err)
		} else {
			w.WriteHeader(http.StatusNotFound)
			fmt.Fprintf(w, "Page not found.")
		}
	}))
	client, err := NewClient(ts.URL)
	if err != nil {
		ts.Close()
		return nil, nil, err
	}
	return client, ts, err
}

// TestGetMachineInfo performs one test to check if MachineInfo()
// in a cAdvisor client returns the correct result.
func TestGetMachineinfo(t *testing.T) {
	minfo := &info.MachineInfo{
		NumCores:       8,
		MemoryCapacity: 31625871360,
		DiskMap: map[string]info.DiskInfo{
			"8:0": {
				Name:  "sda",
				Major: 8,
				Minor: 0,
				Size:  10737418240,
			},
		},
	}
	client, server, err := cadvisorTestClient("/api/v1.3/machine", nil, minfo, t)
	if err != nil {
		t.Fatalf("unable to get a client %v", err)
	}
	defer server.Close()
	returned, err := client.MachineInfo()
	if err != nil {
		t.Fatal(err)
	}
	if !reflect.DeepEqual(returned, minfo) {
		t.Fatalf("received unexpected machine info")
	}
}

// TestGetContainerInfo generates a random container information object
// and then checks that ContainerInfo returns the expected result.
func TestGetContainerInfo(t *testing.T) {
	query := &info.ContainerInfoRequest{
		NumStats: 3,
	}
	containerName := "/some/container"
	cinfo := itest.GenerateRandomContainerInfo(containerName, 4, query, 1*time.Second)
	client, server, err := cadvisorTestClient(fmt.Sprintf("/api/v1.3/containers%v", containerName), query, cinfo, t)
	if err != nil {
		t.Fatalf("unable to get a client %v", err)
	}
	defer server.Close()
	returned, err := client.ContainerInfo(containerName, query)
	if err != nil {
		t.Fatal(err)
	}

	if !returned.Eq(cinfo) {
		t.Error("received unexpected ContainerInfo")
	}
}

// Test a request failing
func TestRequestFails(t *testing.T) {
	errorText := "there was an error"
	// Setup a server that simply fails.
	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		http.Error(w, errorText, 500)
	}))
	client, err := NewClient(ts.URL)
	if err != nil {
		ts.Close()
		t.Fatal(err)
	}
	defer ts.Close()

	_, err = client.ContainerInfo("/", &info.ContainerInfoRequest{NumStats: 3})
	if err == nil {
		t.Fatalf("Expected non-nil error")
	}
	expectedError := fmt.Sprintf("request failed with error: %q", errorText)
	if strings.Contains(err.Error(), expectedError) {
		t.Fatalf("Expected error %q but received %q", expectedError, err)
	}
}

func TestGetSubcontainersInfo(t *testing.T) {
	query := &info.ContainerInfoRequest{
		NumStats: 3,
	}
	containerName := "/some/container"
	cinfo := itest.GenerateRandomContainerInfo(containerName, 4, query, 1*time.Second)
	cinfo1 := itest.GenerateRandomContainerInfo(path.Join(containerName, "sub1"), 4, query, 1*time.Second)
	cinfo2 := itest.GenerateRandomContainerInfo(path.Join(containerName, "sub2"), 4, query, 1*time.Second)
	response := []info.ContainerInfo{
		*cinfo,
		*cinfo1,
		*cinfo2,
	}
	client, server, err := cadvisorTestClient(fmt.Sprintf("/api/v1.3/subcontainers%v", containerName), query, response, t)
	if err != nil {
		t.Fatalf("unable to get a client %v", err)
	}
	defer server.Close()
	returned, err := client.SubcontainersInfo(containerName, query)
	if err != nil {
		t.Fatal(err)
	}

	if len(returned) != 3 {
		t.Errorf("unexpected number of results: got %d, expected 3", len(returned))
	}
	if !returned[0].Eq(cinfo) {
		t.Error("received unexpected ContainerInfo")
	}
	if !returned[1].Eq(cinfo1) {
		t.Error("received unexpected ContainerInfo")
	}
	if !returned[2].Eq(cinfo2) {
		t.Error("received unexpected ContainerInfo")
	}
}


================================================
FILE: client/clientexample/main.go
================================================
// Copyright 2014 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package main

import (
	"flag"

	"github.com/google/cadvisor/client"
	info "github.com/google/cadvisor/info/v1"

	"k8s.io/klog/v2"
)

func staticClientExample() {
	staticClient, err := client.NewClient("http://localhost:8080/")
	if err != nil {
		klog.Errorf("tried to make client and got error %v", err)
		return
	}
	einfo, err := staticClient.EventStaticInfo("?oom_events=true")
	if err != nil {
		klog.Errorf("got error retrieving event info: %v", err)
		return
	}
	for idx, ev := range einfo {
		klog.Infof("static einfo %v: %v", idx, ev)
	}
}

func streamingClientExample(url string) {
	streamingClient, err := client.NewClient("http://localhost:8080/")
	if err != nil {
		klog.Errorf("tried to make client and got error %v", err)
		return
	}
	einfo := make(chan *info.Event)
	go func() {
		err = streamingClient.EventStreamingInfo(url, einfo)
		if err != nil {
			klog.Errorf("got error retrieving event info: %v", err)
			return
		}
	}()
	for ev := range einfo {
		klog.Infof("streaming einfo: %v\n", ev)
	}
}

// demonstrates how to use event clients
func main() {
	klog.InitFlags(nil)
	flag.Parse()
	staticClientExample()
	streamingClientExample("?creation_events=true&stream=true&oom_events=true&deletion_events=true")
}


================================================
FILE: client/v2/README.md
================================================
# Example REST API Client

This is an implementation of a cAdvisor REST API in Go.  You can use it like this:

```go
client, err := client.NewClient("http://192.168.59.103:8080/")
```

Obviously, replace the URL with the path to your actual cAdvisor REST endpoint.


### MachineInfo

```go
client.MachineInfo()
```

There is no v2 MachineInfo API, so the v2 client exposes the [v1 MachineInfo](../../info/v1/machine.go#L131)

```
(*v1.MachineInfo)(0xc208022b10)({
 NumCores: (int) 4,
 MemoryCapacity: (int64) 2106028032,
 Filesystems: ([]v1.FsInfo) (len=1 cap=4) {
  (v1.FsInfo) {
   Device: (string) (len=9) "/dev/sda1",
   Capacity: (uint64) 19507089408
  }
 }
})
```

You can see the full specification of the [MachineInfo struct in the source](../../info/v1/machine.go#L131)

### VersionInfo

```go
client.VersionInfo()
```

This method returns the cAdvisor version.

### Attributes

```go
client.Attributes()
```

This method returns a [cadvisor/info/v2/Attributes](../../info/v2/machine.go#L24) struct with all the fields filled in. Attributes includes hardware attributes (as returned by MachineInfo) as well as software attributes (eg. software versions). Here is an example return value:

```
(*v2.Attributes)({
 KernelVersion: (string) (len=17) "3.13.0-44-generic"
 ContainerOsVersion: (string) (len=18) "Ubuntu 14.04.1 LTS"
 DockerVersion: (string) (len=9) "1.5.0-rc4"
 CadvisorVersion: (string) (len=6) "0.10.1"
 NumCores: (int) 4,
 MemoryCapacity: (int64) 2106028032,
 Filesystems: ([]v2.FsInfo) (len=1 cap=4) {
  (v2.FsInfo) {
   Device: (string) (len=9) "/dev/sda1",
   Capacity: (uint64) 19507089408
  }
 }
})
```

You can see the full specification of the [Attributes struct in the source](../../info/v2/machine.go#L24)



================================================
FILE: client/v2/client.go
================================================
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Client library to programmatically access cAdvisor API.
package v2

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
	"path"
	"strconv"
	"strings"

	v1 "github.com/google/cadvisor/info/v1"
	v2 "github.com/google/cadvisor/info/v2"
)

// Client represents the base URL for a cAdvisor client.
type Client struct {
	baseURL string
}

// NewClient returns a new client with the specified base URL.
func NewClient(url string) (*Client, error) {
	if !strings.HasSuffix(url, "/") {
		url += "/"
	}

	return &Client{
		baseURL: fmt.Sprintf("%sapi/v2.1/", url),
	}, nil
}

// MachineInfo returns the JSON machine information for this client.
// A non-nil error result indicates a problem with obtaining
// the JSON machine information data.
func (c *Client) MachineInfo() (minfo *v1.MachineInfo, err error) {
	u := c.machineInfoURL()
	ret := new(v1.MachineInfo)
	if err = c.httpGetJSONData(ret, nil, u, "machine info"); err != nil {
		return
	}
	minfo = ret
	return
}

// MachineStats returns the JSON machine statistics for this client.
// A non-nil error result indicates a problem with obtaining
// the JSON machine information data.
func (c *Client) MachineStats() ([]v2.MachineStats, error) {
	var ret []v2.MachineStats
	u := c.machineStatsURL()
	err := c.httpGetJSONData(&ret, nil, u, "machine stats")
	return ret, err
}

// VersionInfo returns the version info for cAdvisor.
func (c *Client) VersionInfo() (version string, err error) {
	u := c.versionInfoURL()
	version, err = c.httpGetString(u, "version info")
	return
}

// Attributes returns hardware and software attributes of the machine.
func (c *Client) Attributes() (attr *v2.Attributes, err error) {
	u := c.attributesURL()
	ret := new(v2.Attributes)
	if err = c.httpGetJSONData(ret, nil, u, "attributes"); err != nil {
		return
	}
	attr = ret
	return
}

// Stats returns stats for the requested container.
func (c *Client) Stats(name string, request *v2.RequestOptions) (map[string]v2.ContainerInfo, error) {
	u := c.statsURL(name)
	ret := make(map[string]v2.ContainerInfo)
	data := url.Values{
		"type":      []string{request.IdType},
		"count":     []string{strconv.Itoa(request.Count)},
		"recursive": []string{strconv.FormatBool(request.Recursive)},
	}
	if request.MaxAge != nil {
		data.Set("max_age", request.MaxAge.String())
	}

	u = fmt.Sprintf("%s?%s", u, data.Encode())
	if err := c.httpGetJSONData(&ret, nil, u, "stats"); err != nil {
		return nil, err
	}
	return ret, nil
}

func (c *Client) machineInfoURL() string {
	return c.baseURL + path.Join("machine")
}

func (c *Client) machineStatsURL() string {
	return c.baseURL + path.Join("machinestats")
}

func (c *Client) versionInfoURL() string {
	return c.baseURL + path.Join("version")
}

func (c *Client) attributesURL() string {
	return c.baseURL + path.Join("attributes")
}

func (c *Client) statsURL(name string) string {
	return c.baseURL + path.Join("stats", name)
}

func (c *Client) httpGetResponse(postData interface{}, urlPath, infoName string) ([]byte, error) {
	var resp *http.Response
	var err error

	if postData != nil {
		data, marshalErr := json.Marshal(postData)
		if marshalErr != nil {
			return nil, fmt.Errorf("unable to marshal data: %v", marshalErr)
		}
		resp, err = http.Post(urlPath, "application/json", bytes.NewBuffer(data))
	} else {
		resp, err = http.Get(urlPath)
	}
	if err != nil {
		return nil, fmt.Errorf("unable to post %q to %q: %v", infoName, urlPath, err)
	}
	if resp == nil {
		return nil, fmt.Errorf("received empty response for %q from %q", infoName, urlPath)
	}
	defer resp.Body.Close()
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		err = fmt.Errorf("unable to read all %q from %q: %v", infoName, urlPath, err)
		return nil, err
	}
	if resp.StatusCode != 200 {
		return nil, fmt.Errorf("request %q failed with error: %q", urlPath, strings.TrimSpace(string(body)))
	}
	return body, nil
}

func (c *Client) httpGetString(url, infoName string) (string, error) {
	body, err := c.httpGetResponse(nil, url, infoName)
	if err != nil {
		return "", err
	}
	return string(body), nil
}

func (c *Client) httpGetJSONData(data, postData interface{}, url, infoName string) error {
	body, err := c.httpGetResponse(postData, url, infoName)
	if err != nil {
		return err
	}
	if err = json.Unmarshal(body, data); err != nil {
		err = fmt.Errorf("unable to unmarshal %q (Body: %q) from %q with error: %v", infoName, string(body), url, err)
		return err
	}
	return nil
}


================================================
FILE: client/v2/client_test.go
================================================
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package v2

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/http/httptest"
	"reflect"
	"strings"
	"testing"
	"time"

	"github.com/stretchr/testify/assert"

	v1 "github.com/google/cadvisor/info/v1"
	v2 "github.com/google/cadvisor/info/v2"
)

func cadvisorTestClient(path string, expectedPostObj *v1.ContainerInfoRequest, replyObj interface{}, t *testing.T) (*Client, *httptest.Server, error) {
	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		if r.URL.Path == path {
			if expectedPostObj != nil {
				expectedPostObjEmpty := new(v1.ContainerInfoRequest)
				decoder := json.NewDecoder(r.Body)
				if err := decoder.Decode(expectedPostObjEmpty); err != nil {
					t.Errorf("Received invalid object: %v", err)
				}
				if expectedPostObj.NumStats != expectedPostObjEmpty.NumStats ||
					expectedPostObj.Start.Unix() != expectedPostObjEmpty.Start.Unix() ||
					expectedPostObj.End.Unix() != expectedPostObjEmpty.End.Unix() {
					t.Errorf("Received unexpected object: %+v, expected: %+v", expectedPostObjEmpty, expectedPostObj)
				}
			}
			encoder := json.NewEncoder(w)
			err := encoder.Encode(replyObj)
			assert.NoError(t, err)
		} else if r.URL.Path == "/api/v2.1/version" {
			fmt.Fprintf(w, "0.1.2")
		} else {
			w.WriteHeader(http.StatusNotFound)
			fmt.Fprintf(w, "Page not found.")
		}
	}))
	client, err := NewClient(ts.URL)
	if err != nil {
		ts.Close()
		return nil, nil, err
	}
	return client, ts, err
}

// TestGetMachineInfo performs one test to check if MachineInfo()
// in a cAdvisor client returns the correct result.
func TestGetMachineInfo(t *testing.T) {
	mv1 := &v1.MachineInfo{
		NumCores:       8,
		MemoryCapacity: 31625871360,
		DiskMap: map[string]v1.DiskInfo{
			"8:0": {
				Name:  "sda",
				Major: 8,
				Minor: 0,
				Size:  10737418240,
			},
		},
	}
	client, server, err := cadvisorTestClient("/api/v2.1/machine", nil, mv1, t)
	if err != nil {
		t.Fatalf("unable to get a client %v", err)
	}
	defer server.Close()
	returned, err := client.MachineInfo()
	if err != nil {
		t.Fatal(err)
	}
	if !reflect.DeepEqual(returned, mv1) {
		t.Fatalf("received unexpected machine v1")
	}
}

// TestGetVersionV1 performs one test to check if VersionV1()
// in a cAdvisor client returns the correct result.
func TestGetVersionv1(t *testing.T) {
	version := "0.1.2"
	client, server, err := cadvisorTestClient("", nil, version, t)
	if err != nil {
		t.Fatalf("unable to get a client %v", err)
	}
	defer server.Close()
	returned, err := client.VersionInfo()
	if err != nil {
		t.Fatal(err)
	}
	if returned != version {
		t.Fatalf("received unexpected version v1")
	}
}

// TestAttributes performs one test to check if Attributes()
// in a cAdvisor client returns the correct result.
func TestGetAttributes(t *testing.T) {
	attr := &v2.Attributes{
		KernelVersion:      "3.3.0",
		ContainerOsVersion: "Ubuntu 14.4",
		DockerVersion:      "Docker 1.5",
		CadvisorVersion:    "0.1.2",
		NumCores:           8,
		MemoryCapacity:     31625871360,
		DiskMap: map[string]v1.DiskInfo{
			"8:0": {
				Name:  "sda",
				Major: 8,
				Minor: 0,
				Size:  10737418240,
			},
		},
	}
	client, server, err := cadvisorTestClient("/api/v2.1/attributes", nil, attr, t)
	if err != nil {
		t.Fatalf("unable to get a client %v", err)
	}
	defer server.Close()
	returned, err := client.Attributes()
	if err != nil {
		t.Fatal(err)
	}
	if !reflect.DeepEqual(returned, attr) {
		t.Fatalf("received unexpected attributes")
	}
}

// TestMachineStats performs one test to check if MachineStats()
// in a cAdvisor client returns the correct result.
func TestMachineStats(t *testing.T) {
	machineStats := []v2.MachineStats{
		{
			Timestamp: time.Now(),
			Cpu: &v1.CpuStats{
				Usage: v1.CpuUsage{
					Total: 100000,
				},
				LoadAverage: 10,
			},
			Filesystem: []v2.MachineFsStats{
				{
					Device: "sda1",
				},
			},
		},
	}
	client, server, err := cadvisorTestClient("/api/v2.1/machinestats", nil, &machineStats, t)
	if err != nil {
		t.Fatalf("unable to get a client %v", err)
	}
	defer server.Close()
	returned, err := client.MachineStats()
	if err != nil {
		t.Fatal(err)
	}
	assert.Len(t, returned, len(machineStats))
	if !reflect.DeepEqual(returned[0].Cpu, machineStats[0].Cpu) {
		t.Fatalf("received unexpected machine stats\nExp: %+v\nAct: %+v", machineStats, returned)
	}
	if !reflect.DeepEqual(returned[0].Filesystem, machineStats[0].Filesystem) {
		t.Fatalf("received unexpected machine stats\nExp: %+v\nAct: %+v", machineStats, returned)
	}
}

func TestRequestFails(t *testing.T) {
	errorText := "there was an error"
	// Setup a server that simply fails.
	ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		http.Error(w, errorText, 500)
	}))
	client, err := NewClient(ts.URL)
	if err != nil {
		ts.Close()
		t.Fatal(err)
	}
	defer ts.Close()

	_, err = client.MachineInfo()
	if err == nil {
		t.Fatalf("Expected non-nil error")
	}
	expectedError := fmt.Sprintf("request failed with error: %q", errorText)
	if strings.Contains(err.Error(), expectedError) {
		t.Fatalf("Expected error %q but received %q", expectedError, err)
	}
}


================================================
FILE: cmd/cadvisor.go
================================================
// Copyright 2014 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package main

import (
	"crypto/tls"
	"flag"
	"fmt"
	"net/http"
	"net/http/pprof"
	"os"
	"os/signal"
	"runtime"
	"strings"
	"syscall"

	cadvisorhttp "github.com/google/cadvisor/cmd/internal/http"
	"github.com/google/cadvisor/container"
	"github.com/google/cadvisor/manager"
	"github.com/google/cadvisor/metrics"
	"github.com/google/cadvisor/utils/sysfs"
	"github.com/google/cadvisor/version"

	// Register container providers
	_ "github.com/google/cadvisor/cmd/internal/container/install"

	// Register CloudProviders
	_ "github.com/google/cadvisor/utils/cloudinfo/aws"
	_ "github.com/google/cadvisor/utils/cloudinfo/azure"
	_ "github.com/google/cadvisor/utils/cloudinfo/gce"

	// Register resctrl plugin
	_ "github.com/google/cadvisor/resctrl/intel/install"

	"k8s.io/klog/v2"
)

var argIP = flag.String("listen_ip", "", "IP to listen on, defaults to all IPs")
var argPort = flag.Int("port", 8080, "port to listen")
var maxProcs = flag.Int("max_procs", 0, "max number of CPUs that can be used simultaneously. Less than 1 for default (number of cores).")

var versionFlag = flag.Bool("version", false, "print cAdvisor version and exit")

var httpAuthFile = flag.String("http_auth_file", "", "HTTP auth file for the web UI")
var httpAuthRealm = flag.String("http_auth_realm", "localhost", "HTTP auth realm for the web UI")
var httpDigestFile = flag.String("http_digest_file", "", "HTTP digest file for the web UI")
var httpDigestRealm = flag.String("http_digest_realm", "localhost", "HTTP digest file for the web UI")

var prometheusEndpoint = flag.String("prometheus_endpoint", "/metrics", "Endpoint to expose Prometheus metrics on")

var enableProfiling = flag.Bool("profiling", false, "Enable profiling via web interface host:port/debug/pprof/")

var collectorCert = flag.String("collector_cert", "", "Collector's certificate, exposed to endpoints for certificate based authentication.")
var collectorKey = flag.String("collector_key", "", "Key for the collector's certificate")

var storeContainerLabels = flag.Bool("store_container_labels", true, "convert container labels and environment variables into labels on prometheus metrics for each container. If flag set to false, then only metrics exported are container name, first alias, and image name")
var whitelistedContainerLabels = flag.String("whitelisted_container_labels", "", "comma separated list of container labels to be converted to labels on prometheus metrics for each container. store_container_labels must be set to false for this to take effect.")

var envMetadataWhiteList = flag.String("env_metadata_whitelist", "", "a comma-separated list of environment variable keys matched with specified prefix that needs to be collected for containers, only support containerd and docker runtime for now.")

var urlBasePrefix = flag.String("url_base_prefix", "", "prefix path that will be prepended to all paths to support some reverse proxies")

var rawCgroupPrefixWhiteList = flag.String("raw_cgroup_prefix_whitelist", "", "A comma-separated list of cgroup path prefix that needs to be collected even when -docker_only is specified")

var perfEvents = flag.String("perf_events_config", "", "Path to a JSON file containing configuration of perf events to measure. Empty value disabled perf events measuring.")

var resctrlInterval = flag.Duration("resctrl_interval", 0, "Resctrl mon groups updating interval. Zero value disables updating mon groups.")

var (
	// Metrics to be ignored.
	// Tcp metrics are ignored by default.
	ignoreMetrics = container.MetricSet{
		container.MemoryNumaMetrics:              struct{}{},
		container.NetworkTcpUsageMetrics:         struct{}{},
		container.NetworkUdpUsageMetrics:         struct{}{},
		container.NetworkAdvancedTcpUsageMetrics: struct{}{},
		container.ProcessSchedulerMetrics:        struct{}{},
		container.ProcessMetrics:                 struct{}{},
		container.HugetlbUsageMetrics:            struct{}{},
		container.ReferencedMemoryMetrics:        struct{}{},
		container.CPUTopologyMetrics:             struct{}{},
		container.ResctrlMetrics:                 struct{}{},
		container.CPUSetMetrics:                  struct{}{},
	}

	// Metrics to be enabled.  Used only if non-empty.
	enableMetrics = container.MetricSet{}
)

func init() {
	optstr := container.AllMetrics.String()
	flag.Var(&ignoreMetrics, "disable_metrics", fmt.Sprintf("comma-separated list of `metrics` to be disabled. Options are %s.", optstr))
	flag.Var(&enableMetrics, "enable_metrics", fmt.Sprintf("comma-separated list of `metrics` to be enabled. If set, overrides 'disable_metrics'. Options are %s.", optstr))
}

func main() {
	klog.InitFlags(nil)
	defer klog.Flush()
	// Default logging verbosity to V(2)
	_ = flag.Set("v", "2")
	flag.Parse()

	if *versionFlag {
		fmt.Printf("cAdvisor version %s (%s)\n", version.Info["version"], version.Info["revision"])
		os.Exit(0)
	}

	var includedMetrics container.MetricSet
	if len(enableMetrics) > 0 {
		includedMetrics = enableMetrics
	} else {
		includedMetrics = container.AllMetrics.Difference(ignoreMetrics)
	}
	klog.V(1).Infof("enabled metrics: %s", includedMetrics.String())
	setMaxProcs()

	memoryStorage, err := NewMemoryStorage()
	if err != nil {
		klog.Fatalf("Failed to initialize storage driver: %s", err)
	}

	sysFs := sysfs.NewRealSysFs()

	collectorHTTPClient := createCollectorHTTPClient(*collectorCert, *collectorKey)

	resourceManager, err := manager.New(memoryStorage, sysFs, manager.HousekeepingConfigFlags, includedMetrics, &collectorHTTPClient, strings.Split(*rawCgroupPrefixWhiteList, ","), strings.Split(*envMetadataWhiteList, ","), *perfEvents, *resctrlInterval)
	if err != nil {
		klog.Fatalf("Failed to create a manager: %s", err)
	}

	mux := http.NewServeMux()

	if *enableProfiling {
		mux.HandleFunc("/debug/pprof/", pprof.Index)
		mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
		mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
		mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
	}

	// Register all HTTP handlers.
	err = cadvisorhttp.RegisterHandlers(mux, resourceManager, *httpAuthFile, *httpAuthRealm, *httpDigestFile, *httpDigestRealm, *urlBasePrefix)
	if err != nil {
		klog.Fatalf("Failed to register HTTP handlers: %v", err)
	}

	containerLabelFunc := metrics.DefaultContainerLabels
	if !*storeContainerLabels {
		whitelistedLabels := strings.Split(*whitelistedContainerLabels, ",")
		// Trim spacing in labels
		for i := range whitelistedLabels {
			whitelistedLabels[i] = strings.TrimSpace(whitelistedLabels[i])
		}
		containerLabelFunc = metrics.BaseContainerLabels(whitelistedLabels)
	}

	// Register Prometheus collector to gather information about containers, Go runtime, processes, and machine
	cadvisorhttp.RegisterPrometheusHandler(mux, resourceManager, *prometheusEndpoint, containerLabelFunc, includedMetrics)

	// Start the manager.
	if err := resourceManager.Start(); err != nil {
		klog.Fatalf("Failed to start manager: %v", err)
	}

	// Install signal handler.
	installSignalHandler(resourceManager)

	klog.V(1).Infof("Starting cAdvisor version: %s-%s on port %d", version.Info["version"], version.Info["revision"], *argPort)

	rootMux := http.NewServeMux()
	rootMux.Handle(*urlBasePrefix+"/", http.StripPrefix(*urlBasePrefix, mux))

	addr := fmt.Sprintf("%s:%d", *argIP, *argPort)
	klog.Fatal(http.ListenAndServe(addr, rootMux))
}

func setMaxProcs() {
	// TODO(vmarmol): Consider limiting if we have a CPU mask in effect.
	// Allow as many threads as we have cores unless the user specified a value.
	var numProcs int
	if *maxProcs < 1 {
		numProcs = runtime.NumCPU()
	} else {
		numProcs = *maxProcs
	}
	runtime.GOMAXPROCS(numProcs)

	// Check if the setting was successful.
	actualNumProcs := runtime.GOMAXPROCS(0)
	if actualNumProcs != numProcs {
		klog.Warningf("Specified max procs of %v but using %v", numProcs, actualNumProcs)
	}
}

func installSignalHandler(containerManager manager.Manager) {
	c := make(chan os.Signal, 1)
	signal.Notify(c, os.Interrupt, syscall.SIGTERM)

	// Block until a signal is received.
	go func() {
		sig := <-c
		if err := containerManager.Stop(); err != nil {
			klog.Errorf("Failed to stop container manager: %v", err)
		}
		klog.Infof("Exiting given signal: %v", sig)
		os.Exit(0)
	}()
}

func createCollectorHTTPClient(collectorCert, collectorKey string) http.Client {
	//Enable accessing insecure endpoints. We should be able to access metrics from any endpoint
	tlsConfig := &tls.Config{
		InsecureSkipVerify: true,
	}

	if collectorCert != "" {
		if collectorKey == "" {
			klog.Fatal("The collector_key value must be specified if the collector_cert value is set.")
		}
		cert, err := tls.LoadX509KeyPair(collectorCert, collectorKey)
		if err != nil {
			klog.Fatalf("Failed to use the collector certificate and key: %s", err)
		}

		tlsConfig.Certificates = []tls.Certificate{cert}
		tlsConfig.BuildNameToCertificate() //nolint: staticcheck
	}

	transport := &http.Transport{
		TLSClientConfig: tlsConfig,
	}

	return http.Client{Transport: transport}
}


================================================
FILE: cmd/cadvisor_test.go
================================================
// Copyright 2014 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package main

import (
	"flag"
	"testing"

	"github.com/stretchr/testify/assert"

	"github.com/google/cadvisor/container"
)

func TestTcpMetricsAreDisabledByDefault(t *testing.T) {
	assert.True(t, ignoreMetrics.Has(container.NetworkTcpUsageMetrics))
	flag.Parse()
	assert.True(t, ignoreMetrics.Has(container.NetworkTcpUsageMetrics))
}

func TestAdvancedTcpMetricsAreDisabledByDefault(t *testing.T) {
	assert.True(t, ignoreMetrics.Has(container.NetworkAdvancedTcpUsageMetrics))
	flag.Parse()
	assert.True(t, ignoreMetrics.Has(container.NetworkAdvancedTcpUsageMetrics))
}

func TestUdpMetricsAreDisabledByDefault(t *testing.T) {
	assert.True(t, ignoreMetrics.Has(container.NetworkUdpUsageMetrics))
	flag.Parse()
	assert.True(t, ignoreMetrics.Has(container.NetworkUdpUsageMetrics))
}

func TestReferencedMemoryMetricsIsDisabledByDefault(t *testing.T) {
	assert.True(t, ignoreMetrics.Has(container.ReferencedMemoryMetrics))
	flag.Parse()
	assert.True(t, ignoreMetrics.Has(container.ReferencedMemoryMetrics))
}

func TestCPUTopologyMetricsAreDisabledByDefault(t *testing.T) {
	assert.True(t, ignoreMetrics.Has(container.CPUTopologyMetrics))
	flag.Parse()
	assert.True(t, ignoreMetrics.Has(container.CPUTopologyMetrics))
}

func TestMemoryNumaMetricsAreDisabledByDefault(t *testing.T) {
	assert.True(t, ignoreMetrics.Has(container.MemoryNumaMetrics))
	flag.Parse()
	assert.True(t, ignoreMetrics.Has(container.MemoryNumaMetrics))
}

func TestEnableAndIgnoreMetrics(t *testing.T) {
	tests := []struct {
		value    string
		expected []container.MetricKind
	}{
		{"", []container.MetricKind{}},
		{"disk", []container.MetricKind{container.DiskUsageMetrics}},
		{"disk,tcp,network", []container.MetricKind{container.DiskUsageMetrics, container.NetworkTcpUsageMetrics, container.NetworkUsageMetrics}},
	}

	for _, test := range tests {
		for _, sets := range []container.MetricSet{enableMetrics, ignoreMetrics} {
			assert.NoError(t, sets.Set(test.value))

			assert.Equal(t, len(test.expected), len(sets))
			for _, expected := range test.expected {
				assert.True(t, sets.Has(expected), "Missing %s", expected)
			}
		}
	}
}

func TestToIncludedMetrics(t *testing.T) {
	ignores := []container.MetricSet{
		{
			container.CpuUsageMetrics: struct{}{},
		},
		{},
		container.AllMetrics,
	}

	expected := []container.MetricSet{
		{
			container.ProcessSchedulerMetrics:        struct{}{},
			container.PerCpuUsageMetrics:             struct{}{},
			container.MemoryUsageMetrics:             struct{}{},
			container.MemoryNumaMetrics:              struct{}{},
			container.CpuLoadMetrics:                 struct{}{},
			container.DiskIOMetrics:                  struct{}{},
			container.DiskUsageMetrics:               struct{}{},
			container.NetworkUsageMetrics:            struct{}{},
			container.NetworkTcpUsageMetrics:         struct{}{},
			container.NetworkAdvancedTcpUsageMetrics: struct{}{},
			container.NetworkUdpUsageMetrics:         struct{}{},
			container.ProcessMetrics:                 struct{}{},
			container.AppMetrics:                     struct{}{},
			container.HugetlbUsageMetrics:            struct{}{},
			container.PerfMetrics:                    struct{}{},
			container.ReferencedMemoryMetrics:        struct{}{},
			container.CPUTopologyMetrics:             struct{}{},
			container.ResctrlMetrics:                 struct{}{},
			container.CPUSetMetrics:                  struct{}{},
			container.OOMMetrics:                     struct{}{},
			container.PressureMetrics:                struct{}{},
		},
		container.AllMetrics,
		{},
	}

	for idx, ignore := range ignores {
		actual := container.AllMetrics.Difference(ignore)
		assert.Equal(t, actual, expected[idx])
	}
}


================================================
FILE: cmd/go.mod
================================================
module github.com/google/cadvisor/cmd

go 1.24.0

// Record that the cmd module requires the cadvisor library module.
// The github.com/google/cadvisor/cmd module is built using the Makefile
// from a clone of the github.com/google/cadvisor repository, so we
// always use the relative local source rather than specifying a module version.
require github.com/google/cadvisor v0.0.0

// Use the relative local source of the github.com/google/cadvisor library to build
replace github.com/google/cadvisor => ../

require (
	github.com/SeanDolphin/bqschema v1.0.0
	github.com/Shopify/sarama v1.38.1
	github.com/abbot/go-http-auth v0.4.0
	github.com/gomodule/redigo v1.9.2
	github.com/influxdb/influxdb v1.7.9
	github.com/onsi/ginkgo v1.16.5 // indirect
	github.com/onsi/gomega v1.24.1 // indirect
	github.com/prometheus/client_golang v1.22.0
	github.com/stretchr/testify v1.11.1
	golang.org/x/oauth2 v0.30.0
	google.golang.org/api v0.235.0
	gopkg.in/olivere/elastic.v2 v2.0.61
	k8s.io/klog/v2 v2.130.1
	k8s.io/utils v0.0.0-20250502105355-0f33e8f1c979
)

require (
	cloud.google.com/go/auth v0.16.1 // indirect
	cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
	cloud.google.com/go/compute/metadata v0.7.0 // indirect
	github.com/Microsoft/go-winio v0.6.2 // indirect
	github.com/aws/aws-sdk-go-v2 v1.36.3 // indirect
	github.com/aws/aws-sdk-go-v2/config v1.29.14 // indirect
	github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect
	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
	github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
	github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
	github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
	github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect
	github.com/aws/smithy-go v1.22.3 // indirect
	github.com/beorn7/perks v1.0.1 // indirect
	github.com/blang/semver/v4 v4.0.0 // indirect
	github.com/cespare/xxhash/v2 v2.3.0 // indirect
	github.com/containerd/containerd/api v1.10.0 // indirect
	github.com/containerd/errdefs v1.0.0 // indirect
	github.com/containerd/errdefs/pkg v0.3.0 // indirect
	github.com/containerd/log v0.1.0 // indirect
	github.com/containerd/ttrpc v1.2.7 // indirect
	github.com/containerd/typeurl/v2 v2.2.3 // indirect
	github.com/coreos/go-systemd/v22 v22.6.0 // indirect
	github.com/cyphar/filepath-securejoin v0.6.1 // indirect
	github.com/davecgh/go-spew v1.1.1 // indirect
	github.com/distribution/reference v0.6.0 // indirect
	github.com/docker/go-connections v0.6.0 // indirect
	github.com/docker/go-units v0.5.0 // indirect
	github.com/eapache/go-resiliency v1.7.0 // indirect
	github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 // indirect
	github.com/eapache/queue v1.1.0 // indirect
	github.com/euank/go-kmsg-parser v2.0.0+incompatible // indirect
	github.com/felixge/httpsnoop v1.0.4 // indirect
	github.com/go-logr/logr v1.4.3 // indirect
	github.com/go-logr/stdr v1.2.2 // indirect
	github.com/godbus/dbus/v5 v5.1.0 // indirect
	github.com/gogo/protobuf v1.3.2 // indirect
	github.com/golang/snappy v1.0.0 // indirect
	github.com/google/s2a-go v0.1.9 // indirect
	github.com/google/uuid v1.6.0 // indirect
	github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
	github.com/googleapis/gax-go/v2 v2.14.2 // indirect
	github.com/hashicorp/errwrap v1.1.0 // indirect
	github.com/hashicorp/go-multierror v1.1.1 // indirect
	github.com/hashicorp/go-uuid v1.0.3 // indirect
	github.com/influxdata/influxdb v1.12.0 // indirect
	github.com/jcmturner/aescts/v2 v2.0.0 // indirect
	github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect
	github.com/jcmturner/gofork v1.7.6 // indirect
	github.com/jcmturner/gokrb5/v8 v8.4.4 // indirect
	github.com/jcmturner/rpc/v2 v2.0.3 // indirect
	github.com/klauspost/compress v1.18.0 // indirect
	github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect
	github.com/moby/docker-image-spec v1.3.1 // indirect
	github.com/moby/moby/api v1.52.0 // indirect
	github.com/moby/moby/client v0.2.1 // indirect
	github.com/moby/sys/mountinfo v0.7.2 // indirect
	github.com/moby/sys/userns v0.1.0 // indirect
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
	github.com/opencontainers/cgroups v0.0.6 // indirect
	github.com/opencontainers/go-digest v1.0.0 // indirect
	github.com/opencontainers/image-spec v1.1.1 // indirect
	github.com/opencontainers/runc v1.4.0 // indirect
	github.com/opencontainers/runtime-spec v1.3.0 // indirect
	github.com/pierrec/lz4/v4 v4.1.22 // indirect
	github.com/pmezard/go-difflib v1.0.0 // indirect
	github.com/prometheus/client_model v0.6.2 // indirect
	github.com/prometheus/common v0.64.0 // indirect
	github.com/prometheus/procfs v0.16.1 // indirect
	github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 // indirect
	github.com/sirupsen/logrus v1.9.3 // indirect
	github.com/stretchr/objx v0.5.2 // indirect
	go.opentelemetry.io/auto/sdk v1.1.0 // indirect
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
	go.opentelemetry.io/otel v1.36.0 // indirect
	go.opentelemetry.io/otel/metric v1.36.0 // indirect
	go.opentelemetry.io/otel/trace v1.36.0 // indirect
	golang.org/x/crypto v0.45.0 // indirect
	golang.org/x/net v0.47.0 // indirect
	golang.org/x/sync v0.19.0 // indirect
	golang.org/x/sys v0.39.0 // indirect
	golang.org/x/telemetry v0.0.0-20251215142616-e75fd47794af // indirect
	golang.org/x/text v0.31.0 // indirect
	google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect
	google.golang.org/grpc v1.72.2 // indirect
	google.golang.org/protobuf v1.36.8 // indirect
	gopkg.in/yaml.v3 v3.0.1 // indirect
)


================================================
FILE: cmd/go.sum
================================================
cloud.google.com/go/auth v0.16.1 h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU=
cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI=
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU=
cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/SeanDolphin/bqschema v1.0.0 h1:iCYFd5Qsw6caM2k5/SsITSL9+3kQCr+oz6pnNjWTq90=
github.com/SeanDolphin/bqschema v1.0.0/go.mod h1:TYInVncsPIZH7kybQoIUNJ4pFX1cUc8LoP9RSOxIs6c=
github.com/Shopify/sarama v1.38.1 h1:lqqPUPQZ7zPqYlWpTh+LQ9bhYNu2xJL6k1SJN4WVe2A=
github.com/Shopify/sarama v1.38.1/go.mod h1:iwv9a67Ha8VNa+TifujYoWGxWnu2kNVAQdSdZ4X2o5g=
github.com/Shopify/toxiproxy/v2 v2.5.0 h1:i4LPT+qrSlKNtQf5QliVjdP08GyAH8+BUIc9gT0eahc=
github.com/Shopify/toxiproxy/v2 v2.5.0/go.mod h1:yhM2epWtAmel9CB8r2+L+PCmhH6yH2pITaPAo7jxJl0=
github.com/abbot/go-http-auth v0.4.0 h1:QjmvZ5gSC7jm3Zg54DqWE/T5m1t2AfDu6QlXJT0EVT0=
github.com/abbot/go-http-auth v0.4.0/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/apache/arrow/go/v7 v7.0.1 h1:WpCfq+AQxvXaI6/KplHE27MPMFx5av0o5NbPCTAGfy4=
github.com/apache/arrow/go/v7 v7.0.1/go.mod h1:JxDpochJbCVxqbX4G8i1jRqMrnTCQdf8pTccAfLD8Es=
github.com/aws/aws-sdk-go-v2 v1.36.3 h1:mJoei2CxPutQVxaATCzDUjcZEjVRdpsiiXi2o38yqWM=
github.com/aws/aws-sdk-go-v2 v1.36.3/go.mod h1:LLXuLpgzEbD766Z5ECcRmi8AzSwfZItDtmABVkRLGzg=
github.com/aws/aws-sdk-go-v2/config v1.29.14 h1:f+eEi/2cKCg9pqKBoAIwRGzVb70MRKqWX4dg1BDcSJM=
github.com/aws/aws-sdk-go-v2/config v1.29.14/go.mod h1:wVPHWcIFv3WO89w0rE10gzf17ZYy+UVS1Geq8Iei34g=
github.com/aws/aws-sdk-go-v2/credentials v1.17.67 h1:9KxtdcIA/5xPNQyZRgUSpYOE6j9Bc4+D7nZua0KGYOM=
github.com/aws/aws-sdk-go-v2/credentials v1.17.67/go.mod h1:p3C44m+cfnbv763s52gCqrjaqyPikj9Sg47kUVaNZQQ=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 h1:ZK5jHhnrioRkUNOc+hOgQKlUL5JeC3S6JgLxtQ+Rm0Q=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34/go.mod h1:p4VfIceZokChbA9FzMbRGz5OV+lekcVtHlPKEO0gSZY=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 h1:SZwFm17ZUNNg5Np0ioo/gq8Mn6u9w19Mri8DnJ15Jf0=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34/go.mod h1:dFZsC0BLo346mvKQLWmoJxT+Sjp+qcVR1tRVHQGOH9Q=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 h1:eAh2A4b5IzM/lum78bZ590jy36+d/aFLgKF/4Vd1xPE=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3/go.mod h1:0yKJC/kb8sAnmlYa6Zs3QVYqaC8ug2AbnNChv5Ox3uA=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 h1:dM9/92u2F1JbDaGooxTq18wmmFzbJRfXfVfy96/1CXM=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15/go.mod h1:SwFBy2vjtA0vZbjjaFtfN045boopadnoVPhu4Fv66vY=
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8=
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs=
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 h1:1XuUZ8mYJw9B6lzAkXhqHlJd/XvaX32evhproijJEZY=
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4=
github.com/aws/smithy-go v1.22.3 h1:Z//5NuZCSW6R4PhQ93hShNbyBbn8BWCmCVCt+Q8Io5k=
github.com/aws/smithy-go v1.22.3/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
github.com/benbjohnson/immutable v0.4.3 h1:GYHcksoJ9K6HyAUpGxwZURrbTkXA0Dh4otXGqbhdrjA=
github.com/benbjohnson/immutable v0.4.3/go.mod h1:qJIKKSmdqz1tVzNtst1DZzvaqOU1onk1rc03IeM3Owk=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/containerd/containerd/api v1.10.0 h1:5n0oHYVBwN4VhoX9fFykCV9dF1/BvAXeg2F8W6UYq1o=
github.com/containerd/containerd/api v1.10.0/go.mod h1:NBm1OAk8ZL+LG8R0ceObGxT5hbUYj7CzTmR3xh0DlMM=
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/containerd/ttrpc v1.2.7 h1:qIrroQvuOL9HQ1X6KHe2ohc7p+HP/0VE6XPU7elJRqQ=
github.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o=
github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40=
github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=
github.com/coreos/go-systemd/v22 v22.6.0 h1:aGVa/v8B7hpb0TKl0MWoAavPDmHvobFe5R5zn0bCJWo=
github.com/coreos/go-systemd/v22 v22.6.0/go.mod h1:iG+pp635Fo7ZmV/j14KUcmEyWF+0X7Lua8rrTWzYgWU=
github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE=
github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94=
github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/eapache/go-resiliency v1.7.0 h1:n3NRTnBn5N0Cbi/IeOHuQn9s2UwVUH7Ga0ZWcP+9JTA=
github.com/eapache/go-resiliency v1.7.0/go.mod h1:5yPzW0MIvSe0JDsv0v+DvcjEv2FyD6iZYSs1ZI+iQho=
github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 h1:Oy0F4ALJ04o5Qqpdz8XLIpNA3WM/iSIXqxtqo7UGVws=
github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3/go.mod h1:YvSRo5mw33fLEx1+DlK6L2VV43tJt5Eyel9n9XBcR+0=
github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY=
github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84=
github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=
github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/gomodule/redigo v1.9.2 h1:HrutZBLhSIU8abiSfW8pj8mPhOyMYjZT/wcA4/L9L9s=
github.com/gomodule/redigo v1.9.2/go.mod h1:KsU3hiK/Ay8U42qpaJk+kuNa3C+spxapWpM+ywhcgtw=
github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI=
github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4=
github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA=
github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0=
github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w=
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/influxdata/flux v0.196.1 h1:RZypfrrAZeIixD/2As+qoyrwfs6Gx7VcnTRNGNjBfUA=
github.com/influxdata/flux v0.196.1/go.mod h1:+Y4mBygx6q98onpdKJd6vJPrTNjHriQhwh/gM+3IvUQ=
github.com/influxdata/influxdb v1.12.0 h1:hVFeHtEUh/MkI6YCmB1TAXlPgV4ZNh/V5FP6z7ywRLo=
github.com/influxdata/influxdb v1.12.0/go.mod h1:11RjLuBNkuWaJQFViRF/rpNzICfU6X0nuO003yeleKY=
github.com/influxdata/influxql v1.4.1 h1:UB+TMc9cB6mDdkPmH/5sBU8FQ+ZCWRX2JPcPDIFrLcs=
github.com/influxdata/influxql v1.4.1/go.mod h1:VqxAKyQz5p8GzgGsxWalCWYGxEqw6kvJo2IickMQiQk=
github.com/influxdb/influxdb v1.7.9 h1:KMBwwvyJyBppIwrg5t0662p+Yei/ucnIkqUl8txiQdQ=
github.com/influxdb/influxdb v1.7.9/go.mod h1:GpjLgHRqWhDGlPAg7+Rj6NAYuzPojBM8XLG5Ouvvq+Q=
github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=
github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=
github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM=
github.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVETg=
github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo=
github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=
github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=
github.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh687T8=
github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs=
github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=
github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk=
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/moby/api v1.52.0 h1:00BtlJY4MXkkt84WhUZPRqt5TvPbgig2FZvTbe3igYg=
github.com/moby/moby/api v1.52.0/go.mod h1:8mb+ReTlisw4pS6BRzCMts5M49W5M7bKt1cJy/YbAqc=
github.com/moby/moby/client v0.2.1 h1:1Grh1552mvv6i+sYOdY+xKKVTvzJegcVMhuXocyDz/k=
github.com/moby/moby/client v0.2.1/go.mod h1:O+/tw5d4a1Ha/ZA/tPxIZJapJRUS6LNZ1wiVRxYHyUE=
github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg=
github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4=
github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g=
github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.24.1 h1:KORJXNNTzJXzu4ScJWssJfJMnJ+2QJqhoQSRwNlze9E=
github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
github.com/opencontainers/cgroups v0.0.6 h1:tfZFWTIIGaUUFImTyuTg+Mr5x8XRiSdZESgEBW7UxuI=
github.com/opencontainers/cgroups v0.0.6/go.mod h1:oWVzJsKK0gG9SCRBfTpnn16WcGEqDI8PAcpMGbqWxcs=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
github.com/opencontainers/runc v1.4.0 h1:FG1Hw0GBYPsNki+mBz1QOrSzbwbAcerhrAD2r097QCc=
github.com/opencontainers/runc v1.4.0/go.mod h1:sch3Bh3c1NlyAkALoAUz5Br9ubMLZzFcxuovZbnkErk=
github.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg=
github.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4=
github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg=
github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/uber/jaeger-client-go v2.28.0+incompatible h1:G4QSBfvPKvg5ZM2j9MrJFdfI5iSljY/WnJqOGFao6HI=
github.com/uber/jaeger-client-go v2.28.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=
github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6 h1:YdYsPAZ2pC6Tow/nPZOPQ96O3hm/ToAkGsPLzedXERk=
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg=
go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E=
go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE=
go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs=
go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs=
go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY=
go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis=
go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4=
go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w=
go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA=
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/zap v1.16.0 h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM=
golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI=
golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/telemetry v0.0.0-20251215142616-e75fd47794af h1:JLNgZmN0uDGV+zlgKknvmvX9+atzn9b7S6M1L6J5tQs=
golang.org/x/telemetry v0.0.0-20251215142616-e75fd47794af/go.mod h1:ArQvPJS723nJQietgilmZA+shuB3CZxH1n2iXq9VSfs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
golang.
Download .txt
gitextract_t01xuxby/

├── .github/
│   └── workflows/
│       ├── publish-container.yml
│       ├── release-binaries.yml
│       ├── stale.yaml
│       └── test.yml
├── .gitignore
├── .golangci.yml
├── AUTHORS
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── Makefile
├── README.md
├── build/
│   ├── assets.sh
│   ├── boilerplate/
│   │   ├── boilerplate.go.txt
│   │   ├── boilerplate.py
│   │   ├── boilerplate.py.txt
│   │   └── boilerplate.sh.txt
│   ├── build.sh
│   ├── check_boilerplate.sh
│   ├── check_container.sh
│   ├── check_gotidy.sh
│   ├── config/
│   │   ├── crio.sh
│   │   ├── libipmctl.sh
│   │   ├── libpfm4.sh
│   │   └── plain.sh
│   ├── integration-crio.sh
│   ├── integration-in-docker-crio.sh
│   ├── integration-in-docker.sh
│   ├── integration.sh
│   ├── prow_e2e.sh
│   ├── release.sh
│   └── unit-in-container.sh
├── cache/
│   ├── cache.go
│   └── memory/
│       ├── memory.go
│       └── memory_test.go
├── client/
│   ├── README.md
│   ├── client.go
│   ├── client_test.go
│   ├── clientexample/
│   │   └── main.go
│   └── v2/
│       ├── README.md
│       ├── client.go
│       └── client_test.go
├── cmd/
│   ├── cadvisor.go
│   ├── cadvisor_test.go
│   ├── go.mod
│   ├── go.sum
│   ├── internal/
│   │   ├── api/
│   │   │   ├── handler.go
│   │   │   ├── versions.go
│   │   │   └── versions_test.go
│   │   ├── container/
│   │   │   └── install/
│   │   │       └── install.go
│   │   ├── healthz/
│   │   │   └── healthz.go
│   │   ├── http/
│   │   │   ├── handlers.go
│   │   │   └── mux/
│   │   │       └── mux.go
│   │   ├── pages/
│   │   │   ├── assets/
│   │   │   │   ├── html/
│   │   │   │   │   └── containers.html
│   │   │   │   ├── js/
│   │   │   │   │   ├── containers.js
│   │   │   │   │   └── loader.js
│   │   │   │   └── styles/
│   │   │   │       └── containers.css
│   │   │   ├── containers.go
│   │   │   ├── docker.go
│   │   │   ├── pages.go
│   │   │   ├── podman.go
│   │   │   ├── static/
│   │   │   │   ├── assets.go
│   │   │   │   └── static.go
│   │   │   └── templates.go
│   │   └── storage/
│   │       ├── bigquery/
│   │       │   ├── README.md
│   │       │   ├── bigquery.go
│   │       │   └── client/
│   │       │       ├── client.go
│   │       │       └── example/
│   │       │           └── example.go
│   │       ├── elasticsearch/
│   │       │   └── elasticsearch.go
│   │       ├── influxdb/
│   │       │   ├── influxdb.go
│   │       │   └── influxdb_test.go
│   │       ├── kafka/
│   │       │   └── kafka.go
│   │       ├── redis/
│   │       │   └── redis.go
│   │       ├── statsd/
│   │       │   ├── client/
│   │       │   │   └── client.go
│   │       │   └── statsd.go
│   │       ├── stdout/
│   │       │   └── stdout.go
│   │       └── test/
│   │           ├── mock.go
│   │           └── storagetests.go
│   └── storagedriver.go
├── collector/
│   ├── collector_manager.go
│   ├── collector_manager_test.go
│   ├── config/
│   │   ├── sample_config.json
│   │   ├── sample_config_endpoint_config.json
│   │   ├── sample_config_prometheus.json
│   │   ├── sample_config_prometheus_endpoint_config.json
│   │   └── sample_config_prometheus_filtered.json
│   ├── config.go
│   ├── fakes.go
│   ├── generic_collector.go
│   ├── generic_collector_test.go
│   ├── prometheus_collector.go
│   ├── prometheus_collector_test.go
│   ├── types.go
│   └── util.go
├── container/
│   ├── common/
│   │   ├── container_hints.go
│   │   ├── container_hints_test.go
│   │   ├── fsHandler.go
│   │   ├── helpers.go
│   │   ├── helpers_test.go
│   │   ├── inotify_watcher.go
│   │   └── test_resources/
│   │       ├── cgroup_v1/
│   │       │   └── test1/
│   │       │       ├── cpu/
│   │       │       │   ├── cpu.cfs_period_us
│   │       │       │   ├── cpu.cfs_quota_us
│   │       │       │   └── cpu.shares
│   │       │       ├── cpuset/
│   │       │       │   └── cpuset.cpus
│   │       │       ├── memory/
│   │       │       │   ├── memory.limit_in_bytes
│   │       │       │   ├── memory.memsw.limit_in_bytes
│   │       │       │   └── memory.soft_limit_in_bytes
│   │       │       └── pids/
│   │       │           └── pids.max
│   │       ├── cgroup_v2/
│   │       │   ├── test1/
│   │       │   │   ├── cpu.max
│   │       │   │   ├── cpu.weight
│   │       │   │   ├── cpuset.cpus.effective
│   │       │   │   ├── memory.max
│   │       │   │   ├── memory.min
│   │       │   │   ├── memory.swap.max
│   │       │   │   └── pids.max
│   │       │   └── test2/
│   │       │       ├── cpu.max
│   │       │       ├── cpu.weight
│   │       │       ├── memory.max
│   │       │       ├── memory.min
│   │       │       ├── memory.swap.max
│   │       │       └── pids.max
│   │       └── container_hints.json
│   ├── container.go
│   ├── containerd/
│   │   ├── client.go
│   │   ├── client_test.go
│   │   ├── containers/
│   │   │   └── containers.go
│   │   ├── factory.go
│   │   ├── factory_test.go
│   │   ├── grpc.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   ├── identifiers/
│   │   │   ├── validate.go
│   │   │   └── validate_test.go
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── namespaces/
│   │   │   ├── context.go
│   │   │   ├── context_test.go
│   │   │   ├── grpc.go
│   │   │   ├── store.go
│   │   │   ├── ttrpc.go
│   │   │   └── ttrpc_test.go
│   │   ├── pkg/
│   │   │   └── dialer/
│   │   │       ├── dialer.go
│   │   │       ├── dialer_unix.go
│   │   │       └── dialer_windows.go
│   │   └── plugin.go
│   ├── crio/
│   │   ├── client.go
│   │   ├── client_test.go
│   │   ├── factory.go
│   │   ├── factory_test.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   ├── docker/
│   │   ├── client.go
│   │   ├── docker.go
│   │   ├── docker_test.go
│   │   ├── factory.go
│   │   ├── factory_test.go
│   │   ├── fs.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── plugin.go
│   │   └── utils/
│   │       ├── docker.go
│   │       └── docker_test.go
│   ├── factory.go
│   ├── factory_test.go
│   ├── libcontainer/
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   ├── helpers.go
│   │   ├── helpers_test.go
│   │   └── testdata/
│   │       ├── clear_refs4
│   │       ├── clear_refs6
│   │       ├── clear_refs8
│   │       ├── docker-v1.8.3/
│   │       │   └── execdriver/
│   │       │       └── native/
│   │       │           └── 1/
│   │       │               └── state.json
│   │       ├── docker-v1.9.1/
│   │       │   └── execdriver/
│   │       │       └── native/
│   │       │           └── 1/
│   │       │               └── state.json
│   │       ├── limits
│   │       ├── procnetdev
│   │       ├── procnetudp
│   │       ├── smaps4
│   │       ├── smaps6
│   │       └── smaps8
│   ├── podman/
│   │   ├── client.go
│   │   ├── factory.go
│   │   ├── fs.go
│   │   ├── handler.go
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── plugin.go
│   │   ├── podman.go
│   │   └── podman_test.go
│   ├── raw/
│   │   ├── factory.go
│   │   ├── handler.go
│   │   ├── handler_test.go
│   │   └── watcher.go
│   ├── systemd/
│   │   ├── factory.go
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   └── testing/
│       └── mock_handler.go
├── deploy/
│   ├── Dockerfile
│   ├── Dockerfile.ppc64le
│   ├── build.sh
│   ├── canary/
│   │   └── Dockerfile
│   ├── entrypoint.sh
│   ├── healthcheck.sh
│   ├── kubernetes/
│   │   ├── README.md
│   │   ├── base/
│   │   │   ├── daemonset.yaml
│   │   │   ├── kustomization.yaml
│   │   │   ├── namespace.yaml
│   │   │   └── serviceaccount.yaml
│   │   └── overlays/
│   │       ├── examples/
│   │       │   ├── cadvisor-args.yaml
│   │       │   ├── critical-priority.yaml
│   │       │   ├── kustomization.yaml
│   │       │   └── stackdriver-sidecar.yaml
│   │       └── examples_perf/
│   │           ├── cadvisor-perf.yaml
│   │           ├── configmap.yaml
│   │           └── kustomization.yaml
│   └── snap/
│       └── snapcraft.yaml
├── devicemapper/
│   ├── dmsetup_client.go
│   ├── doc.go
│   ├── fake/
│   │   ├── dmsetup_client_fake.go
│   │   └── thin_ls_client_fake.go
│   ├── thin_ls_client.go
│   ├── thin_ls_client_test.go
│   ├── thin_pool_watcher.go
│   ├── thin_pool_watcher_test.go
│   └── util.go
├── doc.go
├── docs/
│   ├── api.md
│   ├── api_v2.md
│   ├── application_metrics.md
│   ├── clients.md
│   ├── deploy.md
│   ├── development/
│   │   ├── README.md
│   │   ├── build.md
│   │   ├── integration_testing.md
│   │   ├── issues.md
│   │   └── releasing.md
│   ├── roadmap.md
│   ├── running.md
│   ├── runtime_options.md
│   ├── storage/
│   │   ├── README.md
│   │   ├── elasticsearch.md
│   │   ├── influxdb.md
│   │   ├── kafka.md
│   │   ├── prometheus.md
│   │   └── statsd.md
│   └── web.md
├── events/
│   ├── handler.go
│   └── handler_test.go
├── fs/
│   ├── btrfs/
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── mount.go
│   │   └── plugin.go
│   ├── devicemapper/
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── plugin.go
│   │   ├── stats.go
│   │   └── stats_test.go
│   ├── fs.go
│   ├── fs_test.go
│   ├── nfs/
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   ├── overlay/
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   ├── plugin.go
│   ├── test_resources/
│   │   └── diskstats
│   ├── tmpfs/
│   │   ├── install/
│   │   │   └── install.go
│   │   └── plugin.go
│   ├── types.go
│   ├── vfs/
│   │   ├── install/
│   │   │   └── install.go
│   │   ├── plugin.go
│   │   └── stats.go
│   └── zfs/
│       ├── install/
│       │   └── install.go
│       ├── plugin.go
│       ├── stats.go
│       └── watcher.go
├── go.mod
├── go.sum
├── info/
│   ├── v1/
│   │   ├── container.go
│   │   ├── container_test.go
│   │   ├── docker.go
│   │   ├── machine.go
│   │   ├── machine_test.go
│   │   ├── metric.go
│   │   └── test/
│   │       └── datagen.go
│   └── v2/
│       ├── container.go
│       ├── conversion.go
│       ├── conversion_test.go
│       └── machine.go
├── integration/
│   ├── framework/
│   │   ├── framework.go
│   │   └── metrics.go
│   ├── runner/
│   │   ├── retrywhitelist.txt
│   │   ├── run.sh
│   │   └── runner.go
│   └── tests/
│       ├── TODO.md
│       ├── api/
│       │   ├── containerd_test.go
│       │   ├── docker_test.go
│       │   ├── event_test.go
│       │   ├── perf_test.go
│       │   └── test_utils.go
│       ├── common/
│       │   ├── attributes_test.go
│       │   ├── healthz_test.go
│       │   ├── machine_test.go
│       │   └── machinestats_test.go
│       ├── crio/
│       │   ├── crio_test.go
│       │   └── test_utils.go
│       ├── healthz/
│       │   ├── doc.go
│       │   ├── healthz_test.go
│       │   └── test_utils.go
│       └── metrics/
│           ├── containerd_metrics_test.go
│           ├── docker_metrics_test.go
│           └── prometheus_test.go
├── machine/
│   ├── info.go
│   ├── machine.go
│   ├── operatingsystem_unix.go
│   ├── operatingsystem_windows.go
│   ├── testdata/
│   │   ├── cpu9999/
│   │   │   ├── online
│   │   │   └── topology/
│   │   │       ├── core_id
│   │   │       └── physical_package_id
│   │   ├── cpuinfo
│   │   ├── cpuinfo_arm
│   │   ├── cpuinfo_lower_case
│   │   ├── cpuinfo_onesocket_many_NUMAs
│   │   ├── cpuinfo_rpi4
│   │   ├── cpuinfo_upper_case
│   │   ├── edac/
│   │   │   └── mc/
│   │   │       ├── mc0/
│   │   │       │   ├── dimm0/
│   │   │       │   │   ├── dimm_mem_type
│   │   │       │   │   └── size
│   │   │       │   ├── dimm1/
│   │   │       │   │   ├── dimm_mem_type
│   │   │       │   │   └── size
│   │   │       │   └── dimm_is_fake/
│   │   │       │       ├── dimm_mem_type
│   │   │       │       └── size
│   │   │       ├── mc1/
│   │   │       │   └── dimm0/
│   │   │       │       ├── dimm_mem_type
│   │   │       │       └── size
│   │   │       └── mc_fake/
│   │   │           ├── dimm0/
│   │   │           │   ├── dimm0/
│   │   │           │   │   ├── dimm_mem_type
│   │   │           │   │   └── size
│   │   │           │   ├── dimm1/
│   │   │           │   │   ├── dimm_mem_type
│   │   │           │   │   └── size
│   │   │           │   ├── dimm_mem_type
│   │   │           │   └── size
│   │   │           └── dimm1/
│   │   │               ├── dimm_mem_type
│   │   │               └── size
│   │   ├── sysfs_cpus/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       └── physical_package_id
│   │   │   └── cpu1/
│   │   │       └── .gitkeep
│   │   └── wrong_sysfs/
│   │       └── cpu0/
│   │           └── .gitkeep
│   ├── testdata_rpi4/
│   │   ├── cpu0/
│   │   │   ├── hotplug/
│   │   │   │   ├── fail
│   │   │   │   ├── state
│   │   │   │   └── target
│   │   │   └── topology/
│   │   │       ├── core_cpus
│   │   │       ├── core_cpus_list
│   │   │       ├── core_id
│   │   │       ├── core_siblings
│   │   │       ├── core_siblings_list
│   │   │       ├── die_cpus
│   │   │       ├── die_cpus_list
│   │   │       ├── die_id
│   │   │       ├── package_cpus
│   │   │       ├── package_cpus_list
│   │   │       ├── physical_package_id
│   │   │       ├── thread_siblings
│   │   │       └── thread_siblings_list
│   │   ├── cpu1/
│   │   │   ├── cpu_capacity
│   │   │   ├── hotplug/
│   │   │   │   ├── fail
│   │   │   │   ├── state
│   │   │   │   └── target
│   │   │   ├── topology/
│   │   │   │   ├── core_cpus
│   │   │   │   ├── core_cpus_list
│   │   │   │   ├── core_id
│   │   │   │   ├── core_siblings
│   │   │   │   ├── core_siblings_list
│   │   │   │   ├── die_cpus
│   │   │   │   ├── die_cpus_list
│   │   │   │   ├── die_id
│   │   │   │   ├── package_cpus
│   │   │   │   ├── package_cpus_list
│   │   │   │   ├── physical_package_id
│   │   │   │   ├── thread_siblings
│   │   │   │   └── thread_siblings_list
│   │   │   └── uevent
│   │   ├── cpu2/
│   │   │   ├── hotplug/
│   │   │   │   ├── fail
│   │   │   │   ├── state
│   │   │   │   └── target
│   │   │   └── topology/
│   │   │       ├── core_cpus
│   │   │       ├── core_cpus_list
│   │   │       ├── core_id
│   │   │       ├── core_siblings
│   │   │       ├── core_siblings_list
│   │   │       ├── die_cpus
│   │   │       ├── die_cpus_list
│   │   │       ├── die_id
│   │   │       ├── package_cpus
│   │   │       ├── package_cpus_list
│   │   │       ├── physical_package_id
│   │   │       ├── thread_siblings
│   │   │       └── thread_siblings_list
│   │   ├── cpu3/
│   │   │   ├── hotplug/
│   │   │   │   ├── fail
│   │   │   │   ├── state
│   │   │   │   └── target
│   │   │   └── topology/
│   │   │       ├── core_cpus
│   │   │       ├── core_cpus_list
│   │   │       ├── core_id
│   │   │       ├── core_siblings
│   │   │       ├── core_siblings_list
│   │   │       ├── die_cpus
│   │   │       ├── die_cpus_list
│   │   │       ├── die_id
│   │   │       ├── package_cpus
│   │   │       ├── package_cpus_list
│   │   │       ├── physical_package_id
│   │   │       ├── thread_siblings
│   │   │       └── thread_siblings_list
│   │   └── hotplug/
│   │       └── states
│   └── topology_test.go
├── manager/
│   ├── container.go
│   ├── container_test.go
│   ├── manager.go
│   ├── manager_bench_test.go
│   └── manager_test.go
├── metrics/
│   ├── metrics.go
│   ├── prometheus.go
│   ├── prometheus_fake.go
│   ├── prometheus_machine.go
│   ├── prometheus_machine_test.go
│   ├── prometheus_test.go
│   └── testdata/
│       ├── prometheus_machine_metrics
│       ├── prometheus_machine_metrics_failure
│       ├── prometheus_metrics
│       ├── prometheus_metrics_failure
│       ├── prometheus_metrics_perf_aggregated
│       └── prometheus_metrics_whitelist_filtered
├── nvm/
│   ├── machine_libipmctl.go
│   └── machine_no_libipmctl.go
├── perf/
│   ├── collector_libpfm.go
│   ├── collector_libpfm_test.go
│   ├── collector_no_libpfm.go
│   ├── config.go
│   ├── config_test.go
│   ├── manager_libpfm.go
│   ├── manager_libpfm_test.go
│   ├── manager_no_libpfm.go
│   ├── testing/
│   │   ├── perf-no-events.json
│   │   ├── perf-non-hardware.json
│   │   ├── perf.json
│   │   └── this-is-some-random.json
│   ├── types_libpfm.go
│   ├── uncore_libpfm.go
│   └── uncore_libpfm_test.go
├── resctrl/
│   ├── factory.go
│   └── intel/
│       ├── collector.go
│       ├── collector_test.go
│       ├── install/
│       │   └── install.go
│       ├── manager.go
│       ├── manager_test.go
│       ├── testing/
│       │   ├── tasks_empty
│       │   ├── tasks_invalid
│       │   ├── tasks_one
│       │   └── tasks_two
│       ├── utils.go
│       └── utils_test.go
├── stats/
│   ├── noop.go
│   └── types.go
├── storage/
│   ├── common_flags.go
│   └── storage.go
├── summary/
│   ├── buffer.go
│   ├── buffer_test.go
│   ├── percentiles.go
│   ├── percentiles_test.go
│   └── summary.go
├── test.htdigest
├── test.htpasswd
├── utils/
│   ├── cloudinfo/
│   │   ├── aws/
│   │   │   └── aws.go
│   │   ├── azure/
│   │   │   └── azure.go
│   │   ├── cloudinfo.go
│   │   └── gce/
│   │       └── gce.go
│   ├── container/
│   │   └── container.go
│   ├── cpuload/
│   │   ├── cpuload.go
│   │   ├── cpuload_unsupported.go
│   │   └── netlink/
│   │       ├── conn.go
│   │       ├── example/
│   │       │   └── example.go
│   │       ├── netlink.go
│   │       └── reader.go
│   ├── oomparser/
│   │   ├── oomexample/
│   │   │   └── main.go
│   │   ├── oomparser.go
│   │   └── oomparser_test.go
│   ├── path.go
│   ├── sysfs/
│   │   ├── fakesysfs/
│   │   │   └── fake.go
│   │   ├── sysfs.go
│   │   ├── sysfs_notx86.go
│   │   ├── sysfs_test.go
│   │   ├── sysfs_x86.go
│   │   ├── testdata/
│   │   │   ├── edac/
│   │   │   │   └── mc/
│   │   │   │       ├── mc0/
│   │   │   │       │   ├── dimm0/
│   │   │   │       │   │   ├── dimm_mem_type
│   │   │   │       │   │   └── size
│   │   │   │       │   ├── dimm1/
│   │   │   │       │   │   ├── dimm_mem_type
│   │   │   │       │   │   └── size
│   │   │   │       │   └── dimm_is_fake/
│   │   │   │       │       ├── dimm_mem_type
│   │   │   │       │       └── size
│   │   │   │       ├── mc1/
│   │   │   │       │   └── dimm0/
│   │   │   │       │       ├── dimm_mem_type
│   │   │   │       │       └── size
│   │   │   │       └── mc_fake/
│   │   │   │           ├── dimm0/
│   │   │   │           │   ├── dimm0/
│   │   │   │           │   │   ├── dimm_mem_type
│   │   │   │           │   │   └── size
│   │   │   │           │   ├── dimm1/
│   │   │   │           │   │   ├── dimm_mem_type
│   │   │   │           │   │   └── size
│   │   │   │           │   ├── dimm_mem_type
│   │   │   │           │   └── size
│   │   │   │           └── dimm1/
│   │   │   │               ├── dimm_mem_type
│   │   │   │               └── size
│   │   │   ├── missing_online/
│   │   │   │   └── node0/
│   │   │   │       ├── cpu0/
│   │   │   │       │   └── .gitkeep
│   │   │   │       └── cpu33/
│   │   │   │           └── .gitkeep
│   │   │   ├── node0/
│   │   │   │   ├── cpu0/
│   │   │   │   │   └── topology/
│   │   │   │   │       └── core_id
│   │   │   │   ├── cpu1/
│   │   │   │   │   └── topology/
│   │   │   │   │       └── .gitkeep
│   │   │   │   ├── distance
│   │   │   │   ├── hugepages/
│   │   │   │   │   ├── hugepages-1048576kB/
│   │   │   │   │   │   └── nr_hugepages
│   │   │   │   │   └── hugepages-2048kB/
│   │   │   │   │       └── nr_hugepages
│   │   │   │   └── meminfo
│   │   │   └── node1/
│   │   │       └── .gitkeep
│   │   ├── testdata_epyc7402/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu10/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu11/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu12/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu13/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu14/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu15/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu16/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu17/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu18/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu19/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu20/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu21/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu22/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu23/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu24/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu25/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu26/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu27/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu28/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu29/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu30/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu31/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu32/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu33/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu34/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu35/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu36/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu37/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu38/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu39/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu4/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu40/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu41/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu42/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu43/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu44/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu45/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu46/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu47/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu5/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu6/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu7/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu8/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu9/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   ├── testdata_epyc7402_nohyperthreading/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu10/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu11/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu12/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu13/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu14/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu15/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu16/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu17/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu18/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu19/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu20/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu21/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu22/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu23/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu4/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu5/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu6/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu7/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu8/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu9/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   ├── testdata_graviton2/
│   │   │   ├── cpu0/
│   │   │   │   ├── online
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   ├── online
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── online
│   │   │   ├── cpu3/
│   │   │   │   ├── online
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   ├── testdata_rpi4/
│   │   │   ├── cpu0/
│   │   │   │   ├── hotplug/
│   │   │   │   │   └── state
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   ├── hotplug/
│   │   │   │   │   └── state
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   ├── hotplug/
│   │   │   │   │   └── state
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   ├── hotplug/
│   │   │   │   │   └── state
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── hotplug/
│   │   │       └── states
│   │   ├── testdata_single_socket_many_NUMAs/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu10/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu11/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu12/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu13/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu14/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu15/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu16/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu17/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu18/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu19/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu20/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu21/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu22/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu23/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu24/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu25/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu26/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu27/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu28/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu29/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu30/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu31/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu4/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu5/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu6/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu7/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu8/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu9/
│   │   │   │   └── topology/
│   │   │   │       ├── core_cpus
│   │   │   │       ├── core_cpus_list
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── die_cpus
│   │   │   │       ├── die_cpus_list
│   │   │   │       ├── die_id
│   │   │   │       ├── package_cpus
│   │   │   │       ├── package_cpus_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   ├── testdata_xeon4214_2socket/
│   │   │   ├── cpu0/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu1/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu10/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu11/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu12/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu13/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu14/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu15/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu16/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu17/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu18/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu19/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu2/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu20/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu21/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu22/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu23/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu24/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu25/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu26/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu27/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu28/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu29/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu3/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu30/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu31/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu32/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu33/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu34/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu35/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu36/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu37/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu38/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu39/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu4/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu40/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu41/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu42/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu43/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu44/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu45/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu46/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu47/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu5/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu6/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu7/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu8/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   ├── cpu9/
│   │   │   │   └── topology/
│   │   │   │       ├── core_id
│   │   │   │       ├── core_siblings
│   │   │   │       ├── core_siblings_list
│   │   │   │       ├── physical_package_id
│   │   │   │       ├── thread_siblings
│   │   │   │       └── thread_siblings_list
│   │   │   └── online
│   │   └── testdata_xeon5218_nohyperthread_2socket_nohotplug/
│   │       ├── cpu0/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu1/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu10/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu11/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu12/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu13/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu14/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu15/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu16/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu17/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu18/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu19/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu2/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu20/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu21/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu22/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu23/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu24/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu25/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu26/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu27/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu28/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu29/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu3/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu30/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu31/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu4/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu5/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu6/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu7/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       ├── cpu8/
│   │       │   └── topology/
│   │       │       ├── core_cpus
│   │       │       ├── core_cpus_list
│   │       │       ├── core_id
│   │       │       ├── core_siblings
│   │       │       ├── core_siblings_list
│   │       │       ├── die_cpus
│   │       │       ├── die_cpus_list
│   │       │       ├── die_id
│   │       │       ├── package_cpus
│   │       │       ├── package_cpus_list
│   │       │       ├── physical_package_id
│   │       │       ├── thread_siblings
│   │       │       └── thread_siblings_list
│   │       └── cpu9/
│   │           └── topology/
│   │               ├── core_cpus
│   │               ├── core_cpus_list
│   │               ├── core_id
│   │               ├── core_siblings
│   │               ├── core_siblings_list
│   │               ├── die_cpus
│   │               ├── die_cpus_list
│   │               ├── die_id
│   │               ├── package_cpus
│   │               ├── package_cpus_list
│   │               ├── physical_package_id
│   │               ├── thread_siblings
│   │               └── thread_siblings_list
│   ├── sysinfo/
│   │   ├── sysinfo.go
│   │   └── sysinfo_test.go
│   ├── timed_store.go
│   ├── timed_store_test.go
│   └── utils.go
├── validate/
│   ├── validate.go
│   └── validate_test.go
├── version/
│   └── version.go
├── watcher/
│   └── watcher.go
└── zfs/
    └── watcher.go
Download .txt
Showing preview only (252K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2744 symbols across 256 files)

FILE: build/boilerplate/boilerplate.py
  function get_refs (line 34) | def get_refs():
  function file_passes (line 46) | def file_passes(filename, refs, regexs):
  function file_extension (line 95) | def file_extension(filename):
  function normalize_files (line 99) | def normalize_files(files):
  function get_files (line 110) | def get_files(extensions):
  function get_regexs (line 136) | def get_regexs():
  function main (line 148) | def main():

FILE: cache/cache.go
  type Cache (line 19) | type Cache interface

FILE: cache/memory/memory.go
  type containerCacheMap (line 35) | type containerCacheMap struct
    method Load (line 40) | func (c *containerCacheMap) Load(name string) (*containerCache, bool) {
    method Store (line 49) | func (c *containerCacheMap) Store(name string, cache *containerCache) {
    method LoadOrStore (line 54) | func (c *containerCacheMap) LoadOrStore(name string, cache *containerC...
    method Delete (line 60) | func (c *containerCacheMap) Delete(name string) {
  type containerCache (line 66) | type containerCache struct
    method AddStats (line 73) | func (c *containerCache) AddStats(stats *info.ContainerStats) error {
    method RecentStats (line 82) | func (c *containerCache) RecentStats(start, end time.Time, maxStats in...
  function newContainerStore (line 93) | func newContainerStore(ref info.ContainerReference, maxAge time.Duration...
  type InMemoryCache (line 101) | type InMemoryCache struct
    method AddStats (line 107) | func (c *InMemoryCache) AddStats(cInfo *info.ContainerInfo, stats *inf...
    method RecentStats (line 126) | func (c *InMemoryCache) RecentStats(name string, start, end time.Time,...
    method Close (line 134) | func (c *InMemoryCache) Close() error {
    method RemoveContainer (line 139) | func (c *InMemoryCache) RemoveContainer(containerName string) error {
  function New (line 144) | func New(

FILE: cache/memory/memory_test.go
  constant containerName (line 27) | containerName = "/container"
  function makeStat (line 37) | func makeStat(i int) *info.ContainerStats {
  function getRecentStats (line 46) | func getRecentStats(t *testing.T, memoryCache *InMemoryCache, numStats i...
  function TestAddStats (line 52) | func TestAddStats(t *testing.T) {
  function TestRecentStatsNoRecentStats (line 69) | func TestRecentStatsNoRecentStats(t *testing.T) {
  function makeWithStats (line 77) | func makeWithStats(t *testing.T, n int) *InMemoryCache {
  function TestRecentStatsGetZeroStats (line 86) | func TestRecentStatsGetZeroStats(t *testing.T) {
  function TestRecentStatsGetSomeStats (line 92) | func TestRecentStatsGetSomeStats(t *testing.T) {
  function TestRecentStatsGetAllStats (line 98) | func TestRecentStatsGetAllStats(t *testing.T) {

FILE: client/client.go
  type Client (line 38) | type Client struct
    method EventStaticInfo (line 60) | func (c *Client) EventStaticInfo(name string) (einfo []*v1.Event, err ...
    method EventStreamingInfo (line 72) | func (c *Client) EventStreamingInfo(name string, einfo chan *v1.Event)...
    method MachineInfo (line 83) | func (c *Client) MachineInfo() (minfo *v1.MachineInfo, err error) {
    method ContainerInfo (line 95) | func (c *Client) ContainerInfo(name string, query *v1.ContainerInfoReq...
    method SubcontainersInfo (line 106) | func (c *Client) SubcontainersInfo(name string, query *v1.ContainerInf...
    method DockerContainer (line 119) | func (c *Client) DockerContainer(name string, query *v1.ContainerInfoR...
    method AllDockerContainers (line 136) | func (c *Client) AllDockerContainers(query *v1.ContainerInfoRequest) (...
    method machineInfoURL (line 149) | func (c *Client) machineInfoURL() string {
    method containerInfoURL (line 153) | func (c *Client) containerInfoURL(name string) string {
    method subcontainersInfoURL (line 157) | func (c *Client) subcontainersInfoURL(name string) string {
    method dockerInfoURL (line 161) | func (c *Client) dockerInfoURL(name string) string {
    method eventsInfoURL (line 165) | func (c *Client) eventsInfoURL(name string) string {
    method httpGetJSONData (line 169) | func (c *Client) httpGetJSONData(data, postData interface{}, url, info...
    method getEventStreamingData (line 204) | func (c *Client) getEventStreamingData(url string, einfo chan *v1.Even...
  function NewClient (line 44) | func NewClient(url string) (*Client, error) {
  function newClient (line 48) | func newClient(url string, client *http.Client) (*Client, error) {

FILE: client/client_test.go
  function cadvisorTestClient (line 34) | func cadvisorTestClient(path string, expectedPostObj *info.ContainerInfo...
  function TestGetMachineinfo (line 67) | func TestGetMachineinfo(t *testing.T) {
  function TestGetContainerInfo (line 96) | func TestGetContainerInfo(t *testing.T) {
  function TestRequestFails (line 118) | func TestRequestFails(t *testing.T) {
  function TestGetSubcontainersInfo (line 141) | func TestGetSubcontainersInfo(t *testing.T) {

FILE: client/clientexample/main.go
  function staticClientExample (line 26) | func staticClientExample() {
  function streamingClientExample (line 42) | func streamingClientExample(url string) {
  function main (line 62) | func main() {

FILE: client/v2/client.go
  type Client (line 34) | type Client struct
    method MachineInfo (line 52) | func (c *Client) MachineInfo() (minfo *v1.MachineInfo, err error) {
    method MachineStats (line 65) | func (c *Client) MachineStats() ([]v2.MachineStats, error) {
    method VersionInfo (line 73) | func (c *Client) VersionInfo() (version string, err error) {
    method Attributes (line 80) | func (c *Client) Attributes() (attr *v2.Attributes, err error) {
    method Stats (line 91) | func (c *Client) Stats(name string, request *v2.RequestOptions) (map[s...
    method machineInfoURL (line 110) | func (c *Client) machineInfoURL() string {
    method machineStatsURL (line 114) | func (c *Client) machineStatsURL() string {
    method versionInfoURL (line 118) | func (c *Client) versionInfoURL() string {
    method attributesURL (line 122) | func (c *Client) attributesURL() string {
    method statsURL (line 126) | func (c *Client) statsURL(name string) string {
    method httpGetResponse (line 130) | func (c *Client) httpGetResponse(postData interface{}, urlPath, infoNa...
    method httpGetString (line 161) | func (c *Client) httpGetString(url, infoName string) (string, error) {
    method httpGetJSONData (line 169) | func (c *Client) httpGetJSONData(data, postData interface{}, url, info...
  function NewClient (line 39) | func NewClient(url string) (*Client, error) {

FILE: client/v2/client_test.go
  function cadvisorTestClient (line 33) | func cadvisorTestClient(path string, expectedPostObj *v1.ContainerInfoRe...
  function TestGetMachineInfo (line 68) | func TestGetMachineInfo(t *testing.T) {
  function TestGetVersionv1 (line 97) | func TestGetVersionv1(t *testing.T) {
  function TestGetAttributes (line 115) | func TestGetAttributes(t *testing.T) {
  function TestMachineStats (line 148) | func TestMachineStats(t *testing.T) {
  function TestRequestFails (line 183) | func TestRequestFails(t *testing.T) {

FILE: cmd/cadvisor.go
  function init (line 102) | func init() {
  function main (line 108) | func main() {
  function setMaxProcs (line 188) | func setMaxProcs() {
  function installSignalHandler (line 206) | func installSignalHandler(containerManager manager.Manager) {
  function createCollectorHTTPClient (line 221) | func createCollectorHTTPClient(collectorCert, collectorKey string) http....

FILE: cmd/cadvisor_test.go
  function TestTcpMetricsAreDisabledByDefault (line 26) | func TestTcpMetricsAreDisabledByDefault(t *testing.T) {
  function TestAdvancedTcpMetricsAreDisabledByDefault (line 32) | func TestAdvancedTcpMetricsAreDisabledByDefault(t *testing.T) {
  function TestUdpMetricsAreDisabledByDefault (line 38) | func TestUdpMetricsAreDisabledByDefault(t *testing.T) {
  function TestReferencedMemoryMetricsIsDisabledByDefault (line 44) | func TestReferencedMemoryMetricsIsDisabledByDefault(t *testing.T) {
  function TestCPUTopologyMetricsAreDisabledByDefault (line 50) | func TestCPUTopologyMetricsAreDisabledByDefault(t *testing.T) {
  function TestMemoryNumaMetricsAreDisabledByDefault (line 56) | func TestMemoryNumaMetricsAreDisabledByDefault(t *testing.T) {
  function TestEnableAndIgnoreMetrics (line 62) | func TestEnableAndIgnoreMetrics(t *testing.T) {
  function TestToIncludedMetrics (line 84) | func TestToIncludedMetrics(t *testing.T) {

FILE: cmd/internal/api/handler.go
  constant apiResource (line 40) | apiResource = "/api/"
  function RegisterHandlers (line 43) | func RegisterHandlers(mux httpmux.Mux, m manager.Manager) error {
  constant apiVersion (line 63) | apiVersion = iota + 1
  constant apiRequestType (line 64) | apiRequestType
  constant apiRequestArgs (line 65) | apiRequestArgs
  function handleRequest (line 68) | func handleRequest(supportedAPIVersions map[string]ApiVersion, m manager...
  function writeResult (line 125) | func writeResult(res interface{}, w http.ResponseWriter) error {
  function streamResults (line 137) | func streamResults(eventChannel *events.EventChannel, w http.ResponseWri...
  function getContainerInfoRequest (line 163) | func getContainerInfoRequest(body io.ReadCloser) (*info.ContainerInfoReq...
  function getEventRequest (line 181) | func getEventRequest(r *http.Request) (*events.Request, bool, error) {
  function getContainerName (line 244) | func getContainerName(request []string) string {

FILE: cmd/internal/api/versions.go
  constant containersAPI (line 32) | containersAPI    = "containers"
  constant subcontainersAPI (line 33) | subcontainersAPI = "subcontainers"
  constant machineAPI (line 34) | machineAPI       = "machine"
  constant machineStatsAPI (line 35) | machineStatsAPI  = "machinestats"
  constant dockerAPI (line 36) | dockerAPI        = "docker"
  constant summaryAPI (line 37) | summaryAPI       = "summary"
  constant statsAPI (line 38) | statsAPI         = "stats"
  constant specAPI (line 39) | specAPI          = "spec"
  constant eventsAPI (line 40) | eventsAPI        = "events"
  constant storageAPI (line 41) | storageAPI       = "storage"
  constant attributesAPI (line 42) | attributesAPI    = "attributes"
  constant versionAPI (line 43) | versionAPI       = "version"
  constant psAPI (line 44) | psAPI            = "ps"
  constant customMetricsAPI (line 45) | customMetricsAPI = "appmetrics"
  type ApiVersion (line 49) | type ApiVersion interface
  function getAPIVersions (line 61) | func getAPIVersions() []ApiVersion {
  type version1_0 (line 75) | type version1_0 struct
    method Version (line 78) | func (api *version1_0) Version() string {
    method SupportedRequestTypes (line 82) | func (api *version1_0) SupportedRequestTypes() []string {
    method HandleRequest (line 86) | func (api *version1_0) HandleRequest(requestType string, request []str...
  type version1_1 (line 130) | type version1_1 struct
    method Version (line 141) | func (api *version1_1) Version() string {
    method SupportedRequestTypes (line 145) | func (api *version1_1) SupportedRequestTypes() []string {
    method HandleRequest (line 149) | func (api *version1_1) HandleRequest(requestType string, request []str...
  function newVersion1_1 (line 135) | func newVersion1_1(v *version1_0) *version1_1 {
  type version1_2 (line 180) | type version1_2 struct
    method Version (line 191) | func (api *version1_2) Version() string {
    method SupportedRequestTypes (line 195) | func (api *version1_2) SupportedRequestTypes() []string {
    method HandleRequest (line 199) | func (api *version1_2) HandleRequest(requestType string, request []str...
  function newVersion1_2 (line 185) | func newVersion1_2(v *version1_1) *version1_2 {
  type version1_3 (line 249) | type version1_3 struct
    method Version (line 260) | func (api *version1_3) Version() string {
    method SupportedRequestTypes (line 264) | func (api *version1_3) SupportedRequestTypes() []string {
    method HandleRequest (line 268) | func (api *version1_3) HandleRequest(requestType string, request []str...
  function newVersion1_3 (line 254) | func newVersion1_3(v *version1_2) *version1_3 {
  function handleEventRequest (line 277) | func handleEventRequest(request []string, m manager.Manager, w http.Resp...
  type version2_0 (line 301) | type version2_0 struct
    method Version (line 308) | func (api *version2_0) Version() string {
    method SupportedRequestTypes (line 312) | func (api *version2_0) SupportedRequestTypes() []string {
    method HandleRequest (line 316) | func (api *version2_0) HandleRequest(requestType string, request []str...
  function newVersion2_0 (line 304) | func newVersion2_0() *version2_0 {
  type version2_1 (line 466) | type version2_1 struct
    method Version (line 476) | func (api *version2_1) Version() string {
    method SupportedRequestTypes (line 480) | func (api *version2_1) SupportedRequestTypes() []string {
    method HandleRequest (line 484) | func (api *version2_1) HandleRequest(requestType string, request []str...
  function newVersion2_1 (line 470) | func newVersion2_1(v *version2_0) *version2_1 {
  function GetRequestOptions (line 530) | func GetRequestOptions(r *http.Request) (v2.RequestOptions, error) {

FILE: cmd/internal/api/versions_test.go
  function makeHTTPRequest (line 30) | func makeHTTPRequest(requestURL string, t *testing.T) *http.Request {
  function TestGetEventRequestBasicRequest (line 37) | func TestGetEventRequestBasicRequest(t *testing.T) {
  function TestGetEventEmptyRequest (line 54) | func TestGetEventEmptyRequest(t *testing.T) {
  function TestGetEventRequestDoubleArgument (line 67) | func TestGetEventRequestDoubleArgument(t *testing.T) {

FILE: cmd/internal/healthz/healthz.go
  function handleHealthz (line 23) | func handleHealthz(w http.ResponseWriter, r *http.Request) {
  function RegisterHandler (line 29) | func RegisterHandler(mux httpmux.Mux) error {

FILE: cmd/internal/http/handlers.go
  function RegisterHandlers (line 40) | func RegisterHandlers(mux httpmux.Mux, containerManager manager.Manager,...
  function RegisterPrometheusHandler (line 99) | func RegisterPrometheusHandler(mux httpmux.Mux, resourceManager manager....
  function staticHandlerNoAuth (line 125) | func staticHandlerNoAuth(w http.ResponseWriter, r *http.Request) {
  function staticHandler (line 129) | func staticHandler(w http.ResponseWriter, r *auth.AuthenticatedRequest) {

FILE: cmd/internal/http/mux/mux.go
  type Mux (line 22) | type Mux interface

FILE: cmd/internal/pages/assets/js/containers.js
  function humanize (line 17) | function humanize(num, size, units) {
  function humanizeIEC (line 26) | function humanizeIEC(num) {
  function humanizeMetric (line 32) | function humanizeMetric(num) {
  function drawTable (line 38) | function drawTable(
  function drawLineChart (line 68) | function drawLineChart(seriesTitles, data, elementId, unit) {
  function getInterval (line 137) | function getInterval(current, previous) {
  function hasResource (line 146) | function hasResource(stats, resource) {
  function hasResourceForAll (line 151) | function hasResourceForAll(containerInfos, resource) {
  function drawGauges (line 166) | function drawGauges(elementId, gauges) {
  function getMachineInfo (line 188) | function getMachineInfo(rootDir, callback) {
  function getProcessInfo (line 193) | function getProcessInfo(rootDir, containerName, callback) {
  function getStats (line 200) | function getStats(rootDir, containerName, callback) {
  function drawCpuTotalUsage (line 217) | function drawCpuTotalUsage(elementId, machineInfo, stats) {
  function drawCpuLoad (line 238) | function drawCpuLoad(elementId, machineInfo, stats) {
  function drawCpuPerCoreUsage (line 253) | function drawCpuPerCoreUsage(elementId, machineInfo, stats) {
  function drawCpuUsageBreakdown (line 286) | function drawCpuUsageBreakdown(elementId, machineInfo, containerInfo) {
  function getSubcontainerChartData (line 310) | function getSubcontainerChartData(subcontainerInfos, dataFn) {
  function drawCpuPerSubcontainerUsage (line 336) | function drawCpuPerSubcontainerUsage(elementId, subcontainerInfos) {
  function drawMemoryPerSubcontainerUsage (line 350) | function drawMemoryPerSubcontainerUsage(elementId, subcontainerInfos) {
  function drawOverallUsage (line 364) | function drawOverallUsage(elementId, machineInfo, containerInfo) {
  function drawMemoryUsage (line 420) | function drawMemoryUsage(elementId, machineInfo, containerInfo) {
  function getNetworkInterfaceIndex (line 460) | function getNetworkInterfaceIndex(interfaceName, interfaces) {
  function drawNetworkBytes (line 470) | function drawNetworkBytes(elementId, machineInfo, stats) {
  function drawNetworkErrors (line 511) | function drawNetworkErrors(elementId, machineInfo, stats) {
  function drawFileSystemUsage (line 552) | function drawFileSystemUsage(machineInfo, stats) {
  function drawImages (line 572) | function drawImages(images) {
  function drawProcesses (line 604) | function drawProcesses(isRoot, rootDir, processInfo) {
  function startFileSystemUsage (line 659) | function startFileSystemUsage(elementId, machineInfo, stats) {
  function stepExecute (line 701) | function stepExecute(steps) {
  function drawCharts (line 716) | function drawCharts(machineInfo, containerInfo, subcontainers) {
  function sliceByCpu (line 804) | function sliceByCpu(subcontainerInfos, count) {
  function sliceByMemory (line 820) | function sliceByMemory(subcontainerInfos, count) {
  function compareByName (line 835) | function compareByName(subA, subB) {
  function getSubcontainerAverages (line 846) | function getSubcontainerAverages(subcontainer) {
  function filterSubcontainers (line 860) | function filterSubcontainers(containerInfo, subcontainers) {
  function setNetwork (line 883) | function setNetwork(interfaceName) {
  function startNetwork (line 895) | function startNetwork(selectionElement, containerInfo) {
  function refreshStats (line 922) | function refreshStats() {
  function addAllLabels (line 945) | function addAllLabels(containerInfo, metricsInfo) {
  function getMetricIndex (line 978) | function getMetricIndex(metricName) {
  function setLabel (line 985) | function setLabel(metric, label) {
  function getSelectedLabel (line 1001) | function getSelectedLabel(metricName) {
  function startCustomMetrics (line 1007) | function startCustomMetrics(elementId, containerInfo) {
  function getCustomMetrics (line 1036) | function getCustomMetrics(rootDir, containerName, callback) {
  function drawCustomMetrics (line 1042) | function drawCustomMetrics(elementId, containerInfo, metricsInfo) {
  function startPage (line 1079) | function startPage(containerName, hasCpu, hasMemory, rootDir, isRoot) {

FILE: cmd/internal/pages/assets/js/loader.js
  function aa (line 6) | function aa(a){var b=0;return function(){return b<a.length?{done:!1,valu...
  function n (line 6) | function n(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbo...
  function ba (line 6) | function ba(a){if(!(a instanceof Array)){a=n(a);for(var b,c=[];!(b=a.nex...
  function ca (line 6) | function ca(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length...
  function ea (line 7) | function ea(a){a=["object"==typeof globalThis&&globalThis,a,"object"==ty...
  function q (line 8) | function q(a,b){if(b)a:{var c=fa;a=a.split(".");for(var d=0;d<a.length-1...
  function r (line 9) | function r(a,b,c){if(null==a)throw new TypeError("The 'this' value for S...
  function b (line 11) | function b(){return this.replace(/^[\s\xa0]+/,"")}
  function b (line 12) | function b(g){this.b=0;this.c=void 0;this.a=[];var h=this.g();try{g(h.re...
  function c (line 12) | function c(){this.a=null}
  function d (line 12) | function d(g){return g instanceof b?g:new b(function(h){h(g)})}
  function g (line 13) | function g(l){return function(p){k||(k=!0,l.call(h,p))}}
  function k (line 15) | function k(A,G){return"function"==typeof A?function(ua){try{l(A(ua))}cat...
  function k (line 15) | function k(){switch(l.b){case 1:g(l.c);break;case 2:h(l.c);break;default...
  function x (line 16) | function x(ua){return function(va){A[ua]=va;G--;0==G&&l(A)}}
  function b (line 18) | function b(c){c=Number(c);return Infinity===c||-Infinity===c?c:c|0}
  function b (line 19) | function b(e){if(this instanceof b)throw new TypeError("Symbol is not a ...
  function c (line 19) | function c(e,f){this.a=e;da(this,"description",{configurable:!0,writable...
  function ha (line 21) | function ha(a){a={next:a};a[Symbol.iterator]=function(){return this};ret...
  function ia (line 21) | function ia(a,b){a instanceof String&&(a+="");var c=0,d={next:function()...
  function t (line 25) | function t(a,b){return Object.prototype.hasOwnProperty.call(a,b)}
  function b (line 26) | function b(k){this.a=(h+=Math.random()+1).toString();if(k){k=n(k);for(va...
  function c (line 26) | function c(){}
  function d (line 26) | function d(k){var l=typeof k;return"object"===l&&null!==k||"function"===l}
  function e (line 26) | function e(k){if(!t(k,g)){var l=new c;da(k,g,{value:l})}}
  function f (line 26) | function f(k){var l=Object[k];l&&(Object[k]=function(p){if(p instanceof ...
  function b (line 29) | function b(){var h={};return h.s=h.next=h.head=h}
  function c (line 29) | function c(h,k){var l=h.a;return ha(function(){if(l){for(;l.head!=h.a;)l...
  function d (line 29) | function d(h,k){var l=k&&typeof k;"object"==l||"function"==l?f.has(k)?l=...
  function e (line 30) | function e(h){this.b={};this.a=b();this.size=0;if(h){h=n(h);for(var k;!(...
  function b (line 44) | function b(d){return{status:"fulfilled",value:d}}
  function c (line 44) | function c(d){return{status:"rejected",reason:d}}
  function b (line 46) | function b(){}
  function a (line 46) | function a(){function c(){}new c;Reflect.construct(c,[],function(){});re...
  function ra (line 48) | function ra(a,b){for(;a;){var c=Reflect.getOwnPropertyDescriptor(a,b);if...
  function b (line 51) | function b(c){this.a=new Map;if(c){c=n(c);for(var d;!(d=c.next()).done;)...
  function sa (line 56) | function sa(a,b){a=void 0!==a?String(a):" ";return 0<b&&a?a.repeat(Math....
  function b (line 56) | function b(){return this.replace(/[\s\xa0]+$/,"")}
  function b (line 58) | function b(c){this.a=new WeakMap;if(c){c=n(c);for(var d;!(d=c.next()).do...
  function xa (line 59) | function xa(a){return(a=a.querySelector&&a.querySelector("script[nonce]"...
  function v (line 59) | function v(a){a=a.split(".");for(var b=u,c=0;c<a.length;c++)if(b=b[a[c]]...
  function w (line 59) | function w(){}
  function ya (line 59) | function ya(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"ar...
  function y (line 59) | function y(a){return"function"==ya(a)}
  function za (line 59) | function za(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}
  function Aa (line 60) | function Aa(a,b,c){return a.call.apply(a.bind,arguments)}
  function Ba (line 60) | function Ba(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Arra...
  function z (line 60) | function z(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.t...
  function B (line 61) | function B(a,b){a=a.split(".");var c=u;a[0]in c||"undefined"==typeof c.e...
  function C (line 61) | function C(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;...
  function Ca (line 61) | function Ca(a){return a}
  function D (line 61) | function D(a){if(Error.captureStackTrace)Error.captureStackTrace(this,D)...
  function E (line 61) | function E(a,b){this.a=a===Da&&b||"";this.b=Ea}
  function Fa (line 61) | function Fa(a){return a instanceof E&&a.constructor===E&&a.b===Ea?a.a:"t...
  function F (line 61) | function F(a){return new E(Da,a)}
  function Ja (line 91) | function Ja(a){return Array.prototype.concat.apply([],arguments)}
  function Ka (line 91) | function Ka(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d...
  function La (line 92) | function La(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c],...
  function I (line 92) | function I(a,b){this.a=a===Na&&b||"";this.b=Oa}
  function Pa (line 92) | function Pa(a){return a instanceof I&&a.constructor===I&&a.b===Oa?a.a:"t...
  function Qa (line 93) | function Qa(a,b){var c=Fa(a);if(!Ra.test(c))throw Error("Invalid Trusted...
  function Va (line 94) | function Va(a,b,c){a=Qa(a,b);a=Ua.exec(Pa(a).toString());b=a[3]||"";retu...
  function Ta (line 94) | function Ta(a){if(void 0===Ma){var b=null;var c=u.trustedTypes;if(c&&c.c...
  function Wa (line 95) | function Wa(a,b,c){if(null==c)return b;if("string"===typeof c)return c?a...
  function Ya (line 95) | function Ya(a,b){return a<b?-1:a>b?1:0}
  function K (line 95) | function K(a){return-1!=J.indexOf(a)}
  function ab (line 95) | function ab(a,b){for(var c in a)b.call(void 0,a[c],c,a)}
  function cb (line 95) | function cb(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];...
  function db (line 95) | function db(a,b){a.src=Pa(b);(b=a.ownerDocument&&a.ownerDocument.default...
  function eb (line 95) | function eb(a){var b=fb;return Object.prototype.hasOwnProperty.call(b,11...
  function rb (line 97) | function rb(){return eb(function(){for(var a=0,b=Xa(String(qb)).split("....
  function sb (line 97) | function sb(a,b){ab(b,function(c,d){c&&"object"==typeof c&&c.O&&(c=c.M()...
  function ub (line 98) | function ub(a){var b=document;a=String(a);"application/xhtml+xml"===b.co...
  function vb (line 98) | function vb(a,b){this.c=a;this.g=b;this.b=0;this.a=null}
  function wb (line 98) | function wb(a,b){a.g(b);100>a.b&&(a.b++,b.next=a.a,a.a=b)}
  function xb (line 98) | function xb(a){u.setTimeout(function(){throw a;},0)}
  function zb (line 99) | function zb(){var a=u.MessageChannel;"undefined"===typeof a&&"undefined"...
  function Ab (line 100) | function Ab(){this.b=this.a=null}
  function Db (line 100) | function Db(){var a=Eb,b=null;a.a&&(b=a.a,a.a=a.a.next,a.a||(a.b=null),b...
  function Bb (line 100) | function Bb(){this.next=this.b=this.a=null}
  function Fb (line 100) | function Fb(a,b){Gb||Hb();Ib||(Gb(),Ib=!0);Eb.add(a,b)}
  function Hb (line 100) | function Hb(){if(u.Promise&&u.Promise.resolve){var a=u.Promise.resolve(v...
  function Jb (line 100) | function Jb(){for(var a;a=Db();){try{a.a.call(a.b)}catch(b){xb(b)}wb(Cb,...
  function Kb (line 100) | function Kb(a){if(!a)return!1;try{return!!a.$goog_Thenable}catch(b){retu...
  function L (line 100) | function L(a){this.a=0;this.j=void 0;this.g=this.b=this.c=null;this.h=th...
  function Lb (line 100) | function Lb(){this.next=this.c=this.b=this.g=this.a=null;this.h=!1}
  function Nb (line 100) | function Nb(a,b,c){var d=Mb.get();d.g=a;d.b=b;d.c=c;return d}
  function Pb (line 101) | function Pb(a,b){if(0==a.a)if(a.c){var c=a.c;if(c.b){for(var d=0,e=null,...
  function Sb (line 102) | function Sb(a,b){a.b||2!=a.a&&3!=a.a||Tb(a);a.g?a.g.next=b:a.b=b;a.g=b}
  function Ob (line 102) | function Ob(a,b,c,d){var e=Nb(null,null,null);e.a=new L(function(f,g){e....
  function M (line 103) | function M(a,b,c){if(0==a.a){a===c&&(b=3,c=new TypeError("Promise cannot...
  function Ub (line 104) | function Ub(a,b,c,d,e){function f(k){h||(h=!0,d.call(e,k))}function g(k)...
  function Tb (line 104) | function Tb(a){a.i||(a.i=!0,Fb(a.m,a))}
  function Qb (line 104) | function Qb(a){var b=null;a.b&&(b=a.b,a.b=b.next,b.next=null);a.b||(a.g=...
  function Rb (line 105) | function Rb(a,b,c,d){if(3==c&&b.b&&!b.h)for(;a&&a.h;a=a.c)a.h=!1;if(b.a)...
  function Wb (line 105) | function Wb(a,b,c){2==b?a.g.call(a.c,c):a.b&&a.b.call(a.c,c)}
  function Vb (line 105) | function Vb(a,b){a.h=!0;Fb(function(){a.h&&Xb.call(null,b)})}
  function N (line 105) | function N(a){D.call(this,a)}
  function O (line 110) | function O(a,b){this.h=[];this.F=a;this.H=b||null;this.g=this.a=!1;this....
  function R (line 110) | function R(a,b,c){a.a=!0;a.c=c;a.g=!b;Yb(a)}
  function Q (line 111) | function Q(a){if(a.a){if(!a.A)throw new Zb(a);a.A=!1}}
  function $b (line 111) | function $b(a,b,c,d){a.h.push([b,c,d]);a.a&&Yb(a);return a}
  function ac (line 111) | function ac(a){return Ia(a.h,function(b){return y(b[1])})}
  function Yb (line 112) | function Yb(a){if(a.i&&a.a&&ac(a)){var b=a.i,c=bc[b];c&&(u.clearTimeout(...
  function dc (line 113) | function dc(){var a=new O;Q(a);R(a,!0,null);return a}
  function Zb (line 113) | function Zb(){D.call(this)}
  function P (line 113) | function P(){D.call(this)}
  function cc (line 113) | function cc(a){this.a=u.setTimeout(z(this.c,this),0);this.b=a}
  function gc (line 113) | function gc(a,b){function c(){var e=a.shift();e=hc(e,b);a.length&&$b(e,c...
  function hc (line 114) | function hc(a,b){var c=b||{};b=c.document||document;var d=Pa(a).toString...
  function lc (line 115) | function lc(a){var b;return(b=(a||document).getElementsByTagName("HEAD")...
  function ic (line 115) | function ic(){if(this&&this.P){var a=this.P;a&&"SCRIPT"==a.tagName&&jc(a...
  function jc (line 115) | function jc(a,b,c){null!=c&&u.clearTimeout(c);a.onload=w;a.onerror=w;a.o...
  function kc (line 116) | function kc(a,b){var c="Jsloader error (code #"+a+")";b&&(c+=": "+b);D.c...
  function pc (line 116) | function pc(a){return Va(a.format,a.K,a.ea||{})}
  function nc (line 116) | function nc(a,b,c){c=c||{};a=Va(a,b,c);var d=mc(a,{timeout:3E4,attribute...
  function qc (line 118) | function qc(a,b){this.b={};this.a=[];this.c=0;var c=arguments.length;if(...
  function rc (line 119) | function rc(a){if(a.c!=a.a.length){for(var b=0,c=0;b<a.a.length;){var d=...
  function T (line 120) | function T(a,b){return Object.prototype.hasOwnProperty.call(a,b)}
  function tc (line 120) | function tc(a,b){if(a){a=a.split("&");for(var c=0;c<a.length;c++){var d=...
  function uc (line 120) | function uc(a){this.a=this.j=this.g="";this.m=null;this.h=this.b="";this...
  function vc (line 123) | function vc(a,b,c){a.g=c?zc(b,!0):b;a.g&&(a.g=a.g.replace(/:$/,""))}
  function wc (line 123) | function wc(a,b){if(b){b=Number(b);if(isNaN(b)||0>b)throw Error("Bad por...
  function xc (line 123) | function xc(a,b,c){b instanceof U?(a.c=b,Fc(a.c,a.i)):(c||(b=Ac(b,Gc)),a...
  function zc (line 124) | function zc(a,b){return a?b?decodeURI(a.replace(/%25/g,"%2525")):decodeU...
  function Ac (line 124) | function Ac(a,b,c){return"string"===typeof a?(a=encodeURI(a).replace(b,H...
  function Hc (line 124) | function Hc(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15)...
  function U (line 124) | function U(a,b){this.b=this.a=null;this.c=a||null;this.g=!!b}
  function V (line 125) | function V(a){a.a||(a.a=new qc,a.b=0,a.c&&tc(a.c,function(b,c){a.add(dec...
  function Ic (line 125) | function Ic(a,b){V(a);b=W(a,b);T(a.a.b,b)&&(a.c=null,a.b-=a.a.get(b).len...
  function Jc (line 125) | function Jc(a,b){V(a);b=W(a,b);return T(a.a.b,b)}
  function yc (line 128) | function yc(a){var b=new U;b.c=a.c;a.a&&(b.a=new qc(a.a),b.b=a.b);return b}
  function W (line 128) | function W(a,b){b=String(b);a.g&&(b=b.toLowerCase());return b}
  function Fc (line 128) | function Fc(a,b){b&&!a.g&&(V(a),a.c=null,a.a.forEach(function(c,d){var e...
  function Nc (line 128) | function Nc(){Y=X="";Lc=Z=Kc=null;v("google.load")||(B("google.load",Oc)...
  function Pc (line 129) | function Pc(a){a=new U(a.c.toString());var b=a.get("callback");"string"=...
  function Rc (line 130) | function Rc(a){var b=a,c,d=a.match(/^testing-/);d&&(b=b.replace(/^testin...
  function Sc (line 131) | function Sc(a){var b=H.f.I.ha[Mc].loader,c=Rc(a);return H.f.o.load(b,{ve...
  function Tc (line 132) | function Tc(a){"string"===typeof a&&(a=[a]);Array.isArray(a)&&0!==a.leng...
  function Uc (line 132) | function Uc(a){a=a||"";for(var b=a.replace(/-/g,"_").toLowerCase();"stri...
  function Vc (line 133) | function Vc(a){a=a||"";""!==X&&X!==a&&(console.warn(" Attempting to load...
  function Wc (line 133) | function Wc(a){a=a||"";""!==Y&&Y!==a&&(console.warn(" Attempting to load...
  function Xc (line 133) | function Xc(a){var b={},c;for(c in a)b[c]=a[c];return b}
  function Yc (line 134) | function Yc(a,b){b=Xc(b);b.domain=Mc;b.callback=Qc(b.callback);a=Vc(a);v...
  function ad (line 137) | function ad(a,b,c){console.warn("Loading Maps API with the jsapi loader ...
  function cd (line 138) | function cd(a,b,c){za(c)&&c.packages?(Array.isArray(c.packages)?c.packag...
  function ed (line 139) | function ed(a,b){var c;do{if(a===b[a])throw Error("Infinite loop in vers...
  function fd (line 140) | function fd(a,b,c){var d=H.f.V.$[a];if(d){b=ed(b,d.aliases);d=d.versions...
  function Qc (line 141) | function Qc(a){return function(){if("function"===typeof a)a();else if("s...
  function Oc (line 141) | function Oc(a){for(var b=[],c=0;c<arguments.length;++c)b[c]=arguments[c]...

FILE: cmd/internal/pages/containers.go
  constant ContainersPage (line 34) | ContainersPage = "/containers/"
  type ByteSize (line 37) | type ByteSize
    method Size (line 59) | func (b ByteSize) Size() string {
    method Unit (line 68) | func (b ByteSize) Unit() string {
  constant _ (line 40) | _ = iota
  constant KB (line 42) | KB ByteSize = 1 << (10 * iota)
  constant MB (line 44) | MB
  constant GB (line 46) | GB
  constant TB (line 48) | TB
  constant PB (line 50) | PB
  constant EB (line 52) | EB
  constant ZB (line 54) | ZB
  constant YB (line 56) | YB
  function printMask (line 98) | func printMask(mask string, numCores int) interface{} {
  function getActiveCores (line 111) | func getActiveCores(mask string) map[int]bool {
  function printCores (line 139) | func printCores(millicores *uint64) string {
  function printShares (line 144) | func printShares(shares *uint64) string {
  constant maxMemorySize (line 150) | maxMemorySize = uint64(1 << 62)
  function printSize (line 152) | func printSize(bytes uint64) string {
  function printUnit (line 159) | func printUnit(bytes uint64) string {
  function serveContainersPage (line 166) | func serveContainersPage(m manager.Manager, w http.ResponseWriter, u *ur...
  function getRootDir (line 249) | func getRootDir(containerName string) string {

FILE: cmd/internal/pages/docker.go
  constant DockerPage (line 35) | DockerPage = "/docker/"
  function toStatusKV (line 37) | func toStatusKV(status info.DockerStatus) ([]keyVal, []keyVal) {
  function serveDockerPage (line 57) | func serveDockerPage(m manager.Manager, w http.ResponseWriter, u *url.UR...

FILE: cmd/internal/pages/pages.go
  type link (line 34) | type link struct
  type keyVal (line 42) | type keyVal struct
  type pageData (line 47) | type pageData struct
  function init (line 69) | func init() {
  function containerHandlerNoAuth (line 78) | func containerHandlerNoAuth(containerManager manager.Manager) http.Handl...
  function containerHandler (line 84) | func containerHandler(containerManager manager.Manager) auth.Authenticat...
  function dockerHandlerNoAuth (line 90) | func dockerHandlerNoAuth(containerManager manager.Manager) http.HandlerF...
  function dockerHandler (line 96) | func dockerHandler(containerManager manager.Manager) auth.AuthenticatedH...
  function podmanHandlerNoAuth (line 102) | func podmanHandlerNoAuth(containerManager manager.Manager) http.HandlerF...
  function podmanHandler (line 108) | func podmanHandler(containerManager manager.Manager) auth.AuthenticatedH...
  function RegisterHandlersDigest (line 115) | func RegisterHandlersDigest(mux httpmux.Mux, containerManager manager.Ma...
  function RegisterHandlersBasic (line 143) | func RegisterHandlersBasic(mux httpmux.Mux, containerManager manager.Man...
  function getContainerDisplayName (line 167) | func getContainerDisplayName(cont info.ContainerReference) string {
  function escapeContainerName (line 197) | func escapeContainerName(containerName string) string {

FILE: cmd/internal/pages/podman.go
  constant PodmanPage (line 32) | PodmanPage = "/podman/"
  function servePodmanPage (line 34) | func servePodmanPage(m manager.Manager, w http.ResponseWriter, u *url.UR...

FILE: cmd/internal/pages/static/assets.go
  function bindataRead (line 41) | func bindataRead(data []byte, name string) ([]byte, error) {
  type asset (line 61) | type asset struct
  type bindataFileInfo (line 67) | type bindataFileInfo struct
    method Name (line 74) | func (fi bindataFileInfo) Name() string {
    method Size (line 77) | func (fi bindataFileInfo) Size() int64 {
    method Mode (line 80) | func (fi bindataFileInfo) Mode() os.FileMode {
    method ModTime (line 83) | func (fi bindataFileInfo) ModTime() time.Time {
    method IsDir (line 86) | func (fi bindataFileInfo) IsDir() bool {
    method Sys (line 89) | func (fi bindataFileInfo) Sys() interface{} {
  function cmdInternalPagesAssetsJsBootstrap400Beta2MinJsBytes (line 95) | func cmdInternalPagesAssetsJsBootstrap400Beta2MinJsBytes() ([]byte, erro...
  function cmdInternalPagesAssetsJsBootstrap400Beta2MinJs (line 102) | func cmdInternalPagesAssetsJsBootstrap400Beta2MinJs() (*asset, error) {
  function cmdInternalPagesAssetsJsContainersJsBytes (line 115) | func cmdInternalPagesAssetsJsContainersJsBytes() ([]byte, error) {
  function cmdInternalPagesAssetsJsContainersJs (line 122) | func cmdInternalPagesAssetsJsContainersJs() (*asset, error) {
  function cmdInternalPagesAssetsJsJquery351MinJsBytes (line 135) | func cmdInternalPagesAssetsJsJquery351MinJsBytes() ([]byte, error) {
  function cmdInternalPagesAssetsJsJquery351MinJs (line 142) | func cmdInternalPagesAssetsJsJquery351MinJs() (*asset, error) {
  function cmdInternalPagesAssetsJsLoaderJsBytes (line 155) | func cmdInternalPagesAssetsJsLoaderJsBytes() ([]byte, error) {
  function cmdInternalPagesAssetsJsLoaderJs (line 162) | func cmdInternalPagesAssetsJsLoaderJs() (*asset, error) {
  function cmdInternalPagesAssetsJsPopperMinJsBytes (line 175) | func cmdInternalPagesAssetsJsPopperMinJsBytes() ([]byte, error) {
  function cmdInternalPagesAssetsJsPopperMinJs (line 182) | func cmdInternalPagesAssetsJsPopperMinJs() (*asset, error) {
  function cmdInternalPagesAssetsStylesBootstrap400Beta2MinCssBytes (line 195) | func cmdInternalPagesAssetsStylesBootstrap400Beta2MinCssBytes() ([]byte,...
  function cmdInternalPagesAssetsStylesBootstrap400Beta2MinCss (line 202) | func cmdInternalPagesAssetsStylesBootstrap400Beta2MinCss() (*asset, erro...
  function cmdInternalPagesAssetsStylesBootstrapTheme311MinCssBytes (line 215) | func cmdInternalPagesAssetsStylesBootstrapTheme311MinCssBytes() ([]byte,...
  function cmdInternalPagesAssetsStylesBootstrapTheme311MinCss (line 222) | func cmdInternalPagesAssetsStylesBootstrapTheme311MinCss() (*asset, erro...
  function cmdInternalPagesAssetsStylesContainersCssBytes (line 235) | func cmdInternalPagesAssetsStylesContainersCssBytes() ([]byte, error) {
  function cmdInternalPagesAssetsStylesContainersCss (line 242) | func cmdInternalPagesAssetsStylesContainersCss() (*asset, error) {
  function Asset (line 256) | func Asset(name string) ([]byte, error) {
  function AssetString (line 269) | func AssetString(name string) (string, error) {
  function MustAsset (line 276) | func MustAsset(name string) []byte {
  function MustAssetString (line 287) | func MustAssetString(name string) string {
  function AssetInfo (line 294) | func AssetInfo(name string) (os.FileInfo, error) {
  function AssetDigest (line 308) | func AssetDigest(name string) ([sha256.Size]byte, error) {
  function Digests (line 321) | func Digests() (map[string][sha256.Size]byte, error) {
  function AssetNames (line 334) | func AssetNames() []string {
  constant AssetDebug (line 355) | AssetDebug = false
  function AssetDir (line 372) | func AssetDir(name string) ([]string, error) {
  type bintree (line 394) | type bintree struct
  function RestoreAsset (line 423) | func RestoreAsset(dir, name string) error {
  function RestoreAssets (line 444) | func RestoreAssets(dir, name string) error {
  function _filePath (line 460) | func _filePath(dir, name string) string {

FILE: cmd/internal/pages/static/static.go
  constant StaticResource (line 29) | StaticResource = "/static/"
  function HandleRequest (line 52) | func HandleRequest(w http.ResponseWriter, u *url.URL) {

FILE: cmd/internal/pages/templates.go
  function bindataRead (line 34) | func bindataRead(data []byte, name string) ([]byte, error) {
  type asset (line 54) | type asset struct
  type bindataFileInfo (line 60) | type bindataFileInfo struct
    method Name (line 67) | func (fi bindataFileInfo) Name() string {
    method Size (line 70) | func (fi bindataFileInfo) Size() int64 {
    method Mode (line 73) | func (fi bindataFileInfo) Mode() os.FileMode {
    method ModTime (line 76) | func (fi bindataFileInfo) ModTime() time.Time {
    method IsDir (line 79) | func (fi bindataFileInfo) IsDir() bool {
    method Sys (line 82) | func (fi bindataFileInfo) Sys() interface{} {
  function cmdInternalPagesAssetsHtmlContainersHtmlBytes (line 88) | func cmdInternalPagesAssetsHtmlContainersHtmlBytes() ([]byte, error) {
  function cmdInternalPagesAssetsHtmlContainersHtml (line 95) | func cmdInternalPagesAssetsHtmlContainersHtml() (*asset, error) {
  function Asset (line 109) | func Asset(name string) ([]byte, error) {
  function AssetString (line 122) | func AssetString(name string) (string, error) {
  function MustAsset (line 129) | func MustAsset(name string) []byte {
  function MustAssetString (line 140) | func MustAssetString(name string) string {
  function AssetInfo (line 147) | func AssetInfo(name string) (os.FileInfo, error) {
  function AssetDigest (line 161) | func AssetDigest(name string) ([sha256.Size]byte, error) {
  function Digests (line 174) | func Digests() (map[string][sha256.Size]byte, error) {
  function AssetNames (line 187) | func AssetNames() []string {
  constant AssetDebug (line 201) | AssetDebug = false
  function AssetDir (line 218) | func AssetDir(name string) ([]string, error) {
  type bintree (line 240) | type bintree struct
  function RestoreAsset (line 260) | func RestoreAsset(dir, name string) error {
  function RestoreAssets (line 281) | func RestoreAssets(dir, name string) error {
  function _filePath (line 297) | func _filePath(dir, name string) string {

FILE: cmd/internal/storage/bigquery/bigquery.go
  function init (line 27) | func init() {
  type bigqueryStorage (line 31) | type bigqueryStorage struct
    method GetSchema (line 94) | func (s *bigqueryStorage) GetSchema() *bigquery.TableSchema {
    method containerStatsToRows (line 209) | func (s *bigqueryStorage) containerStatsToRows(
    method containerFilesystemStatsToRows (line 272) | func (s *bigqueryStorage) containerFilesystemStatsToRows(
    method AddStats (line 286) | func (s *bigqueryStorage) AddStats(cInfo *info.ContainerInfo, stats *i...
    method Close (line 302) | func (s *bigqueryStorage) Close() error {
  constant typeTimestamp (line 38) | typeTimestamp string = "TIMESTAMP"
  constant typeString (line 39) | typeString    string = "STRING"
  constant typeInteger (line 40) | typeInteger   string = "INTEGER"
  constant colTimestamp (line 42) | colTimestamp          string = "timestamp"
  constant colMachineName (line 43) | colMachineName        string = "machine"
  constant colContainerName (line 44) | colContainerName      string = "container_name"
  constant colCPUCumulativeUsage (line 45) | colCPUCumulativeUsage string = "cpu_cumulative_usage"
  constant colCPUCumulativeUsageSystem (line 47) | colCPUCumulativeUsageSystem string = "cpu_cumulative_usage_system"
  constant colCPUCumulativeUsageUser (line 48) | colCPUCumulativeUsageUser   string = "cpu_cumulative_usage_user"
  constant colMemoryUsage (line 50) | colMemoryUsage string = "memory_usage"
  constant colMemoryWorkingSet (line 52) | colMemoryWorkingSet string = "memory_working_set"
  constant colMemoryTotalActiveFile (line 54) | colMemoryTotalActiveFile string = "memory_total_active_file"
  constant colMemoryTotalInactiveFile (line 56) | colMemoryTotalInactiveFile string = "memory_total_inactive_file"
  constant colMemoryContainerPgfault (line 58) | colMemoryContainerPgfault string = "memory_container_pgfault"
  constant colMemoryContainerPgmajfault (line 60) | colMemoryContainerPgmajfault string = "memory_container_pgmajfault"
  constant colMemoryHierarchicalPgfault (line 62) | colMemoryHierarchicalPgfault string = "memory_hierarchical_pgfault"
  constant colMemoryHierarchicalPgmajfault (line 64) | colMemoryHierarchicalPgmajfault string = "memory_hierarchical_pgmajfault"
  constant colRxBytes (line 66) | colRxBytes string = "rx_bytes"
  constant colRxErrors (line 68) | colRxErrors string = "rx_errors"
  constant colTxBytes (line 70) | colTxBytes string = "tx_bytes"
  constant colTxErrors (line 72) | colTxErrors string = "tx_errors"
  constant colFsDevice (line 74) | colFsDevice = "fs_device"
  constant colFsLimit (line 76) | colFsLimit = "fs_limit"
  constant colFsUsage (line 78) | colFsUsage = "fs_usage"
  function new (line 81) | func new() (storage.StorageDriver, error) {
  function newStorage (line 312) | func newStorage(machineName, datasetID, tableName string) (storage.Stora...

FILE: cmd/internal/storage/bigquery/client/client.go
  constant errAlreadyExists (line 41) | errAlreadyExists string = "Error 409: Already Exists"
  type Client (line 44) | type Client struct
    method Close (line 118) | func (c *Client) Close() error {
    method getService (line 125) | func (c *Client) getService() (*bigquery.Service, error) {
    method PrintDatasets (line 143) | func (c *Client) PrintDatasets() error {
    method CreateDataset (line 157) | func (c *Client) CreateDataset(datasetID string) error {
    method CreateTable (line 177) | func (c *Client) CreateTable(tableID string, schema *bigquery.TableSch...
    method InsertRow (line 202) | func (c *Client) InsertRow(rowData map[string]interface{}) error {
  function connect (line 52) | func connect() (*oauth2.Token, *bigquery.Service, error) {
  function NewClient (line 106) | func NewClient() (*Client, error) {

FILE: cmd/internal/storage/bigquery/client/example/example.go
  type container (line 27) | type container struct
  function main (line 35) | func main() {

FILE: cmd/internal/storage/elasticsearch/elasticsearch.go
  function init (line 30) | func init() {
  type elasticStorage (line 34) | type elasticStorage struct
    method containerStatsAndDefaultValues (line 70) | func (s *elasticStorage) containerStatsAndDefaultValues(
    method AddStats (line 88) | func (s *elasticStorage) AddStats(cInfo *info.ContainerInfo, stats *in...
    method Close (line 113) | func (s *elasticStorage) Close() error {
  type detailSpec (line 42) | type detailSpec struct
  function new (line 56) | func new() (storage.StorageDriver, error) {
  function newStorage (line 121) | func newStorage(

FILE: cmd/internal/storage/influxdb/influxdb.go
  function init (line 32) | func init() {
  type influxdbStorage (line 38) | type influxdbStorage struct
    method containerFilesystemStatsToPoints (line 142) | func (s *influxdbStorage) containerFilesystemStatsToPoints(
    method tagPoints (line 185) | func (s *influxdbStorage) tagPoints(cInfo *info.ContainerInfo, stats *...
    method containerStatsToPoints (line 206) | func (s *influxdbStorage) containerStatsToPoints(
    method memoryStatsToPoints (line 245) | func (s *influxdbStorage) memoryStatsToPoints(
    method hugetlbStatsToPoints (line 300) | func (s *influxdbStorage) hugetlbStatsToPoints(
    method perfStatsToPoints (line 331) | func (s *influxdbStorage) perfStatsToPoints(
    method resctrlStatsToPoints (line 352) | func (s *influxdbStorage) resctrlStatsToPoints(
    method OverrideReadyToFlush (line 386) | func (s *influxdbStorage) OverrideReadyToFlush(readyToFlush func() boo...
    method defaultReadyToFlush (line 390) | func (s *influxdbStorage) defaultReadyToFlush() bool {
    method AddStats (line 394) | func (s *influxdbStorage) AddStats(cInfo *info.ContainerInfo, stats *i...
    method Close (line 438) | func (s *influxdbStorage) Close() error {
  constant serCPUUsageTotal (line 53) | serCPUUsageTotal  string = "cpu_usage_total"
  constant serCPUUsageSystem (line 54) | serCPUUsageSystem string = "cpu_usage_system"
  constant serCPUUsageUser (line 55) | serCPUUsageUser   string = "cpu_usage_user"
  constant serCPUUsagePerCPU (line 56) | serCPUUsagePerCPU string = "cpu_usage_per_cpu"
  constant serLoadAverage (line 58) | serLoadAverage string = "load_average"
  constant serMemoryUsage (line 60) | serMemoryUsage string = "memory_usage"
  constant serMemoryMaxUsage (line 62) | serMemoryMaxUsage string = "memory_max_usage"
  constant serMemoryCache (line 64) | serMemoryCache string = "memory_cache"
  constant serMemoryRss (line 66) | serMemoryRss string = "memory_rss"
  constant serMemorySwap (line 68) | serMemorySwap string = "memory_swap"
  constant serMemoryMappedFile (line 70) | serMemoryMappedFile string = "memory_mapped_file"
  constant serMemoryWorkingSet (line 72) | serMemoryWorkingSet string = "memory_working_set"
  constant serMemoryTotalActiveFile (line 74) | serMemoryTotalActiveFile string = "memory_total_active_file"
  constant serMemoryTotalInactiveFile (line 76) | serMemoryTotalInactiveFile string = "memory_total_inactive_file"
  constant serMemoryFailcnt (line 78) | serMemoryFailcnt string = "memory_failcnt"
  constant serMemoryFailure (line 80) | serMemoryFailure string = "memory_failure"
  constant serRxBytes (line 82) | serRxBytes string = "rx_bytes"
  constant serRxErrors (line 84) | serRxErrors string = "rx_errors"
  constant serTxBytes (line 86) | serTxBytes string = "tx_bytes"
  constant serTxErrors (line 88) | serTxErrors string = "tx_errors"
  constant serFsLimit (line 90) | serFsLimit string = "fs_limit"
  constant serFsUsage (line 92) | serFsUsage string = "fs_usage"
  constant setHugetlbUsage (line 94) | setHugetlbUsage = "hugetlb_usage"
  constant setHugetlbMaxUsage (line 96) | setHugetlbMaxUsage = "hugetlb_max_usage"
  constant setHugetlbFailcnt (line 98) | setHugetlbFailcnt = "hugetlb_failcnt"
  constant serPerfStat (line 100) | serPerfStat = "perf_stat"
  constant serReferencedMemory (line 102) | serReferencedMemory = "referenced_memory"
  constant serResctrlMemoryBandwidthTotal (line 104) | serResctrlMemoryBandwidthTotal = "resctrl_memory_bandwidth_total"
  constant serResctrlMemoryBandwidthLocal (line 106) | serResctrlMemoryBandwidthLocal = "resctrl_memory_bandwidth_local"
  constant serResctrlLLCOccupancy (line 108) | serResctrlLLCOccupancy = "resctrl_llc_occupancy"
  function new (line 111) | func new() (storage.StorageDriver, error) {
  constant fieldValue (line 131) | fieldValue  string = "value"
  constant fieldType (line 132) | fieldType   string = "type"
  constant fieldDevice (line 133) | fieldDevice string = "device"
  constant tagMachineName (line 138) | tagMachineName   string = "machine"
  constant tagContainerName (line 139) | tagContainerName string = "container_name"
  function newStorage (line 446) | func newStorage(
  function makePoint (line 490) | func makePoint(name string, value interface{}) *influxdb.Point {
  function addTagsToPoint (line 502) | func addTagsToPoint(point *influxdb.Point, tags map[string]string) {
  function checkResponseForErrors (line 513) | func checkResponseForErrors(response *influxdb.Response) error {
  function toSignedIfUnsigned (line 530) | func toSignedIfUnsigned(value interface{}) interface{} {

FILE: cmd/internal/storage/influxdb/influxdb_test.go
  constant kCacheDuration (line 39) | kCacheDuration = 1
  type influxDbTestStorageDriver (line 41) | type influxDbTestStorageDriver struct
    method readyToFlush (line 47) | func (self *influxDbTestStorageDriver) readyToFlush() bool {
    method AddStats (line 51) | func (self *influxDbTestStorageDriver) AddStats(cInfo *info.ContainerI...
    method Close (line 56) | func (self *influxDbTestStorageDriver) Close() error {
    method StatsEq (line 60) | func (self *influxDbTestStorageDriver) StatsEq(a, b *info.ContainerSta...
  function runStorageTest (line 95) | func runStorageTest(f func(test.TestStorageDriver, *testing.T), t *testi...
  function prepareDatabase (line 165) | func prepareDatabase(client *influxdb.Client, database string, retention...
  function TestContainerFileSystemStatsToPoints (line 190) | func TestContainerFileSystemStatsToPoints(t *testing.T) {
  function TestContainerStatsToPoints (line 224) | func TestContainerStatsToPoints(t *testing.T) {
  function assertContainsPointWithValue (line 304) | func assertContainsPointWithValue(t *testing.T, points []*influxdb.Point...
  function createTestStorage (line 315) | func createTestStorage() (*influxdbStorage, error) {
  function createTestStats (line 336) | func createTestStats() (*info.ContainerInfo, *info.ContainerStats) {

FILE: cmd/internal/storage/kafka/kafka.go
  function init (line 35) | func init() {
  type kafkaStorage (line 49) | type kafkaStorage struct
    method infoToDetailSpec (line 64) | func (s *kafkaStorage) infoToDetailSpec(cInfo *info.ContainerInfo, sta...
    method AddStats (line 81) | func (s *kafkaStorage) AddStats(cInfo *info.ContainerInfo, stats *info...
    method Close (line 93) | func (s *kafkaStorage) Close() error {
  type detailSpec (line 55) | type detailSpec struct
  function new (line 97) | func new() (storage.StorageDriver, error) {
  function generateTLSConfig (line 105) | func generateTLSConfig() (*tls.Config, error) {
  function newStorage (line 129) | func newStorage(machineName string) (storage.StorageDriver, error) {

FILE: cmd/internal/storage/redis/redis.go
  function init (line 29) | func init() {
  type redisStorage (line 33) | type redisStorage struct
    method defaultReadyToFlush (line 63) | func (s *redisStorage) defaultReadyToFlush() bool {
    method containerStatsAndDefaultValues (line 68) | func (s *redisStorage) containerStatsAndDefaultValues(cInfo *info.Cont...
    method AddStats (line 86) | func (s *redisStorage) AddStats(cInfo *info.ContainerInfo, stats *info...
    method Close (line 111) | func (s *redisStorage) Close() error {
  type detailSpec (line 43) | type detailSpec struct
  function new (line 50) | func new() (storage.StorageDriver, error) {
  function newStorage (line 120) | func newStorage(

FILE: cmd/internal/storage/statsd/client/client.go
  type Client (line 24) | type Client struct
    method Open (line 30) | func (c *Client) Open() error {
    method Close (line 40) | func (c *Client) Close() error {
    method Send (line 47) | func (c *Client) Send(namespace, containerName, key string, value uint...
  function New (line 57) | func New(hostPort string) (*Client, error) {

FILE: cmd/internal/storage/statsd/statsd.go
  function init (line 25) | func init() {
  type statsdStorage (line 29) | type statsdStorage struct
    method containerStatsToValues (line 104) | func (s *statsdStorage) containerStatsToValues(stats *info.ContainerSt...
    method containerFsStatsToValues (line 139) | func (s *statsdStorage) containerFsStatsToValues(series *map[string]ui...
    method memoryStatsToValues (line 151) | func (s *statsdStorage) memoryStatsToValues(series *map[string]uint64,...
    method hugetlbStatsToValues (line 180) | func (s *statsdStorage) hugetlbStatsToValues(series *map[string]uint64...
    method perfStatsToValues (line 188) | func (s *statsdStorage) perfStatsToValues(series *map[string]uint64, s...
    method resctrlStatsToValues (line 194) | func (s *statsdStorage) resctrlStatsToValues(series *map[string]uint64...
    method AddStats (line 206) | func (s *statsdStorage) AddStats(cInfo *info.ContainerInfo, stats *inf...
    method Close (line 234) | func (s *statsdStorage) Close() error {
  constant colCPUCumulativeUsage (line 38) | colCPUCumulativeUsage string = "cpu_cumulative_usage"
  constant serCPUUsageTotal (line 40) | serCPUUsageTotal  string = "cpu_usage_total"
  constant serCPUUsageSystem (line 41) | serCPUUsageSystem string = "cpu_usage_system"
  constant serCPUUsageUser (line 42) | serCPUUsageUser   string = "cpu_usage_user"
  constant serCPUUsagePerCPU (line 43) | serCPUUsagePerCPU string = "cpu_usage_per_cpu"
  constant serLoadAverage (line 45) | serLoadAverage string = "cpu_load_average"
  constant serMemoryUsage (line 47) | serMemoryUsage string = "memory_usage"
  constant serMemoryMaxUsage (line 49) | serMemoryMaxUsage string = "memory_max_usage"
  constant serMemoryCache (line 51) | serMemoryCache string = "memory_cache"
  constant serMemoryRss (line 53) | serMemoryRss string = "memory_rss"
  constant serMemorySwap (line 55) | serMemorySwap string = "memory_swap"
  constant serMemoryMappedFile (line 57) | serMemoryMappedFile string = "memory_mapped_file"
  constant serMemoryWorkingSet (line 59) | serMemoryWorkingSet string = "memory_working_set"
  constant serMemoryTotalActiveFile (line 61) | serMemoryTotalActiveFile string = "memory_total_active_file"
  constant serMemoryTotalInactiveFile (line 63) | serMemoryTotalInactiveFile string = "memory_total_inactive_file"
  constant serMemoryFailcnt (line 65) | serMemoryFailcnt string = "memory_failcnt"
  constant serMemoryFailure (line 67) | serMemoryFailure string = "memory_failure"
  constant serRxBytes (line 69) | serRxBytes string = "rx_bytes"
  constant serRxErrors (line 71) | serRxErrors string = "rx_errors"
  constant serTxBytes (line 73) | serTxBytes string = "tx_bytes"
  constant serTxErrors (line 75) | serTxErrors string = "tx_errors"
  constant serFsSummary (line 77) | serFsSummary string = "fs_summary"
  constant serFsLimit (line 79) | serFsLimit string = "fs_limit"
  constant serFsUsage (line 81) | serFsUsage string = "fs_usage"
  constant setHugetlbUsage (line 83) | setHugetlbUsage string = "hugetlb_usage"
  constant setHugetlbMaxUsage (line 85) | setHugetlbMaxUsage string = "hugetlb_max_usage"
  constant setHugetlbFailcnt (line 87) | setHugetlbFailcnt string = "hugetlb_failcnt"
  constant serPerfStat (line 89) | serPerfStat string = "perf_stat"
  constant serReferencedMemory (line 91) | serReferencedMemory string = "referenced_memory"
  constant serResctrlMemoryBandwidthTotal (line 93) | serResctrlMemoryBandwidthTotal string = "resctrl_memory_bandwidth_total"
  constant serResctrlMemoryBandwidthLocal (line 95) | serResctrlMemoryBandwidthLocal string = "resctrl_memory_bandwidth_local"
  constant serResctrlLLCOccupancy (line 97) | serResctrlLLCOccupancy string = "resctrl_llc_occupancy"
  function new (line 100) | func new() (storage.StorageDriver, error) {
  function newStorage (line 240) | func newStorage(namespace, hostPort string) (*statsdStorage, error) {

FILE: cmd/internal/storage/stdout/stdout.go
  function init (line 27) | func init() {
  type stdoutStorage (line 31) | type stdoutStorage struct
    method containerStatsToValues (line 106) | func (driver *stdoutStorage) containerStatsToValues(stats *info.Contai...
    method containerFsStatsToValues (line 144) | func (driver *stdoutStorage) containerFsStatsToValues(series *map[stri...
    method memoryStatsToValues (line 156) | func (driver *stdoutStorage) memoryStatsToValues(series *map[string]ui...
    method hugetlbStatsToValues (line 185) | func (driver *stdoutStorage) hugetlbStatsToValues(series *map[string]u...
    method perfStatsToValues (line 193) | func (driver *stdoutStorage) perfStatsToValues(series *map[string]uint...
    method resctrlStatsToValues (line 199) | func (driver *stdoutStorage) resctrlStatsToValues(series *map[string]u...
    method AddStats (line 210) | func (driver *stdoutStorage) AddStats(cInfo *info.ContainerInfo, stats...
    method Close (line 238) | func (driver *stdoutStorage) Close() error {
  constant serTimestamp (line 36) | serTimestamp string = "timestamp"
  constant colCPUCumulativeUsage (line 40) | colCPUCumulativeUsage string = "cpu_cumulative_usage"
  constant serCPUUsageTotal (line 42) | serCPUUsageTotal  string = "cpu_usage_total"
  constant serCPUUsageSystem (line 43) | serCPUUsageSystem string = "cpu_usage_system"
  constant serCPUUsageUser (line 44) | serCPUUsageUser   string = "cpu_usage_user"
  constant serCPUUsagePerCPU (line 45) | serCPUUsagePerCPU string = "cpu_usage_per_cpu"
  constant serLoadAverage (line 47) | serLoadAverage string = "load_average"
  constant serMemoryUsage (line 49) | serMemoryUsage string = "memory_usage"
  constant serMemoryMaxUsage (line 51) | serMemoryMaxUsage string = "memory_max_usage"
  constant serMemoryCache (line 53) | serMemoryCache string = "memory_cache"
  constant serMemoryRss (line 55) | serMemoryRss string = "memory_rss"
  constant serMemorySwap (line 57) | serMemorySwap string = "memory_swap"
  constant serMemoryMappedFile (line 59) | serMemoryMappedFile string = "memory_mapped_file"
  constant serMemoryWorkingSet (line 61) | serMemoryWorkingSet string = "memory_working_set"
  constant serMemoryTotalActiveFile (line 63) | serMemoryTotalActiveFile string = "memory_total_active_file"
  constant serMemoryTotalInactiveFile (line 65) | serMemoryTotalInactiveFile string = "memory_total_inactive_file"
  constant serMemoryFailcnt (line 67) | serMemoryFailcnt string = "memory_failcnt"
  constant serMemoryFailure (line 69) | serMemoryFailure string = "memory_failure"
  constant serRxBytes (line 71) | serRxBytes string = "rx_bytes"
  constant serRxErrors (line 73) | serRxErrors string = "rx_errors"
  constant serTxBytes (line 75) | serTxBytes string = "tx_bytes"
  constant serTxErrors (line 77) | serTxErrors string = "tx_errors"
  constant serFsSummary (line 79) | serFsSummary string = "fs_summary"
  constant serFsLimit (line 81) | serFsLimit string = "fs_limit"
  constant serFsUsage (line 83) | serFsUsage string = "fs_usage"
  constant setHugetlbUsage (line 85) | setHugetlbUsage string = "hugetlb_usage"
  constant setHugetlbMaxUsage (line 87) | setHugetlbMaxUsage string = "hugetlb_max_usage"
  constant setHugetlbFailcnt (line 89) | setHugetlbFailcnt string = "hugetlb_failcnt"
  constant serPerfStat (line 91) | serPerfStat string = "perf_stat"
  constant serReferencedMemory (line 93) | serReferencedMemory string = "referenced_memory"
  constant serResctrlMemoryBandwidthTotal (line 95) | serResctrlMemoryBandwidthTotal string = "resctrl_memory_bandwidth_total"
  constant serResctrlMemoryBandwidthLocal (line 97) | serResctrlMemoryBandwidthLocal string = "resctrl_memory_bandwidth_local"
  constant serResctrlLLCOccupancy (line 99) | serResctrlLLCOccupancy string = "resctrl_llc_occupancy"
  function new (line 102) | func new() (storage.StorageDriver, error) {
  function newStorage (line 242) | func newStorage(namespace string) (*stdoutStorage, error) {

FILE: cmd/internal/storage/test/mock.go
  type MockStorageDriver (line 23) | type MockStorageDriver struct
    method AddStats (line 28) | func (d *MockStorageDriver) AddStats(cInfo *info.ContainerInfo, stats ...
    method Close (line 33) | func (d *MockStorageDriver) Close() error {

FILE: cmd/internal/storage/test/storagetests.go
  type TestStorageDriver (line 26) | type TestStorageDriver interface
  function buildTrace (line 31) | func buildTrace(cpu, mem []uint64, duration time.Duration) []*info.Conta...
  function TimeEq (line 67) | func TimeEq(t1, t2 time.Time, tolerance time.Duration) bool {
  function StorageDriverFillRandomStatsFunc (line 79) | func StorageDriverFillRandomStatsFunc(

FILE: cmd/storagedriver.go
  function NewMemoryStorage (line 42) | func NewMemoryStorage() (*memory.InMemoryCache, error) {

FILE: collector/collector_manager.go
  constant metricLabelPrefix (line 25) | metricLabelPrefix = "io.cadvisor.metric."
  type GenericCollectorManager (line 27) | type GenericCollectorManager struct
    method RegisterCollector (line 56) | func (cm *GenericCollectorManager) RegisterCollector(collector Collect...
    method GetSpec (line 64) | func (cm *GenericCollectorManager) GetSpec() ([]v1.MetricSpec, error) {
    method Collect (line 74) | func (cm *GenericCollectorManager) Collect() (time.Time, map[string][]...
  type collectorData (line 32) | type collectorData struct
  function NewCollectorManager (line 38) | func NewCollectorManager() (CollectorManager, error) {
  function GetCollectorConfigs (line 45) | func GetCollectorConfigs(labels map[string]string) map[string]string {
  function compileErrors (line 99) | func compileErrors(errors []error) error {

FILE: collector/collector_manager_test.go
  type fakeCollector (line 26) | type fakeCollector struct
    method Collect (line 32) | func (fc *fakeCollector) Collect(metric map[string][]v1.MetricVal) (ti...
    method Name (line 37) | func (fc *fakeCollector) Name() string {
    method GetSpec (line 41) | func (fc *fakeCollector) GetSpec() []v1.MetricSpec {
  function TestCollect (line 45) | func TestCollect(t *testing.T) {

FILE: collector/config.go
  type Config (line 25) | type Config struct
  type MetricConfig (line 34) | type MetricConfig struct
  type Prometheus (line 55) | type Prometheus struct
  type EndpointConfig (line 66) | type EndpointConfig struct
    method UnmarshalJSON (line 84) | func (ec *EndpointConfig) UnmarshalJSON(b []byte) error {
  type URLConfig (line 73) | type URLConfig struct

FILE: collector/fakes.go
  type FakeCollectorManager (line 23) | type FakeCollectorManager struct
    method RegisterCollector (line 26) | func (fkm *FakeCollectorManager) RegisterCollector(collector Collector...
    method GetSpec (line 30) | func (fkm *FakeCollectorManager) GetSpec() ([]v1.MetricSpec, error) {
    method Collect (line 34) | func (fkm *FakeCollectorManager) Collect(metric map[string][]v1.Metric...

FILE: collector/generic_collector.go
  type GenericCollector (line 31) | type GenericCollector struct
    method Name (line 113) | func (collector *GenericCollector) Name() string {
    method configToSpec (line 117) | func (collector *GenericCollector) configToSpec(config MetricConfig) v...
    method GetSpec (line 126) | func (collector *GenericCollector) GetSpec() []v1.MetricSpec {
    method Collect (line 136) | func (collector *GenericCollector) Collect(metrics map[string][]v1.Met...
  type collectorInfo (line 45) | type collectorInfo struct
  function NewCollector (line 58) | func NewCollector(collectorName string, configFile []byte, metricCountLi...

FILE: collector/generic_collector_test.go
  function TestEmptyConfig (line 30) | func TestEmptyConfig(t *testing.T) {
  function TestConfigWithErrors (line 54) | func TestConfigWithErrors(t *testing.T) {
  function TestConfigWithRegexErrors (line 85) | func TestConfigWithRegexErrors(t *testing.T) {
  function TestConfig (line 124) | func TestConfig(t *testing.T) {
  function TestEndpointConfig (line 139) | func TestEndpointConfig(t *testing.T) {
  function TestMetricCollection (line 156) | func TestMetricCollection(t *testing.T) {
  function TestMetricCollectionLimit (line 192) | func TestMetricCollectionLimit(t *testing.T) {

FILE: collector/prometheus_collector.go
  type PrometheusCollector (line 34) | type PrometheusCollector struct
    method Name (line 102) | func (collector *PrometheusCollector) Name() string {
    method GetSpec (line 106) | func (collector *PrometheusCollector) GetSpec() []v1.MetricSpec {
    method Collect (line 216) | func (collector *PrometheusCollector) Collect(metrics map[string][]v1....
  function NewPrometheusCollector (line 56) | func NewPrometheusCollector(collectorName string, configFile []byte, met...
  function metricType (line 153) | func metricType(t rawmodel.MetricType) v1.MetricType {
  type prometheusLabels (line 164) | type prometheusLabels
    method Len (line 176) | func (s prometheusLabels) Len() int      { return len(s) }
    method Swap (line 177) | func (s prometheusLabels) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
  function labelSetToLabelPairs (line 166) | func labelSetToLabelPairs(labels model.Metric) prometheusLabels {
  type byName (line 181) | type byName struct
    method Less (line 183) | func (s byName) Less(i, j int) bool {
  function prometheusLabelSetToCadvisorLabels (line 187) | func prometheusLabelSetToCadvisorLabels(promLabels model.Metric) map[str...
  function prometheusLabelSetToCadvisorLabel (line 198) | func prometheusLabelSetToCadvisorLabel(promLabels model.Metric) string {

FILE: collector/prometheus_collector_test.go
  function TestPrometheus (line 31) | func TestPrometheus(t *testing.T) {
  function TestPrometheusEndpointConfig (line 115) | func TestPrometheusEndpointConfig(t *testing.T) {
  function TestPrometheusShortResponse (line 132) | func TestPrometheusShortResponse(t *testing.T) {
  function TestPrometheusMetricCountLimit (line 156) | func TestPrometheusMetricCountLimit(t *testing.T) {
  function TestPrometheusFiltersMetrics (line 186) | func TestPrometheusFiltersMetrics(t *testing.T) {
  function TestPrometheusFiltersMetricsCountLimit (line 226) | func TestPrometheusFiltersMetricsCountLimit(t *testing.T) {

FILE: collector/types.go
  type Collector (line 26) | type Collector interface
  type CollectorManager (line 41) | type CollectorManager interface

FILE: collector/util.go
  method configure (line 19) | func (ec *EndpointConfig) configure(containerHandler container.Container...

FILE: container/common/container_hints.go
  type ContainerHints (line 31) | type ContainerHints struct
  type containerHint (line 35) | type containerHint struct
  type Mount (line 41) | type Mount struct
  type networkInterface (line 46) | type networkInterface struct
  function GetContainerHintsFromFile (line 51) | func GetContainerHintsFromFile(containerHintsFile string) (ContainerHint...

FILE: container/common/container_hints_test.go
  function TestGetContainerHintsFromFile (line 23) | func TestGetContainerHintsFromFile(t *testing.T) {
  function TestFileNotExist (line 54) | func TestFileNotExist(t *testing.T) {

FILE: container/common/fsHandler.go
  type FsHandler (line 30) | type FsHandler interface
  type FsUsage (line 36) | type FsUsage struct
  type realFsHandler (line 42) | type realFsHandler struct
    method update (line 76) | func (fh *realFsHandler) update() error {
    method trackUsage (line 116) | func (fh *realFsHandler) trackUsage() {
    method Start (line 145) | func (fh *realFsHandler) Start() {
    method Stop (line 149) | func (fh *realFsHandler) Stop() {
    method Usage (line 153) | func (fh *realFsHandler) Usage() FsUsage {
  constant maxBackoffFactor (line 56) | maxBackoffFactor = 20
  constant DefaultPeriod (line 59) | DefaultPeriod = time.Minute
  function NewFsHandler (line 63) | func NewFsHandler(period time.Duration, rootfs, extraDir string, fsInfo ...

FILE: container/common/helpers.go
  function DebugInfo (line 40) | func DebugInfo(watches map[string][]string) map[string][]string {
  function GetSpec (line 65) | func GetSpec(cgroupPaths map[string]string, machineInfoFactory info.Mach...
  function getSpecInternal (line 69) | func getSpecInternal(cgroupPaths map[string]string, machineInfoFactory i...
  function GetControllerPath (line 226) | func GetControllerPath(cgroupPaths map[string]string, controllerName str...
  function readString (line 239) | func readString(dirpath string, file string) string {
  function convertCPUWeightToCPULimit (line 255) | func convertCPUWeightToCPULimit(weight uint64) (uint64, error) {
  function parseUint64String (line 268) | func parseUint64String(strValue string) uint64 {
  function readUInt64 (line 285) | func readUInt64(dirpath string, file string) uint64 {
  function ListDirectories (line 304) | func ListDirectories(dirpath string, parent string, recursive bool, outp...
  function MakeCgroupPaths (line 333) | func MakeCgroupPaths(mountPoints map[string]string, name string) map[str...
  function CgroupExists (line 342) | func CgroupExists(cgroupPaths map[string]string) bool {
  function ListContainers (line 352) | func ListContainers(name string, cgroupPaths map[string]string, listType...
  function AssignDeviceNamesToDiskStats (line 374) | func AssignDeviceNamesToDiskStats(namer DeviceNamer, stats *info.DiskIoS...
  function assignDeviceNamesToPerDiskStats (line 394) | func assignDeviceNamesToPerDiskStats(namer DeviceNamer, diskStats ...[]i...
  type DeviceNamer (line 404) | type DeviceNamer interface
  type MachineInfoNamer (line 410) | type MachineInfoNamer
    method DeviceName (line 412) | func (n *MachineInfoNamer) DeviceName(major, minor uint64) (string, bo...
  type deviceIdentifier (line 426) | type deviceIdentifier struct
  type deviceIdentifierMap (line 431) | type deviceIdentifierMap
    method Find (line 434) | func (m deviceIdentifierMap) Find(major, minor uint64, namer DeviceNam...
  function RemoveNetMetrics (line 447) | func RemoveNetMetrics(metrics container.MetricSet, remove bool) containe...

FILE: container/common/helpers_test.go
  function BenchmarkListDirectories (line 35) | func BenchmarkListDirectories(b *testing.B) {
  function TestConvertCpuWeightToCpuLimit (line 44) | func TestConvertCpuWeightToCpuLimit(t *testing.T) {
  function TestParseUint64String (line 69) | func TestParseUint64String(t *testing.T) {
  type mockInfoProvider (line 90) | type mockInfoProvider struct
    method GetRequestedContainersInfo (line 94) | func (m *mockInfoProvider) GetRequestedContainersInfo(containerName st...
    method GetVersionInfo (line 99) | func (m *mockInfoProvider) GetVersionInfo() (*info.VersionInfo, error) {
    method GetMachineInfo (line 103) | func (m *mockInfoProvider) GetMachineInfo() (*info.MachineInfo, error) {
  function TestGetSpecCgroupV1 (line 109) | func TestGetSpecCgroupV1(t *testing.T) {
  function TestGetSpecCgroupV2 (line 144) | func TestGetSpecCgroupV2(t *testing.T) {
  function TestGetSpecCgroupV2Max (line 176) | func TestGetSpecCgroupV2Max(t *testing.T) {
  function TestRemoveNetMetrics (line 202) | func TestRemoveNetMetrics(t *testing.T) {
  function BenchmarkGetSpecCgroupV2 (line 253) | func BenchmarkGetSpecCgroupV2(b *testing.B) {
  function BenchmarkGetSpecCgroupV1 (line 270) | func BenchmarkGetSpecCgroupV1(b *testing.B) {

FILE: container/common/inotify_watcher.go
  type InotifyWatcher (line 28) | type InotifyWatcher struct
    method AddWatch (line 52) | func (iw *InotifyWatcher) AddWatch(containerName, dir string) (bool, e...
    method RemoveWatch (line 79) | func (iw *InotifyWatcher) RemoveWatch(containerName, dir string) (bool...
    method Error (line 108) | func (iw *InotifyWatcher) Error() chan error {
    method Event (line 113) | func (iw *InotifyWatcher) Event() chan *inotify.Event {
    method Close (line 118) | func (iw *InotifyWatcher) Close() error {
    method GetWatches (line 123) | func (iw *InotifyWatcher) GetWatches() map[string][]string {
  function NewInotifyWatcher (line 39) | func NewInotifyWatcher() (*InotifyWatcher, error) {
  function mapToSlice (line 131) | func mapToSlice(m map[string]bool) []string {

FILE: container/container.go
  type ListType (line 23) | type ListType
  constant ListSelf (line 26) | ListSelf ListType = iota
  constant ListRecursive (line 27) | ListRecursive
  type ContainerType (line 30) | type ContainerType
  constant ContainerTypeRaw (line 33) | ContainerTypeRaw ContainerType = iota
  constant ContainerTypeDocker (line 34) | ContainerTypeDocker
  constant ContainerTypeCrio (line 35) | ContainerTypeCrio
  constant ContainerTypeContainerd (line 36) | ContainerTypeContainerd
  constant ContainerTypePodman (line 37) | ContainerTypePodman
  type ContainerHandler (line 41) | type ContainerHandler interface

FILE: container/containerd/client.go
  type client (line 39) | type client struct
    method LoadContainer (line 114) | func (c *client) LoadContainer(ctx context.Context, id string) (*conta...
    method TaskPid (line 124) | func (c *client) TaskPid(ctx context.Context, id string) (uint32, erro...
    method LoadTaskProcess (line 137) | func (c *client) LoadTaskProcess(ctx context.Context, id string) (*tas...
    method TaskExitStatus (line 148) | func (c *client) TaskExitStatus(ctx context.Context, id string) (uint3...
    method Version (line 161) | func (c *client) Version(ctx context.Context) (string, error) {
  type ContainerdClient (line 45) | type ContainerdClient interface
  constant maxBackoffDelay (line 62) | maxBackoffDelay   = 3 * time.Second
  constant baseBackoffDelay (line 63) | baseBackoffDelay  = 100 * time.Millisecond
  constant connectionTimeout (line 64) | connectionTimeout = 2 * time.Second
  constant maxMsgSize (line 65) | maxMsgSize        = 16 * 1024 * 1024
  function Client (line 69) | func Client(address, namespace string) (ContainerdClient, error) {
  function containerFromProto (line 169) | func containerFromProto(containerpb *containersapi.Container) *container...

FILE: container/containerd/client_test.go
  type containerdClientMock (line 26) | type containerdClientMock struct
    method LoadContainer (line 33) | func (c *containerdClientMock) LoadContainer(ctx context.Context, id s...
    method Version (line 44) | func (c *containerdClientMock) Version(ctx context.Context) (string, e...
    method TaskPid (line 48) | func (c *containerdClientMock) TaskPid(ctx context.Context, id string)...
    method LoadTaskProcess (line 52) | func (c *containerdClientMock) LoadTaskProcess(ctx context.Context, id...
    method TaskExitStatus (line 63) | func (c *containerdClientMock) TaskExitStatus(ctx context.Context, id ...
  function mockcontainerdClient (line 70) | func mockcontainerdClient(cntrs map[string]*containers.Container, return...

FILE: container/containerd/containers/containers.go
  type Container (line 43) | type Container struct
  type RuntimeInfo (line 95) | type RuntimeInfo struct
  type Store (line 101) | type Store interface

FILE: container/containerd/factory.go
  constant k8sContainerdNamespace (line 42) | k8sContainerdNamespace = "containerd"
  type containerdFactory (line 48) | type containerdFactory struct
    method String (line 59) | func (f *containerdFactory) String() string {
    method NewContainerHandler (line 63) | func (f *containerdFactory) NewContainerHandler(name string, metadataE...
    method CanHandleAndAccept (line 108) | func (f *containerdFactory) CanHandleAndAccept(name string) (bool, boo...
    method DebugInfo (line 127) | func (f *containerdFactory) DebugInfo() map[string][]string {
  function ContainerNameToContainerdID (line 89) | func ContainerNameToContainerdID(name string) string {
  function isContainerName (line 99) | func isContainerName(name string) bool {
  function Register (line 132) | func Register(factory info.MachineInfoFactory, fsInfo fs.FsInfo, include...

FILE: container/containerd/factory_test.go
  function TestIsContainerName (line 29) | func TestIsContainerName(t *testing.T) {
  function TestCanHandleAndAccept (line 50) | func TestCanHandleAndAccept(t *testing.T) {

FILE: container/containerd/grpc.go
  type namespaceInterceptor (line 26) | type namespaceInterceptor struct
    method unary (line 30) | func (ni namespaceInterceptor) unary(ctx context.Context, method strin...
    method stream (line 38) | func (ni namespaceInterceptor) stream(ctx context.Context, desc *grpc....
  function newNSInterceptors (line 46) | func newNSInterceptors(ns string) (grpc.UnaryClientInterceptor, grpc.Str...

FILE: container/containerd/handler.go
  type containerdContainerHandler (line 39) | type containerdContainerHandler struct
    method ContainerReference (line 178) | func (h *containerdContainerHandler) ContainerReference() (info.Contai...
    method GetSpec (line 182) | func (h *containerdContainerHandler) GetSpec() (info.ContainerSpec, er...
    method getFsStats (line 202) | func (h *containerdContainerHandler) getFsStats(stats *info.ContainerS...
    method GetStats (line 214) | func (h *containerdContainerHandler) GetStats() (*info.ContainerStats,...
    method ListContainers (line 225) | func (h *containerdContainerHandler) ListContainers(listType container...
    method GetCgroupPath (line 229) | func (h *containerdContainerHandler) GetCgroupPath(resource string) (s...
    method GetContainerLabels (line 241) | func (h *containerdContainerHandler) GetContainerLabels() map[string]s...
    method ListProcesses (line 245) | func (h *containerdContainerHandler) ListProcesses(listType container....
    method Exists (line 249) | func (h *containerdContainerHandler) Exists() bool {
    method Type (line 253) | func (h *containerdContainerHandler) Type() container.ContainerType {
    method Start (line 257) | func (h *containerdContainerHandler) Start() {
    method Cleanup (line 260) | func (h *containerdContainerHandler) Cleanup() {
    method GetContainerIPAddress (line 263) | func (h *containerdContainerHandler) GetContainerIPAddress() string {
    method GetExitCode (line 268) | func (h *containerdContainerHandler) GetExitCode() (int, error) {
  function newContainerdContainerHandler (line 63) | func newContainerdContainerHandler(

FILE: container/containerd/handler_test.go
  function init (line 33) | func init() {
  type mockedMachineInfo (line 37) | type mockedMachineInfo struct
    method GetMachineInfo (line 39) | func (m *mockedMachineInfo) GetMachineInfo() (*info.MachineInfo, error) {
    method GetVersionInfo (line 43) | func (m *mockedMachineInfo) GetVersionInfo() (*info.VersionInfo, error) {
  function TestHandler (line 47) | func TestHandler(t *testing.T) {
  function TestGetExitCode (line 146) | func TestGetExitCode(t *testing.T) {

FILE: container/containerd/identifiers/validate.go
  constant maxLength (line 48) | maxLength  = 76
  constant alphanum (line 49) | alphanum   = `[A-Za-z0-9]+`
  constant separators (line 50) | separators = `[._-]`
  function Validate (line 65) | func Validate(s string) error {
  function reGroup (line 80) | func reGroup(s string) string {
  function reAnchor (line 84) | func reAnchor(s string) string {

FILE: container/containerd/identifiers/validate_test.go
  function TestValidIdentifiers (line 39) | func TestValidIdentifiers(t *testing.T) {
  function TestInvalidIdentifiers (line 62) | func TestInvalidIdentifiers(t *testing.T) {

FILE: container/containerd/install/install.go
  function init (line 27) | func init() {

FILE: container/containerd/namespaces/context.go
  constant NamespaceEnvVar (line 44) | NamespaceEnvVar = "CONTAINERD_NAMESPACE"
  constant Default (line 46) | Default = "default"
  type namespaceKey (line 49) | type namespaceKey struct
  function WithNamespace (line 52) | func WithNamespace(ctx context.Context, namespace string) context.Context {
  function NamespaceFromEnv (line 61) | func NamespaceFromEnv(ctx context.Context) context.Context {
  function Namespace (line 72) | func Namespace(ctx context.Context) (string, bool) {
  function NamespaceRequired (line 83) | func NamespaceRequired(ctx context.Context) (string, error) {

FILE: container/containerd/namespaces/context_test.go
  function TestContext (line 38) | func TestContext(t *testing.T) {
  function TestNamespaceFromEnv (line 62) | func TestNamespaceFromEnv(t *testing.T) {

FILE: container/containerd/namespaces/grpc.go
  constant GRPCHeader (line 40) | GRPCHeader = "containerd-namespace"
  function withGRPCNamespaceHeader (line 45) | func withGRPCNamespaceHeader(ctx context.Context, namespace string) cont...
  function fromGRPCHeader (line 60) | func fromGRPCHeader(ctx context.Context) (string, bool) {

FILE: container/containerd/namespaces/store.go
  type Store (line 40) | type Store interface
  type DeleteInfo (line 51) | type DeleteInfo struct
  type DeleteOpts (line 57) | type DeleteOpts

FILE: container/containerd/namespaces/ttrpc.go
  constant TTRPCHeader (line 40) | TTRPCHeader = "containerd-namespace-ttrpc"
  function copyMetadata (line 43) | func copyMetadata(src ttrpc.MD) ttrpc.MD {
  function withTTRPCNamespaceHeader (line 51) | func withTTRPCNamespaceHeader(ctx context.Context, namespace string) con...
  function fromTTRPCHeader (line 62) | func fromTTRPCHeader(ctx context.Context) (string, bool) {

FILE: container/containerd/namespaces/ttrpc_test.go
  function TestCopyTTRPCMetadata (line 40) | func TestCopyTTRPCMetadata(t *testing.T) {
  function TestTTRPCNamespaceHeader (line 56) | func TestTTRPCNamespaceHeader(t *testing.T) {

FILE: container/containerd/pkg/dialer/dialer.go
  type dialResult (line 39) | type dialResult struct
  function ContextDialer (line 45) | func ContextDialer(ctx context.Context, address string) (net.Conn, error) {
  function timeoutDialer (line 56) | func timeoutDialer(address string, timeout time.Duration) (net.Conn, err...

FILE: container/containerd/pkg/dialer/dialer_unix.go
  function DialAddress (line 45) | func DialAddress(address string) string {
  function isNoent (line 49) | func isNoent(err error) bool {
  function dialer (line 62) | func dialer(address string, timeout time.Duration) (net.Conn, error) {

FILE: container/containerd/pkg/dialer/dialer_windows.go
  function isNoent (line 40) | func isNoent(err error) bool {
  function dialer (line 44) | func dialer(address string, timeout time.Duration) (net.Conn, error) {
  function DialAddress (line 49) | func DialAddress(address string) string {

FILE: container/containerd/plugin.go
  function NewPlugin (line 27) | func NewPlugin() container.Plugin {
  type plugin (line 31) | type plugin struct
    method InitializeFSContext (line 33) | func (p *plugin) InitializeFSContext(context *fs.Context) error {
    method Register (line 37) | func (p *plugin) Register(factory info.MachineInfoFactory, fsInfo fs.F...

FILE: container/crio/client.go
  constant CrioSocket (line 33) | CrioSocket            = "/var/run/crio/crio.sock"
  constant maxUnixSocketPathSize (line 34) | maxUnixSocketPathSize = len(syscall.RawSockaddrUnix{}.Path)
  type Info (line 44) | type Info struct
  type ContainerInfo (line 52) | type ContainerInfo struct
  type CrioClient (line 65) | type CrioClient interface
  type crioClientImpl (line 70) | type crioClientImpl struct
    method Info (line 118) | func (c *crioClientImpl) Info() (Info, error) {
    method ContainerInfo (line 136) | func (c *crioClientImpl) ContainerInfo(id string) (*ContainerInfo, err...
  function configureUnixTransport (line 74) | func configureUnixTransport(tr *http.Transport, proto, addr string) error {
  function Client (line 87) | func Client() (CrioClient, error) {
  function getRequest (line 104) | func getRequest(path string) (*http.Request, error) {

FILE: container/crio/client_test.go
  type crioClientMock (line 19) | type crioClientMock struct
    method Info (line 25) | func (c *crioClientMock) Info() (Info, error) {
    method ContainerInfo (line 32) | func (c *crioClientMock) ContainerInfo(id string) (*ContainerInfo, err...
  function mockCrioClient (line 43) | func mockCrioClient(info Info, containersInfo map[string]*ContainerInfo,...

FILE: container/crio/factory.go
  constant CrioNamespace (line 35) | CrioNamespace = "crio"
  constant CrioNamespaceSuffix (line 38) | CrioNamespaceSuffix = ".scope"
  constant SystemdNamespace (line 41) | SystemdNamespace = "system-systemd"
  type storageDriver (line 46) | type storageDriver
  constant overlayStorageDriver (line 50) | overlayStorageDriver  storageDriver = "overlay"
  constant overlay2StorageDriver (line 51) | overlay2StorageDriver storageDriver = "overlay2"
  type crioFactory (line 54) | type crioFactory struct
    method String (line 73) | func (f *crioFactory) String() string {
    method NewContainerHandler (line 77) | func (f *crioFactory) NewContainerHandler(name string, metadataEnvAllo...
    method CanHandleAndAccept (line 119) | func (f *crioFactory) CanHandleAndAccept(name string) (bool, bool, err...
    method DebugInfo (line 150) | func (f *crioFactory) DebugInfo() map[string][]string {
  function ContainerNameToCrioId (line 98) | func ContainerNameToCrioId(name string) string {
  function isContainerName (line 110) | func isContainerName(name string) bool {
  function Register (line 155) | func Register(factory info.MachineInfoFactory, fsInfo fs.FsInfo, include...

FILE: container/crio/factory_test.go
  function TestCanHandleAndAccept (line 25) | func TestCanHandleAndAccept(t *testing.T) {

FILE: container/crio/handler.go
  type crioContainerHandler (line 35) | type crioContainerHandler struct
    method Start (line 207) | func (h *crioContainerHandler) Start() {
    method Cleanup (line 213) | func (h *crioContainerHandler) Cleanup() {
    method ContainerReference (line 219) | func (h *crioContainerHandler) ContainerReference() (info.ContainerRef...
    method GetSpec (line 223) | func (h *crioContainerHandler) GetSpec() (info.ContainerSpec, error) {
    method getFsStats (line 235) | func (h *crioContainerHandler) getFsStats(stats *info.ContainerStats) ...
    method getLibcontainerHandler (line 288) | func (h *crioContainerHandler) getLibcontainerHandler() *containerlibc...
    method GetStats (line 306) | func (h *crioContainerHandler) GetStats() (*info.ContainerStats, error) {
    method ListContainers (line 329) | func (h *crioContainerHandler) ListContainers(listType container.ListT...
    method GetCgroupPath (line 334) | func (h *crioContainerHandler) GetCgroupPath(resource string) (string,...
    method GetContainerLabels (line 346) | func (h *crioContainerHandler) GetContainerLabels() map[string]string {
    method GetContainerIPAddress (line 350) | func (h *crioContainerHandler) GetContainerIPAddress() string {
    method ListProcesses (line 354) | func (h *crioContainerHandler) ListProcesses(listType container.ListTy...
    method Exists (line 358) | func (h *crioContainerHandler) Exists() bool {
    method Type (line 362) | func (h *crioContainerHandler) Type() container.ContainerType {
    method GetExitCode (line 366) | func (h *crioContainerHandler) GetExitCode() (int, error) {
  function newCrioContainerHandler (line 82) | func newCrioContainerHandler(

FILE: container/crio/handler_test.go
  function TestHandler (line 30) | func TestHandler(t *testing.T) {

FILE: container/crio/install/install.go
  function init (line 27) | func init() {

FILE: container/crio/plugin.go
  function NewPlugin (line 29) | func NewPlugin() container.Plugin {
  type plugin (line 33) | type plugin struct
    method InitializeFSContext (line 35) | func (p *plugin) InitializeFSContext(context *fs.Context) error {
    method Register (line 50) | func (p *plugin) Register(factory info.MachineInfoFactory, fsInfo fs.F...

FILE: container/docker/client.go
  function Client (line 37) | func Client() (*dclient.Client, error) {

FILE: container/docker/docker.go
  function SetTimeout (line 37) | func SetTimeout(timeout time.Duration) {
  function Status (line 41) | func Status() (v1.DockerStatus, error) {
  function StatusWithContext (line 47) | func StatusWithContext(ctx context.Context) (v1.DockerStatus, error) {
  function StatusFromDockerInfo (line 59) | func StatusFromDockerInfo(dockerInfo dockersystem.Info) (v1.DockerStatus...
  function Images (line 86) | func Images() ([]v1.DockerImage, error) {
  function ValidateInfo (line 102) | func ValidateInfo(GetInfo func() (*dockersystem.Info, error), ServerVers...
  function Info (line 133) | func Info() (*dockersystem.Info, error) {
  function APIVersion (line 149) | func APIVersion() ([]int, error) {
  function VersionString (line 157) | func VersionString() (string, error) {
  function APIVersionString (line 171) | func APIVersionString() (string, error) {
  function ParseVersion (line 185) | func ParseVersion(versionString string, regex *regexp.Regexp, length int...

FILE: container/docker/docker_test.go
  function TestParseDockerAPIVersion (line 25) | func TestParseDockerAPIVersion(t *testing.T) {

FILE: container/docker/factory.go
  constant DockerNamespace (line 55) | DockerNamespace = "docker"
  constant rootDirRetries (line 58) | rootDirRetries = 5
  constant rootDirRetryPeriod (line 61) | rootDirRetryPeriod time.Duration = 1000 * time.Millisecond
  function RootDir (line 78) | func RootDir() string {
  type StorageDriver (line 96) | type StorageDriver
  constant DevicemapperStorageDriver (line 99) | DevicemapperStorageDriver          StorageDriver = "devicemapper"
  constant AufsStorageDriver (line 100) | AufsStorageDriver                  StorageDriver = "aufs"
  constant OverlayStorageDriver (line 101) | OverlayStorageDriver               StorageDriver = "overlay"
  constant Overlay2StorageDriver (line 102) | Overlay2StorageDriver              StorageDriver = "overlay2"
  constant ContainerdSnapshotterStorageDriver (line 103) | ContainerdSnapshotterStorageDriver StorageDriver = "overlayfs"
  constant ZfsStorageDriver (line 104) | ZfsStorageDriver                   StorageDriver = "zfs"
  constant VfsStorageDriver (line 105) | VfsStorageDriver                   StorageDriver = "vfs"
  type dockerFactory (line 108) | type dockerFactory struct
    method String (line 135) | func (f *dockerFactory) String() string {
    method NewContainerHandler (line 139) | func (f *dockerFactory) NewContainerHandler(name string, metadataEnvAl...
    method CanHandleAndAccept (line 173) | func (f *dockerFactory) CanHandleAndAccept(name string) (bool, bool, e...
    method DebugInfo (line 191) | func (f *dockerFactory) DebugInfo() map[string][]string {
  function StartThinPoolWatcher (line 202) | func StartThinPoolWatcher(dockerInfo *dockersystem.Info) (*devicemapper....
  function StartZfsWatcher (line 235) | func StartZfsWatcher(dockerInfo *dockersystem.Info) (*zfs.ZfsWatcher, er...
  function ensureThinLsKernelVersion (line 250) | func ensureThinLsKernelVersion(kernelVersion string) error {
  function Register (line 311) | func Register(factory info.MachineInfoFactory, fsInfo fs.FsInfo, include...

FILE: container/docker/factory_test.go
  function TestEnsureThinLsKernelVersion (line 21) | func TestEnsureThinLsKernelVersion(t *testing.T) {

FILE: container/docker/fs.go
  function FsStats (line 32) | func FsStats(
  function addDiskStats (line 94) | func addDiskStats(fileSystems []fs.Fs, fsInfo *info.FsInfo, fsStats *inf...
  type FsHandler (line 120) | type FsHandler struct
    method Start (line 136) | func (h *FsHandler) Start() {
    method Stop (line 140) | func (h *FsHandler) Stop() {
    method Usage (line 144) | func (h *FsHandler) Usage() common.FsUsage {

FILE: container/docker/handler.go
  constant aufsRWLayer (line 50) | aufsRWLayer     = "diff"
  constant overlayRWLayer (line 51) | overlayRWLayer  = "upper"
  constant overlay2RWLayer (line 52) | overlay2RWLayer = "diff"
  constant pathToContainersDir (line 55) | pathToContainersDir = "containers"
  type containerHandler (line 58) | type containerHandler struct
    method ContainerReference (line 323) | func (h *containerHandler) ContainerReference() (info.ContainerReferen...
    method GetSpec (line 327) | func (h *containerHandler) GetSpec() (info.ContainerSpec, error) {
    method GetStats (line 344) | func (h *containerHandler) GetStats() (*info.ContainerStats, error) {
    method ListContainers (line 372) | func (h *containerHandler) ListContainers(container.ListType) ([]info....
    method ListProcesses (line 376) | func (h *containerHandler) ListProcesses(container.ListType) ([]int, e...
    method GetCgroupPath (line 380) | func (h *containerHandler) GetCgroupPath(resource string) (string, err...
    method GetContainerLabels (line 392) | func (h *containerHandler) GetContainerLabels() map[string]string {
    method GetContainerIPAddress (line 396) | func (h *containerHandler) GetContainerIPAddress() string {
    method Exists (line 400) | func (h *containerHandler) Exists() bool {
    method Cleanup (line 404) | func (h *containerHandler) Cleanup() {
    method Start (line 410) | func (h *containerHandler) Start() {
    method Type (line 416) | func (h *containerHandler) Type() container.ContainerType {
    method GetExitCode (line 420) | func (h *containerHandler) GetExitCode() (int, error) {
  function getRwLayerID (line 109) | func getRwLayerID(containerID, storageDir string, sd StorageDriver, dock...
  function newContainerHandler (line 127) | func newContainerHandler(
  function DetermineDeviceStorage (line 300) | func DetermineDeviceStorage(storageDriver StorageDriver, storageDir stri...

FILE: container/docker/handler_test.go
  type mockDockerClientForExitCode (line 35) | type mockDockerClientForExitCode struct
    method ContainerInspect (line 41) | func (m *mockDockerClientForExitCode) ContainerInspect(ctx context.Con...
  function TestStorageDirDetectionWithOldVersions (line 45) | func TestStorageDirDetectionWithOldVersions(t *testing.T) {
  function TestStorageDirDetectionWithNewVersions (line 52) | func TestStorageDirDetectionWithNewVersions(t *testing.T) {
  function rawMetadataEnvMatch (line 69) | func rawMetadataEnvMatch(dockerEnvWhiteList string, cntConfig container....
  function newMetadataEnvMatch (line 88) | func newMetadataEnvMatch(dockerEnvWhiteList string, cntConfig container....
  function TestDockerEnvWhitelist (line 112) | func TestDockerEnvWhitelist(t *testing.T) {
  function TestAddDiskStatsCheck (line 163) | func TestAddDiskStatsCheck(t *testing.T) {
  function TestAddDiskStats (line 189) | func TestAddDiskStats(t *testing.T) {
  function TestGetExitCode (line 236) | func TestGetExitCode(t *testing.T) {

FILE: container/docker/install/install.go
  function init (line 27) | func init() {

FILE: container/docker/plugin.go
  constant dockerClientTimeout (line 31) | dockerClientTimeout = 10 * time.Second
  function NewPlugin (line 34) | func NewPlugin() container.Plugin {
  type plugin (line 38) | type plugin struct
    method InitializeFSContext (line 40) | func (p *plugin) InitializeFSContext(context *fs.Context) error {
    method Register (line 52) | func (p *plugin) Register(factory info.MachineInfoFactory, fsInfo fs.F...
  function retryDockerStatus (line 57) | func retryDockerStatus() info.DockerStatus {

FILE: container/docker/utils/docker.go
  constant DriverStatusPoolName (line 31) | DriverStatusPoolName      = "Pool Name"
  constant DriverStatusMetadataFile (line 32) | DriverStatusMetadataFile  = "Metadata file"
  constant DriverStatusParentDataset (line 33) | DriverStatusParentDataset = "Parent Dataset"
  function DriverStatusValue (line 40) | func DriverStatusValue(status [][2]string, target string) string {
  function DockerThinPoolName (line 50) | func DockerThinPoolName(info dockersystem.Info) (string, error) {
  function DockerMetadataDevice (line 59) | func DockerMetadataDevice(info dockersystem.Info) (string, error) {
  function DockerZfsFilesystem (line 79) | func DockerZfsFilesystem(info dockersystem.Info) (string, error) {
  function SummariesToImages (line 88) | func SummariesToImages(summaries []dockerimage.Summary) ([]v1.DockerImag...
  function ContainerNameToId (line 109) | func ContainerNameToId(name string) string {
  function IsContainerName (line 121) | func IsContainerName(name string) bool {

FILE: container/docker/utils/docker_test.go
  function TestIsContainerName (line 19) | func TestIsContainerName(t *testing.T) {

FILE: container/factory.go
  type ContainerHandlerFactory (line 30) | type ContainerHandlerFactory interface
  type MetricKind (line 45) | type MetricKind
    method String (line 106) | func (mk MetricKind) String() string {
  constant CpuUsageMetrics (line 48) | CpuUsageMetrics                MetricKind = "cpu"
  constant ProcessSchedulerMetrics (line 49) | ProcessSchedulerMetrics        MetricKind = "sched"
  constant PerCpuUsageMetrics (line 50) | PerCpuUsageMetrics             MetricKind = "percpu"
  constant MemoryUsageMetrics (line 51) | MemoryUsageMetrics             MetricKind = "memory"
  constant MemoryNumaMetrics (line 52) | MemoryNumaMetrics              MetricKind = "memory_numa"
  constant CpuLoadMetrics (line 53) | CpuLoadMetrics                 MetricKind = "cpuLoad"
  constant DiskIOMetrics (line 54) | DiskIOMetrics                  MetricKind = "diskIO"
  constant DiskUsageMetrics (line 55) | DiskUsageMetrics               MetricKind = "disk"
  constant NetworkUsageMetrics (line 56) | NetworkUsageMetrics            MetricKind = "network"
  constant NetworkTcpUsageMetrics (line 57) | NetworkTcpUsageMetrics         MetricKind = "tcp"
  constant NetworkAdvancedTcpUsageMetrics (line 58) | NetworkAdvancedTcpUsageMetrics MetricKind = "advtcp"
  constant NetworkUdpUsageMetrics (line 59) | NetworkUdpUsageMetrics         MetricKind = "udp"
  constant AppMetrics (line 60) | AppMetrics                     MetricKind = "app"
  constant ProcessMetrics (line 61) | ProcessMetrics                 MetricKind = "process"
  constant HugetlbUsageMetrics (line 62) | HugetlbUsageMetrics            MetricKind = "hugetlb"
  constant PerfMetrics (line 63) | PerfMetrics                    MetricKind = "perf_event"
  constant ReferencedMemoryMetrics (line 64) | ReferencedMemoryMetrics        MetricKind = "referenced_memory"
  constant CPUTopologyMetrics (line 65) | CPUTopologyMetrics             MetricKind = "cpu_topology"
  constant ResctrlMetrics (line 66) | ResctrlMetrics                 MetricKind = "resctrl"
  constant CPUSetMetrics (line 67) | CPUSetMetrics                  MetricKind = "cpuset"
  constant OOMMetrics (line 68) | OOMMetrics                     MetricKind = "oom_event"
  constant PressureMetrics (line 69) | PressureMetrics                MetricKind = "pressure"
  type MetricSet (line 110) | type MetricSet
    method Has (line 112) | func (ms MetricSet) Has(mk MetricKind) bool {
    method HasAny (line 117) | func (ms MetricSet) HasAny(ms1 MetricSet) bool {
    method add (line 126) | func (ms MetricSet) add(mk MetricKind) {
    method String (line 130) | func (ms MetricSet) String() string {
    method Set (line 140) | func (ms *MetricSet) Set(value string) error {
    method Difference (line 155) | func (ms MetricSet) Difference(ms1 MetricSet) MetricSet {
    method Append (line 165) | func (ms MetricSet) Append(ms1 MetricSet) MetricSet {
  type Plugin (line 179) | type Plugin interface
  function RegisterPlugin (line 189) | func RegisterPlugin(name string, plugin Plugin) error {
  function InitializeFSContext (line 199) | func InitializeFSContext(context *fs.Context) error {
  function InitializePlugins (line 212) | func InitializePlugins(factory info.MachineInfoFactory, fsInfo fs.FsInfo...
  function RegisterContainerHandlerFactory (line 240) | func RegisterContainerHandlerFactory(factory ContainerHandlerFactory, wa...
  function HasFactories (line 250) | func HasFactories() bool {
  function NewContainerHandler (line 258) | func NewContainerHandler(name string, watchType watcher.ContainerWatchSo...
  function ClearContainerHandlerFactories (line 287) | func ClearContainerHandlerFactories() {
  function DebugInfo (line 294) | func DebugInfo() map[string][]string {
  function GetReorderedFactoryList (line 312) | func GetReorderedFactoryList(watchType watcher.ContainerWatchSource) []C...

FILE: container/factory_test.go
  type mockContainerHandlerFactory (line 27) | type mockContainerHandlerFactory struct
    method String (line 34) | func (f *mockContainerHandlerFactory) String() string {
    method DebugInfo (line 38) | func (f *mockContainerHandlerFactory) DebugInfo() map[string][]string {
    method CanHandleAndAccept (line 42) | func (f *mockContainerHandlerFactory) CanHandleAndAccept(name string) ...
    method NewContainerHandler (line 46) | func (f *mockContainerHandlerFactory) NewContainerHandler(name string,...
  constant testContainerName (line 51) | testContainerName = "/test"
  function TestNewContainerHandler_FirstMatches (line 57) | func TestNewContainerHandler_FirstMatches(t *testing.T) {
  function TestNewContainerHandler_SecondMatches (line 84) | func TestNewContainerHandler_SecondMatches(t *testing.T) {
  function TestNewContainerHandler_NoneMatch (line 117) | func TestNewContainerHandler_NoneMatch(t *testing.T) {
  function TestNewContainerHandler_Accept (line 140) | func TestNewContainerHandler_Accept(t *testing.T) {
  function TestRawContainerHandler_Last (line 166) | func TestRawContainerHandler_Last(t *testing.T) {

FILE: container/libcontainer/handler.go
  type Handler (line 52) | type Handler struct
    method GetStats (line 75) | func (h *Handler) GetStats() (*info.ContainerStats, error) {
    method schedulerStatsFromProcs (line 313) | func (h *Handler) schedulerStatsFromProcs() (info.CpuSchedstat, error) {
    method GetProcesses (line 760) | func (h *Handler) GetProcesses() ([]int, error) {
  function NewHandler (line 64) | func NewHandler(cgroupManager cgroups.Manager, rootFs string, pid int, i...
  function parseUlimit (line 191) | func parseUlimit(value string) (int64, error) {
  function processLimitsFile (line 205) | func processLimitsFile(fileData string) []info.UlimitSpec {
  function processMaxOpenFileLimitLine (line 228) | func processMaxOpenFileLimitLine(name, line string) (info.UlimitSpec, er...
  function processRootProcUlimits (line 252) | func processRootProcUlimits(rootFs string, rootPid int) []info.UlimitSpec {
  function processStatsFromProcs (line 262) | func processStatsFromProcs(rootFs string, cgroupPath string, rootPid int...
  function referencedBytesStat (line 374) | func referencedBytesStat(pids []int, cycles uint64, resetInterval uint64...
  function getReferencedKBytes (line 387) | func getReferencedKBytes(pids []int) (uint64, error) {
  function clearReferencedBytes (line 432) | func clearReferencedBytes(pids []int, cycles uint64, resetInterval uint6...
  function networkStatsFromProc (line 458) | func networkStatsFromProc(rootFs string, pid int) ([]info.InterfaceStats...
  function isIgnoredDevice (line 471) | func isIgnoredDevice(ifName string) bool {
  function scanInterfaceStats (line 480) | func scanInterfaceStats(netStatsFile string) ([]info.InterfaceStats, err...
  function setInterfaceStatValues (line 534) | func setInterfaceStatValues(fields []string, pointers []*uint64) error {
  function tcpStatsFromProc (line 545) | func tcpStatsFromProc(rootFs string, pid int, file string) (info.TcpStat...
  function advancedTCPStatsFromProc (line 556) | func advancedTCPStatsFromProc(rootFs string, pid int, file1, file2 strin...
  function scanAdvancedTCPStats (line 575) | func scanAdvancedTCPStats(advancedStats *info.TcpAdvancedStat, advancedT...
  function scanTCPStats (line 629) | func scanTCPStats(tcpStatsFile string) (info.TcpStat, error) {
  function udpStatsFromProc (line 692) | func udpStatsFromProc(rootFs string, pid int, file string) (info.UdpStat...
  function scanUDPStats (line 711) | func scanUDPStats(r io.Reader) (info.UdpStat, error) {
  function setCPUStats (line 769) | func setCPUStats(s *cgroups.Stats, ret *info.ContainerStats, withPerCPU ...
  function setDiskIoStats (line 791) | func setDiskIoStats(s *cgroups.Stats, ret *info.ContainerStats) {
  function setMemoryStats (line 807) | func setMemoryStats(s *cgroups.Stats, ret *info.ContainerStats) {
  function setCPUSetStats (line 865) | func setCPUSetStats(s *cgroups.Stats, ret *info.ContainerStats) {
  function getNumaStats (line 869) | func getNumaStats(memoryStats map[uint8]uint64) map[uint8]uint64 {
  function setMemoryNumaStats (line 877) | func setMemoryNumaStats(s *cgroups.Stats, ret *info.ContainerStats) {
  function setHugepageStats (line 887) | func setHugepageStats(s *cgroups.Stats, ret *info.ContainerStats) {
  function setPSIData (line 898) | func setPSIData(d *cgroups.PSIData, ret *info.PSIData) {
  function setPSIStats (line 907) | func setPSIStats(s *cgroups.PSIStats, ret *info.PSIStats) {
  function setThreadsStats (line 915) | func setThreadsStats(s *cgroups.Stats, ret *info.ContainerStats) {
  function newContainerStats (line 922) | func newContainerStats(cgroupStats *cgroups.Stats, includedMetrics conta...

FILE: container/libcontainer/handler_test.go
  function TestScanInterfaceStats (line 30) | func TestScanInterfaceStats(t *testing.T) {
  function TestScanUDPStats (line 72) | func TestScanUDPStats(t *testing.T) {
  constant nanosecondsInSeconds (line 97) | nanosecondsInSeconds = 1000000000
  constant clockTicks (line 100) | clockTicks = 100
  function TestSetCPUStats (line 102) | func TestSetCPUStats(t *testing.T) {
  function TestSetProcessesStats (line 164) | func TestSetProcessesStats(t *testing.T) {
  function TestParseLimitsFile (line 204) | func TestParseLimitsFile(t *testing.T) {
  function TestReferencedBytesStat (line 243) | func TestReferencedBytesStat(t *testing.T) {
  function TestReferencedBytesStatWhenNeverCleared (line 265) | func TestReferencedBytesStatWhenNeverCleared(t *testing.T) {
  function TestReferencedBytesStatWhenResetIsNeeded (line 287) | func TestReferencedBytesStatWhenResetIsNeeded(t *testing.T) {
  function TestGetReferencedKBytesWhenSmapsMissing (line 311) | func TestGetReferencedKBytesWhenSmapsMissing(t *testing.T) {
  function TestClearReferencedBytesWhenClearRefsMissing (line 321) | func TestClearReferencedBytesWhenClearRefsMissing(t *testing.T) {
  function BenchmarkProcessLimitsFile (line 332) | func BenchmarkProcessLimitsFile(b *testing.B) {
  function TestProcessMaxOpenFileLimitLine (line 345) | func TestProcessMaxOpenFileLimitLine(t *testing.T) {

FILE: container/libcontainer/helpers.go
  function GetCgroupSubsystems (line 41) | func GetCgroupSubsystems(includedMetrics container.MetricSet) (map[strin...
  function getCgroupSubsystemsHelper (line 54) | func getCgroupSubsystemsHelper(allCgroups []cgroups.Mount, includedMetri...
  function needSubsys (line 94) | func needSubsys(name string, metrics container.MetricSet) bool {
  function diskStatsCopy0 (line 108) | func diskStatsCopy0(major, minor uint64) *info.PerDiskStats {
  type diskKey (line 117) | type diskKey struct
  function diskStatsCopy1 (line 122) | func diskStatsCopy1(diskStat map[diskKey]*info.PerDiskStats) []info.PerD...
  function diskStatsCopy (line 132) | func diskStatsCopy(blkioStats []cgroups.BlkioStatEntry) (stat []info.Per...
  function NewCgroupManager (line 158) | func NewCgroupManager(name string, paths map[string]string) (cgroups.Man...

FILE: container/libcontainer/helpers_test.go
  function cgroupMountsAt (line 34) | func cgroupMountsAt(path string, subsystems []string) []cgroups.Mount {
  function TestGetCgroupSubsystems (line 46) | func TestGetCgroupSubsystems(t *testing.T) {
  function getFileContent (line 111) | func getFileContent(t *testing.T, filePath string) string {
  function clearTestData (line 117) | func clearTestData(t *testing.T, clearRefsPaths []string) {

FILE: container/podman/client.go
  type clientKey (line 27) | type clientKey struct
    method String (line 29) | func (c clientKey) String() string {
  type Connection (line 33) | type Connection struct
  function client (line 38) | func client(ctx *context.Context) (*Connection, error) {

FILE: container/podman/factory.go
  constant rootDirRetries (line 36) | rootDirRetries     = 5
  constant rootDirRetryPeriod (line 37) | rootDirRetryPeriod = time.Second
  constant containerBaseName (line 38) | containerBaseName  = "container"
  function RootDir (line 50) | func RootDir() string {
  type podmanFactory (line 65) | type podmanFactory struct
    method CanHandleAndAccept (line 84) | func (f *podmanFactory) CanHandleAndAccept(name string) (handle bool, ...
    method DebugInfo (line 105) | func (f *podmanFactory) DebugInfo() map[string][]string {
    method String (line 109) | func (f *podmanFactory) String() string {
    method NewContainerHandler (line 113) | func (f *podmanFactory) NewContainerHandler(name string, metadataEnvAl...

FILE: container/podman/fs.go
  type containersJSON (line 33) | type containersJSON struct
  function rwLayerID (line 39) | func rwLayerID(storageDriver docker.StorageDriver, storageDir string, co...

FILE: container/podman/handler.go
  type containerHandler (line 42) | type containerHandler struct
    method ContainerReference (line 250) | func (h *containerHandler) ContainerReference() (info.ContainerReferen...
    method needNet (line 254) | func (h *containerHandler) needNet() bool {
    method GetSpec (line 262) | func (h *containerHandler) GetSpec() (info.ContainerSpec, error) {
    method GetStats (line 279) | func (h *containerHandler) GetStats() (*info.ContainerStats, error) {
    method ListContainers (line 299) | func (h *containerHandler) ListContainers(container.ListType) ([]info....
    method ListProcesses (line 303) | func (h *containerHandler) ListProcesses(container.ListType) ([]int, e...
    method GetCgroupPath (line 307) | func (h *containerHandler) GetCgroupPath(resource string) (string, err...
    method GetContainerLabels (line 320) | func (h *containerHandler) GetContainerLabels() map[string]string {
    method GetContainerIPAddress (line 324) | func (h *containerHandler) GetContainerIPAddress() string {
    method Exists (line 328) | func (h *containerHandler) Exists() bool {
    method Cleanup (line 332) | func (h *containerHandler) Cleanup() {
    method Start (line 338) | func (h *containerHandler) Start() {
    method Type (line 344) | func (h *containerHandler) Type() container.ContainerType {
    method GetExitCode (line 348) | func (h *containerHandler) GetExitCode() (int, error) {
  function newContainerHandler (line 90) | func newContainerHandler(
  function determineDeviceStorage (line 238) | func determineDeviceStorage(storageDriver docker.StorageDriver, storageD...

FILE: container/podman/install/install.go
  function init (line 26) | func init() {

FILE: container/podman/plugin.go
  function NewPlugin (line 36) | func NewPlugin() container.Plugin {
  type plugin (line 40) | type plugin struct
    method InitializeFSContext (line 42) | func (p *plugin) InitializeFSContext(context *fs.Context) error {
    method Register (line 52) | func (p *plugin) Register(factory info.MachineInfoFactory, fsInfo fs.F...
  function Register (line 56) | func Register(factory info.MachineInfoFactory, fsInfo fs.FsInfo, metrics...

FILE: container/podman/podman.go
  constant Namespace (line 37) | Namespace = "podman"
  function validateResponse (line 42) | func validateResponse(gotError error, response *http.Response) error {
  function apiGetRequest (line 62) | func apiGetRequest(url string, item interface{}) error {
  function Images (line 97) | func Images() ([]v1.DockerImage, error) {
  function Status (line 106) | func Status() (v1.DockerStatus, error) {
  function GetInfo (line 134) | func GetInfo() (*dockersystem.Info, error) {
  function VersionString (line 140) | func VersionString() (string, error) {
  function APIVersionString (line 150) | func APIVersionString() (string, error) {
  function InspectContainer (line 160) | func InspectContainer(id string) (dockercontainer.InspectResponse, error) {

FILE: container/podman/podman_test.go
  function TestValidateResponse (line 27) | func TestValidateResponse(t *testing.T) {

FILE: container/raw/factory.go
  type rawFactory (line 39) | type rawFactory struct
    method String (line 59) | func (f *rawFactory) String() string {
    method NewContainerHandler (line 63) | func (f *rawFactory) NewContainerHandler(name string, metadataEnvAllow...
    method CanHandleAndAccept (line 72) | func (f *rawFactory) CanHandleAndAccept(name string) (bool, bool, erro...
    method DebugInfo (line 87) | func (f *rawFactory) DebugInfo() map[string][]string {
  function Register (line 91) | func Register(machineInfoFactory info.MachineInfoFactory, fsInfo fs.FsIn...

FILE: container/raw/handler.go
  type rawContainerHandler (line 34) | type rawContainerHandler struct
    method ContainerReference (line 96) | func (h *rawContainerHandler) ContainerReference() (info.ContainerRefe...
    method GetRootNetworkDevices (line 103) | func (h *rawContainerHandler) GetRootNetworkDevices() ([]info.NetInfo,...
    method Start (line 116) | func (h *rawContainerHandler) Start() {}
    method Cleanup (line 119) | func (h *rawContainerHandler) Cleanup() {}
    method GetSpec (line 121) | func (h *rawContainerHandler) GetSpec() (info.ContainerSpec, error) {
    method getFsStats (line 190) | func (h *rawContainerHandler) getFsStats(stats *info.ContainerStats) e...
    method GetStats (line 231) | func (h *rawContainerHandler) GetStats() (*info.ContainerStats, error) {
    method GetCgroupPath (line 249) | func (h *rawContainerHandler) GetCgroupPath(resource string) (string, ...
    method GetContainerLabels (line 261) | func (h *rawContainerHandler) GetContainerLabels() map[string]string {
    method GetContainerIPAddress (line 265) | func (h *rawContainerHandler) GetContainerIPAddress() string {
    method ListContainers (line 270) | func (h *rawContainerHandler) ListContainers(listType container.ListTy...
    method ListProcesses (line 274) | func (h *rawContainerHandler) ListProcesses(listType container.ListTyp...
    method Exists (line 278) | func (h *rawContainerHandler) Exists() bool {
    method Type (line 282) | func (h *rawContainerHandler) Type() container.ContainerType {
    method GetExitCode (line 286) | func (h *rawContainerHandler) GetExitCode() (int, error) {
  function isRootCgroup (line 50) | func isRootCgroup(name string) bool {
  function newRawContainerHandler (line 54) | func newRawContainerHandler(name string, cgroupSubsystems map[string]str...
  function fsToFsStats (line 159) | func fsToFsStats(fs *fs.Fs) info.FsStats {
  type fsNamer (line 290) | type fsNamer struct
    method DeviceName (line 296) | func (n *fsNamer) DeviceName(major, minor uint64) (string, bool) {

FILE: container/raw/handler_test.go
  function TestFsToFsStats (line 32) | func TestFsToFsStats(t *testing.T) {
  function TestGetFsStats (line 134) | func TestGetFsStats(t *testing.T) {
  type fsInfo (line 548) | type fsInfo struct
    method GetGlobalFsInfo (line 553) | func (f fsInfo) GetGlobalFsInfo() ([]fs.Fs, error) {
    method GetFsInfoForPath (line 557) | func (f fsInfo) GetFsInfoForPath(mountSet map[string]struct{}) ([]fs.F...
    method GetDirUsage (line 561) | func (f fsInfo) GetDirUsage(_ string) (fs.UsageInfo, error) {
    method GetDeviceInfoByFsUUID (line 565) | func (f fsInfo) GetDeviceInfoByFsUUID(_ string) (*fs.DeviceInfo, error) {
    method GetDirFsDevice (line 569) | func (f fsInfo) GetDirFsDevice(_ string) (*fs.DeviceInfo, error) {
    method GetDeviceForLabel (line 573) | func (f fsInfo) GetDeviceForLabel(_ string) (string, error) {
    method GetLabelsForDevice (line 577) | func (f fsInfo) GetLabelsForDevice(_ string) ([]string, error) {
    method GetMountpointForDevice (line 581) | func (f fsInfo) GetMountpointForDevice(_ string) (string, error) {
  type machineInfo (line 585) | type machineInfo struct
    method GetMachineInfo (line 587) | func (m machineInfo) GetMachineInfo() (*info.MachineInfo, error) {
    method GetVersionInfo (line 604) | func (m machineInfo) GetVersionInfo() (*info.VersionInfo, error) {

FILE: container/raw/watcher.go
  type rawContainerWatcher (line 37) | type rawContainerWatcher struct
    method Start (line 71) | func (w *rawContainerWatcher) Start(events chan watcher.ContainerEvent...
    method Stop (line 112) | func (w *rawContainerWatcher) Stop() error {
    method watchDirectory (line 120) | func (w *rawContainerWatcher) watchDirectory(events chan watcher.Conta...
    method processEvent (line 179) | func (w *rawContainerWatcher) processEvent(event *inotify.Event, event...
  function NewRawContainerWatcher (line 48) | func NewRawContainerWatcher(includedMetrics container.MetricSet) (watche...

FILE: container/systemd/factory.go
  type systemdFactory (line 29) | type systemdFactory struct
    method String (line 31) | func (f *systemdFactory) String() string {
    method NewContainerHandler (line 35) | func (f *systemdFactory) NewContainerHandler(name string, metadataEnvA...
    method CanHandleAndAccept (line 39) | func (f *systemdFactory) CanHandleAndAccept(name string) (bool, bool, ...
    method DebugInfo (line 49) | func (f *systemdFactory) DebugInfo() map[string][]string {
  function Register (line 54) | func Register(machineInfoFactory info.MachineInfoFactory, fsInfo fs.FsIn...

FILE: container/systemd/install/install.go
  function init (line 25) | func init() {

FILE: container/systemd/plugin.go
  function NewPlugin (line 25) | func NewPlugin() container.Plugin {
  type plugin (line 29) | type plugin struct
    method InitializeFSContext (line 31) | func (p *plugin) InitializeFSContext(context *fs.Context) error {
    method Register (line 35) | func (p *plugin) Register(factory info.MachineInfoFactory, fsInfo fs.F...

FILE: container/testing/mock_handler.go
  type MockContainerHandler (line 25) | type MockContainerHandler struct
    method ContainerReference (line 39) | func (h *MockContainerHandler) ContainerReference() (info.ContainerRef...
    method Start (line 55) | func (h *MockContainerHandler) Start() {}
    method Cleanup (line 57) | func (h *MockContainerHandler) Cleanup() {}
    method GetSpec (line 59) | func (h *MockContainerHandler) GetSpec() (info.ContainerSpec, error) {
    method GetStats (line 64) | func (h *MockContainerHandler) GetStats() (*info.ContainerStats, error) {
    method ListContainers (line 69) | func (h *MockContainerHandler) ListContainers(listType container.ListT...
    method ListProcesses (line 74) | func (h *MockContainerHandler) ListProcesses(listType container.ListTy...
    method Exists (line 79) | func (h *MockContainerHandler) Exists() bool {
    method GetCgroupPath (line 84) | func (h *MockContainerHandler) GetCgroupPath(path string) (string, err...
    method GetContainerLabels (line 89) | func (h *MockContainerHandler) GetContainerLabels() map[string]string {
    method Type (line 94) | func (h *MockContainerHandler) Type() container.ContainerType {
    method GetContainerIPAddress (line 99) | func (h *MockContainerHandler) GetContainerIPAddress() string {
    method GetExitCode (line 104) | func (h *MockContainerHandler) GetExitCode() (int, error) {
  function NewMockContainerHandler (line 31) | func NewMockContainerHandler(containerName string) *MockContainerHandler {
  type FactoryForMockContainerHandler (line 109) | type FactoryForMockContainerHandler struct
    method String (line 114) | func (h *FactoryForMockContainerHandler) String() string {
    method NewContainerHandler (line 118) | func (h *FactoryForMockContainerHandler) NewContainerHandler(name stri...
    method CanHandle (line 126) | func (h *FactoryForMockContainerHandler) CanHandle(name string) bool {

FILE: devicemapper/dmsetup_client.go
  type DmsetupClient (line 27) | type DmsetupClient interface
  function NewDmsetupClient (line 40) | func NewDmsetupClient() DmsetupClient {
  type defaultDmsetupClient (line 45) | type defaultDmsetupClient struct
    method Table (line 49) | func (c *defaultDmsetupClient) Table(deviceName string) ([]byte, error) {
    method Message (line 53) | func (c *defaultDmsetupClient) Message(deviceName string, sector int, ...
    method Status (line 57) | func (c *defaultDmsetupClient) Status(deviceName string) ([]byte, erro...
    method dmsetup (line 61) | func (*defaultDmsetupClient) dmsetup(args ...string) ([]byte, error) {

FILE: devicemapper/fake/dmsetup_client_fake.go
  type DmsetupCommand (line 21) | type DmsetupCommand struct
  function NewFakeDmsetupClient (line 28) | func NewFakeDmsetupClient(t *testing.T, commands ...DmsetupCommand) *Fak...
  type FakeDmsetupClient (line 37) | type FakeDmsetupClient struct
    method Table (line 42) | func (c *FakeDmsetupClient) Table(deviceName string) ([]byte, error) {
    method Message (line 46) | func (c *FakeDmsetupClient) Message(deviceName string, sector int, mes...
    method Status (line 50) | func (c *FakeDmsetupClient) Status(deviceName string) ([]byte, error) {
    method AddCommand (line 54) | func (c *FakeDmsetupClient) AddCommand(name string, result string, err...
    method dmsetup (line 58) | func (c *FakeDmsetupClient) dmsetup(inputCommand string) ([]byte, erro...

FILE: devicemapper/fake/thin_ls_client_fake.go
  type FakeThinLsClient (line 17) | type FakeThinLsClient struct
    method ThinLs (line 27) | func (c *FakeThinLsClient) ThinLs(deviceName string) (map[string]uint6...
  function NewFakeThinLsClient (line 23) | func NewFakeThinLsClient(result map[string]uint64, err error) *FakeThinL...

FILE: devicemapper/thin_ls_client.go
  type thinLsClient (line 30) | type thinLsClient interface
  function newThinLsClient (line 39) | func newThinLsClient() (thinLsClient, error) {
  type defaultThinLsClient (line 49) | type defaultThinLsClient struct
    method ThinLs (line 55) | func (c *defaultThinLsClient) ThinLs(deviceName string) (map[string]ui...
  function parseThinLsOutput (line 69) | func parseThinLsOutput(output []byte) map[string]uint64 {

FILE: devicemapper/thin_ls_client_test.go
  function TestParseThinLsOutput (line 22) | func TestParseThinLsOutput(t *testing.T) {

FILE: devicemapper/thin_pool_watcher.go
  type usageCache (line 29) | type usageCache struct
    method Load (line 34) | func (c *usageCache) Load() map[string]uint64 {
    method Store (line 39) | func (c *usageCache) Store(m map[string]uint64) {
  type ThinPoolWatcher (line 45) | type ThinPoolWatcher struct
    method Start (line 76) | func (w *ThinPoolWatcher) Start() {
    method Stop (line 101) | func (w *ThinPoolWatcher) Stop() {
    method GetUsage (line 106) | func (w *ThinPoolWatcher) GetUsage(deviceID string) (uint64, error) {
    method Refresh (line 122) | func (w *ThinPoolWatcher) Refresh() error {
    method checkReservation (line 173) | func (w *ThinPoolWatcher) checkReservation(poolName string) (bool, err...
  function NewThinPoolWatcher (line 57) | func NewThinPoolWatcher(poolName, metadataDevice string) (*ThinPoolWatch...
  constant reserveMetadataMessage (line 116) | reserveMetadataMessage = "reserve_metadata_snap"
  constant releaseMetadataMessage (line 117) | releaseMetadataMessage = "release_metadata_snap"
  constant thinPoolDmsetupStatusHeldMetadataRoot (line 167) | thinPoolDmsetupStatusHeldMetadataRoot = 6
  constant thinPoolDmsetupStatusMinFields (line 168) | thinPoolDmsetupStatusMinFields        = thinPoolDmsetupStatusHeldMetadat...

FILE: devicemapper/thin_pool_watcher_test.go
  function TestRefresh (line 25) | func TestRefresh(t *testing.T) {
  function TestCheckReservation (line 163) | func TestCheckReservation(t *testing.T) {

FILE: devicemapper/util.go
  function ThinLsBinaryPresent (line 33) | func ThinLsBinaryPresent() (string, error) {

FILE: events/handler.go
  type byTimestamp (line 30) | type byTimestamp
    method Len (line 33) | func (e byTimestamp) Len() int {
    method Swap (line 37) | func (e byTimestamp) Swap(i, j int) {
    method Less (line 41) | func (e byTimestamp) Less(i, j int) bool {
  type EventChannel (line 45) | type EventChannel struct
    method GetChannel (line 176) | func (ch *EventChannel) GetChannel() chan *info.Event {
    method GetWatchId (line 180) | func (ch *EventChannel) GetWatchId() int {
  type Request (line 56) | type Request struct
  type EventManager (line 79) | type EventManager interface
  type events (line 93) | type events struct
    method GetEvents (line 234) | func (e *events) GetEvents(request *Request) ([]*info.Event, error) {
    method WatchEvents (line 264) | func (e *events) WatchEvents(request *Request) (*EventChannel, error) {
    method updateEventStore (line 280) | func (e *events) updateEventStore(event *info.Event) {
    method findValidWatchers (line 303) | func (e *events) findValidWatchers(event *info.Event) []*watch {
    method AddEvent (line 317) | func (e *events) AddEvent(event *info.Event) error {
    method StopWatch (line 330) | func (e *events) StopWatch(watchID int) {
  type watch (line 114) | type watch struct
  function NewEventChannel (line 121) | func NewEventChannel(watchID int) *EventChannel {
  type StoragePolicy (line 131) | type StoragePolicy struct
  function DefaultStoragePolicy (line 141) | func DefaultStoragePolicy() StoragePolicy {
  function NewEventManager (line 151) | func NewEventManager(storagePolicy StoragePolicy) EventManager {
  function NewRequest (line 160) | func NewRequest() *Request {
  function newWatch (line 169) | func newWatch(request *Request, eventChannel *EventChannel) *watch {
  function getMaxEventsReturned (line 185) | func getMaxEventsReturned(request *Request, eSlice []*info.Event) []*inf...
  function isSubcontainer (line 198) | func isSubcontainer(request *Request, event *info.Event) bool {
  function checkIfEventSatisfiesRequest (line 206) | func checkIfEventSatisfiesRequest(request *Request, event *info.Event) b...

FILE: events/handler_test.go
  function createOldTime (line 26) | func createOldTime(t *testing.T) time.Time {
  function makeEvent (line 38) | func makeEvent(inTime time.Time, containerName string) *info.Event {
  function initializeScenario (line 47) | func initializeScenario(t *testing.T) (EventManager, *Request, *info.Eve...
  function TestIsSubcontainer (line 55) | func TestIsSubcontainer(t *testing.T) {
  function TestWatchEventsDetectsNewEvents (line 105) | func TestWatchEventsDetectsNewEvents(t *testing.T) {
  function TestAddEventAddsEventsToEventManager (line 138) | func TestAddEventAddsEventsToEventManager(t *testing.T) {
  function TestGetEventsForOneEvent (line 154) | func TestGetEventsForOneEvent(t *testing.T) {
  function TestGetEventsForTimePeriod (line 170) | func TestGetEventsForTimePeriod(t *testing.T) {
  function TestGetEventsForNoTypeRequested (line 187) | func TestGetEventsForNoTypeRequested(t *testing.T) {

FILE: fs/btrfs/install/install.go
  function init (line 26) | func init() {

FILE: fs/btrfs/mount.go
  function major (line 28) | func major(devNumber uint64) uint {
  function minor (line 33) | func minor(devNumber uint64) uint {
  function GetBtrfsMajorMinorIds (line 40) | func GetBtrfsMajorMinorIds(mnt *mount.Info) (int, int, error) {

FILE: fs/btrfs/plugin.go
  type btrfsPlugin (line 29) | type btrfsPlugin struct
    method Name (line 36) | func (p *btrfsPlugin) Name() string {
    method CanHandle (line 41) | func (p *btrfsPlugin) CanHandle(fsType string) bool {
    method Priority (line 46) | func (p *btrfsPlugin) Priority() int {
    method GetStats (line 52) | func (p *btrfsPlugin) GetStats(device string, partition fs.PartitionIn...
    method ProcessMount (line 72) | func (p *btrfsPlugin) ProcessMount(mnt *mount.Info) (bool, *mount.Info...
  function NewPlugin (line 32) | func NewPlugin() fs.FsPlugin {

FILE: fs/devicemapper/install/install.go
  function init (line 24) | func init() {

FILE: fs/devicemapper/plugin.go
  type dmPlugin (line 24) | type dmPlugin struct
    method Name (line 31) | func (p *dmPlugin) Name() string {
    method CanHandle (line 36) | func (p *dmPlugin) CanHandle(fsType string) bool {
    method Priority (line 41) | func (p *dmPlugin) Priority() int {
    method GetStats (line 46) | func (p *dmPlugin) GetStats(device string, partition fs.PartitionInfo)...
    method ProcessMount (line 64) | func (p *dmPlugin) ProcessMount(mnt *mount.Info) (bool, *mount.Info, e...
  function NewPlugin (line 27) | func NewPlugin() fs.FsPlugin {

FILE: fs/devicemapper/stats.go
  function GetDMStats (line 27) | func GetDMStats(poolName string, dataBlkSize uint) (uint64, uint64, uint...
  function parseDMStatus (line 46) | func parseDMStatus(dmStatus string) (uint64, uint64, error) {
  function ParseDMTable (line 68) | func ParseDMTable(dmTable string) (uint, uint, uint, error) {
  function DockerDMDevice (line 94) | func DockerDMDevice(driverStatus map[string]string, dmsetup dm.DmsetupCl...

FILE: fs/devicemapper/stats_test.go
  function TestParseDMStatus (line 32) | func TestParseDMStatus(t *testing.T) {
  function TestParseDMTable (line 59) | func TestParseDMTable(t *testing.T) {

FILE: fs/fs.go
  constant LabelSystemRoot (line 40) | LabelSystemRoot          = "root"
  constant LabelDockerImages (line 41) | LabelDockerImages        = "docker-images"
  constant LabelCrioImages (line 42) | LabelCrioImages          = "crio-images"
  constant LabelCrioContainers (line 43) | LabelCrioContainers      = "crio-containers"
  constant DriverStatusPoolName (line 44) | DriverStatusPoolName     = "Pool Name"
  constant DriverStatusDataLoopFile (line 45) | DriverStatusDataLoopFile = "Data loop file"
  constant statBlockSize (line 50) | statBlockSize uint64 = 512
  constant maxConcurrentOps (line 52) | maxConcurrentOps = 20
  function init (line 58) | func init() {
  function claimToken (line 64) | func claimToken() {
  function releaseToken (line 68) | func releaseToken() {
  type partition (line 72) | type partition struct
  type RealFsInfo (line 80) | type RealFsInfo struct
    method getDockerDeviceMapperInfo (line 222) | func (i *RealFsInfo) getDockerDeviceMapperInfo(context DockerContext) ...
    method addSystemRootLabel (line 246) | func (i *RealFsInfo) addSystemRootLabel(mounts []*mount.Info) {
    method addDockerImagesLabel (line 262) | func (i *RealFsInfo) addDockerImagesLabel(context Context, mounts []*m...
    method addCrioImagesLabel (line 277) | func (i *RealFsInfo) addCrioImagesLabel(context Context, mounts []*mou...
    method updateContainerImagesPath (line 339) | func (i *RealFsInfo) updateContainerImagesPath(label string, mounts []...
    method GetDeviceForLabel (line 359) | func (i *RealFsInfo) GetDeviceForLabel(label string) (string, error) {
    method GetLabelsForDevice (line 367) | func (i *RealFsInfo) GetLabelsForDevice(device string) ([]string, erro...
    method GetMountpointForDevice (line 377) | func (i *RealFsInfo) GetMountpointForDevice(dev string) (string, error) {
    method GetFsInfoForPath (line 385) | func (i *RealFsInfo) GetFsInfoForPath(mountSet map[string]struct{}) ([...
    method GetGlobalFsInfo (line 582) | func (i *RealFsInfo) GetGlobalFsInfo() ([]Fs, error) {
    method GetDeviceInfoByFsUUID (line 594) | func (i *RealFsInfo) GetDeviceInfoByFsUUID(uuid string) (*DeviceInfo, ...
    method mountInfoFromDir (line 606) | func (i *RealFsInfo) mountInfoFromDir(dir string) (*mount.Info, bool) {
    method GetDirFsDevice (line 626) | func (i *RealFsInfo) GetDirFsDevice(dir string) (*DeviceInfo, error) {
    method GetDirUsage (line 722) | func (i *RealFsInfo) GetDirUsage(dir string) (UsageInfo, error) {
  function NewFsInfo (line 94) | func NewFsInfo(context Context) (FsInfo, error) {
  function getFsUUIDToDeviceNameMap (line 139) | func getFsUUIDToDeviceNameMap() (map[string]string, error) {
  function processMounts (line 168) | func processMounts(mounts []*mount.Info, excludedMountpointPrefixes []st...
  function getDockerImagePaths (line 320) | func getDockerImagePaths(context Context) map[string]struct{} {
  function getDiskStatsMap (line 505) | func getDiskStatsMap(diskStatsFile string) (map[string]DiskStats, error) {
  function major (line 586) | func major(devNumber uint64) uint {
  function minor (line 590) | func minor(devNumber uint64) uint {
  function GetDirUsage (line 659) | func GetDirUsage(dir string) (UsageInfo, error) {
  function dockerDMDevice (line 730) | func dockerDMDevice(driverStatus map[string]string, dmsetup devicemapper...
  function parseDMTable (line 751) | func parseDMTable(dmTable string) (uint, uint, uint, error) {
  function getBtrfsMajorMinorIds (line 776) | func getBtrfsMajorMinorIds(mount *mount.Info) (int, int, error) {

FILE: fs/fs_test.go
  type testPlugin (line 33) | type testPlugin struct
    method Name (line 40) | func (p *testPlugin) Name() string                 { return p.name }
    method CanHandle (line 41) | func (p *testPlugin) CanHandle(fsType string) bool { return p.canHandl...
    method Priority (line 42) | func (p *testPlugin) Priority() int                { return p.priority }
    method GetStats (line 43) | func (p *testPlugin) GetStats(device string, partition PartitionInfo) ...
    method ProcessMount (line 46) | func (p *testPlugin) ProcessMount(mnt *mount.Info) (bool, *mount.Info,...
  function init (line 53) | func init() {
  function TestMountInfoFromDir (line 114) | func TestMountInfoFromDir(t *testing.T) {
  function TestGetDiskStatsMap (line 128) | func TestGetDiskStatsMap(t *testing.T) {
  function TestGetDiskStatsMapMajorMinorNum (line 180) | func TestGetDiskStatsMapMajorMinorNum(t *testing.T) {
  function TestFileNotExist (line 196) | func TestFileNotExist(t *testing.T) {
  function TestDirDiskUsage (line 203) | func TestDirDiskUsage(t *testing.T) {
  function TestDirInodeUsage (line 223) | func TestDirInodeUsage(t *testing.T) {
  function TestAddSystemRootLabel (line 240) | func TestAddSystemRootLabel(t *testing.T) {
  type testDmsetup (line 267) | type testDmsetup struct
    method Message (line 272) | func (*testDmsetup) Message(deviceName string, sector int, message str...
    method Status (line 276) | func (*testDmsetup) Status(deviceName string) ([]byte, error) {
    method Table (line 280) | func (t *testDmsetup) Table(poolName string) ([]byte, error) {
  function TestGetDockerDeviceMapperInfo (line 284) | func TestGetDockerDeviceMapperInfo(t *testing.T) {
  function TestAddDockerImagesLabel (line 393) | func TestAddDockerImagesLabel(t *testing.T) {
  function TestAddCrioImagesLabel (line 553) | func TestAddCrioImagesLabel(t *testing.T) {
  function TestProcessMounts (line 663) | func TestProcessMounts(t *testing.T) {

FILE: fs/nfs/install/install.go
  function init (line 26) | func init() {

FILE: fs/nfs/plugin.go
  type nfsPlugin (line 30) | type nfsPlugin struct
    method Name (line 40) | func (p *nfsPlugin) Name() string {
    method CanHandle (line 45) | func (p *nfsPlugin) CanHandle(fsType string) bool {
    method Priority (line 50) | func (p *nfsPlugin) Priority() int {
    method GetStats (line 56) | func (p *nfsPlugin) GetStats(device string, partition fs.PartitionInfo...
    method ProcessMount (line 76) | func (p *nfsPlugin) ProcessMount(mnt *mount.Info) (bool, *mount.Info, ...
    method CacheKey (line 83) | func (p *nfsPlugin) CacheKey(partition fs.PartitionInfo) string {
  function NewPlugin (line 36) | func NewPlugin() fs.FsPlugin {

FILE: fs/overlay/install/install.go
  function init (line 26) | func init() {

FILE: fs/overlay/plugin.go
  type overlayPlugin (line 28) | type overlayPlugin struct
    method Name (line 35) | func (p *overlayPlugin) Name() string {
    method CanHandle (line 40) | func (p *overlayPlugin) CanHandle(fsType string) bool {
    method Priority (line 45) | func (p *overlayPlugin) Priority() int {
    method GetStats (line 51) | func (p *overlayPlugin) GetStats(device string, partition fs.Partition...
    method ProcessMount (line 71) | func (p *overlayPlugin) ProcessMount(mnt *mount.Info) (bool, *mount.In...
  function NewPlugin (line 31) | func NewPlugin() fs.FsPlugin {

FILE: fs/plugin.go
  type FsPlugin (line 27) | type FsPlugin interface
  type FsCachingPlugin (line 50) | type FsCachingPlugin interface
  type FsWatcherPlugin (line 61) | type FsWatcherPlugin interface
  type FsWatcher (line 70) | type FsWatcher interface
  type PartitionInfo (line 79) | type PartitionInfo struct
  type FsStats (line 88) | type FsStats struct
  function RegisterPlugin (line 109) | func RegisterPlugin(name string, plugin FsPlugin) error {
  function GetPluginForFsType (line 122) | func GetPluginForFsType(fsType string) FsPlugin {
  function GetAllPlugins (line 138) | func GetAllPlugins() []FsPlugin {
  function InitializeWatchers (line 150) | func InitializeWatchers() map[string]FsWatcher {
  function StopWatchers (line 172) | func StopWatchers(watchers map[string]FsWatcher) {

FILE: fs/tmpfs/install/install.go
  function init (line 26) | func init() {

FILE: fs/tmpfs/plugin.go
  type tmpfsPlugin (line 26) | type tmpfsPlugin struct
    method Name (line 33) | func (p *tmpfsPlugin) Name() string {
    method CanHandle (line 38) | func (p *tmpfsPlugin) CanHandle(fsType string) bool {
    method Priority (line 43) | func (p *tmpfsPlugin) Priority() int {
    method GetStats (line 49) | func (p *tmpfsPlugin) GetStats(device string, partition fs.PartitionIn...
    method ProcessMount (line 69) | func (p *tmpfsPlugin) ProcessMount(mnt *mount.Info) (bool, *mount.Info...
    method AllowDuplicateSource (line 78) | func (p *tmpfsPlugin) AllowDuplicateSource() bool {
  function NewPlugin (line 29) | func NewPlugin() fs.FsPlugin {

FILE: fs/types.go
  type Context (line 21) | type Context struct
  type DockerContext (line 28) | type DockerContext struct
  type PodmanContext (line 34) | type PodmanContext struct
  type CrioContext (line 40) | type CrioContext struct
  type DeviceInfo (line 46) | type DeviceInfo struct
  type FsType (line 52) | type FsType
    method String (line 54) | func (ft FsType) String() string {
  constant ZFS (line 59) | ZFS          FsType = "zfs"
  constant DeviceMapper (line 60) | DeviceMapper FsType = "devicemapper"
  constant VFS (line 61) | VFS          FsType = "vfs"
  constant NFS (line 62) | NFS          FsType = "nfs"
  type Fs (line 65) | type Fs struct
  type DiskStats (line 76) | type DiskStats struct
  type UsageInfo (line 94) | type UsageInfo struct
  type FsInfo (line 107) | type FsInfo interface

FILE: fs/vfs/install/install.go
  function init (line 26) | func init() {

FILE: fs/vfs/plugin.go
  type vfsPlugin (line 29) | type vfsPlugin struct
    method Name (line 36) | func (p *vfsPlugin) Name() string {
    method CanHandle (line 43) | func (p *vfsPlugin) CanHandle(fsType string) bool {
    method Priority (line 67) | func (p *vfsPlugin) Priority() int {
    method GetStats (line 72) | func (p *vfsPlugin) GetStats(device string, partition fs.PartitionInfo...
    method ProcessMount (line 95) | func (p *vfsPlugin) ProcessMount(mnt *mount.Info) (bool, *mount.Info, ...
  function NewPlugin (line 32) | func NewPlugin() fs.FsPlugin {

FILE: fs/vfs/stats.go
  function GetVfsStats (line 27) | func GetVfsStats(path string) (total uint64, free uint64, avail uint64, ...

FILE: fs/zfs/install/install.go
  function init (line 24) | func init() {

FILE: fs/zfs/plugin.go
  type zfsPlugin (line 25) | type zfsPlugin struct
    method Name (line 32) | func (p *zfsPlugin) Name() string {
    method CanHandle (line 37) | func (p *zfsPlugin) CanHandle(fsType string) bool {
    method Priority (line 42) | func (p *zfsPlugin) Priority() int {
    method GetStats (line 47) | func (p *zfsPlugin) GetStats(device string, partition fs.PartitionInfo...
    method ProcessMount (line 68) | func (p *zfsPlugin) ProcessMount(mnt *mount.Info) (bool, *mount.Info, ...
  function NewPlugin (line 28) | func NewPlugin() fs.FsPlugin {

FILE: fs/zfs/stats.go
  function GetZfsStats (line 22) | func GetZfsStats(poolName string) (uint64, uint64, uint64, error) {

FILE: fs/zfs/watcher.go
  type usageCache (line 29) | type usageCache struct
    method Load (line 34) | func (c *usageCache) Load() map[string]uint64 {
    method Store (line 39) | func (c *usageCache) Store(m map[string]uint64) {
  type ZfsWatcher (line 45) | type ZfsWatcher struct
    method Start (line 64) | func (w *ZfsWatcher) Start() {
    method Stop (line 89) | func (w *ZfsWatcher) Stop() {
    method GetUsage (line 94) | func (w *ZfsWatcher) GetUsage(filesystem string) (uint64, error) {
    method Refresh (line 104) | func (w *ZfsWatcher) Refresh() error {
  function NewZfsWatcher (line 53) | func NewZfsWatcher(filesystem string) (*ZfsWatcher, error) {

FILE: info/v1/container.go
  type CpuSpec (line 22) | type CpuSpec struct
  type MemorySpec (line 30) | type MemorySpec struct
  type ProcessSpec (line 44) | type ProcessSpec struct
  type ContainerSpec (line 48) | type ContainerSpec struct
    method Eq (line 190) | func (s *ContainerSpec) Eq(b *ContainerSpec) bool {
  type ContainerReference (line 87) | type ContainerReference struct
  type ContainerReferenceSlice (line 104) | type ContainerReferenceSlice
    method Len (line 106) | func (s ContainerReferenceSlice) Len() int           { return len(s) }
    method Swap (line 107) | func (s ContainerReferenceSlice) Swap(i, j int)      { s[i], s[j] = s[...
    method Less (line 108) | func (s ContainerReferenceSlice) Less(i, j int) bool { return s[i].Nam...
  type ContainerInfoRequest (line 112) | type ContainerInfoRequest struct
    method Equals (line 133) | func (r *ContainerInfoRequest) Equals(other ContainerInfoRequest) bool {
  function DefaultContainerInfoRequest (line 127) | func DefaultContainerInfoRequest() ContainerInfoRequest {
  type ContainerInfo (line 139) | type ContainerInfo struct
    method Eq (line 158) | func (ci *ContainerInfo) Eq(b *ContainerInfo) bool {
    method StatsAfter (line 239) | func (ci *ContainerInfo) StatsAfter(ref time.Time) []*ContainerStats {
    method StatsStartTime (line 253) | func (ci *ContainerInfo) StatsStartTime() time.Time {
    method StatsEndTime (line 263) | func (ci *ContainerInfo) StatsEndTime() time.Time {
  type PSIStats (line 275) | type PSIStats struct
  type PSIData (line 282) | type PSIData struct
  type LoadStats (line 295) | type LoadStats struct
  type CpuUsage (line 313) | type CpuUsage struct
  type CpuCFS (line 332) | type CpuCFS struct
  type CpuSchedstat (line 352) | type CpuSchedstat struct
  type CpuStats (line 364) | type CpuStats struct
  type PerDiskStats (line 378) | type PerDiskStats struct
  type DiskIoStats (line 385) | type DiskIoStats struct
  type HugetlbStats (line 401) | type HugetlbStats struct
  type MemoryStats (line 410) | type MemoryStats struct
  type CPUSetStats (line 461) | type CPUSetStats struct
  type MemoryNumaStats (line 465) | type MemoryNumaStats struct
  type MemoryStatsMemoryData (line 471) | type MemoryStatsMemoryData struct
  type InterfaceStats (line 477) | type InterfaceStats struct
  type NetworkStats (line 498) | type NetworkStats struct
  type TcpStat (line 513) | type TcpStat struct
  type TcpAdvancedStat (line 538) | type TcpAdvancedStat struct
  type UdpStat (line 777) | type UdpStat struct
  type FsStats (line 791) | type FsStats struct
  type AcceleratorStats (line 875) | type AcceleratorStats struct
  type PerfStat (line 899) | type PerfStat struct
  type PerfValue (line 906) | type PerfValue struct
  type MemoryBandwidthStats (line 928) | type MemoryBandwidthStats struct
  type CacheStats (line 939) | type CacheStats struct
  type ResctrlStats (line 945) | type ResctrlStats struct
  type PerfUncoreStat (line 952) | type PerfUncoreStat struct
  type UlimitSpec (line 962) | type UlimitSpec struct
  type ProcessStats (line 968) | type ProcessStats struct
  type Health (line 988) | type Health struct
  type ContainerStats (line 993) | type ContainerStats struct
    method Eq (line 1052) | func (a *ContainerStats) Eq(b *ContainerStats) bool {
    method StatsEq (line 1060) | func (a *ContainerStats) StatsEq(b *ContainerStats) bool {
  function timeEq (line 1036) | func timeEq(t1, t2 time.Time, tolerance time.Duration) bool {
  constant timePrecision (line 1047) | timePrecision time.Duration = 10 * time.Millisecond
  type Event (line 1098) | type Event struct
  type EventType (line 1115) | type EventType
  constant EventOom (line 1118) | EventOom               EventType = "oom"
  constant EventOomKill (line 1119) | EventOomKill           EventType = "oomKill"
  constant EventContainerCreation (line 1120) | EventContainerCreation EventType = "containerCreation"
  constant EventContainerDeletion (line 1121) | EventContainerDeletion EventType = "containerDeletion"
  type EventData (line 1125) | type EventData struct
  type OomKillEventData (line 1134) | type OomKillEventData struct
  type ContainerDeletionEventData (line 1143) | type ContainerDeletionEventData struct

FILE: info/v1/container_test.go
  function TestStatsStartTime (line 22) | func TestStatsStartTime(t *testing.T) {
  function TestStatsEndTime (line 46) | func TestStatsEndTime(t *testing.T) {

FILE: info/v1/docker.go
  type DockerStatus (line 18) | type DockerStatus struct
  type DockerImage (line 32) | type DockerImage struct

FILE: info/v1/machine.go
  type FsInfo (line 19) | type FsInfo struct
  type Node (line 40) | type Node struct
    method FindCore (line 71) | func (n *Node) FindCore(id int) (bool, int) {
    method FindCoreByThread (line 82) | func (n *Node) FindCoreByThread(thread int) (bool, int) {
    method AddThread (line 93) | func (n *Node) AddThread(thread int, core int) {
    method AddNodeCache (line 110) | func (n *Node) AddNodeCache(c Cache) {
    method AddPerCoreCache (line 114) | func (n *Node) AddPerCoreCache(c Cache) {
  type Core (line 50) | type Core struct
  type Cache (line 60) | type Cache struct
  type HugePagesInfo (line 120) | type HugePagesInfo struct
  type DiskInfo (line 128) | type DiskInfo struct
  type NetInfo (line 145) | type NetInfo struct
  type CloudProvider (line 159) | type CloudProvider
  constant GCE (line 162) | GCE             CloudProvider = "GCE"
  constant AWS (line 163) | AWS             CloudProvider = "AWS"
  constant Azure (line 164) | Azure           CloudProvider = "Azure"
  constant UnknownProvider (line 165) | UnknownProvider CloudProvider = "Unknown"
  type InstanceType (line 168) | type InstanceType
  constant UnknownInstance (line 171) | UnknownInstance = "Unknown"
  type InstanceID (line 174) | type InstanceID
  constant UnNamedInstance (line 177) | UnNamedInstance InstanceID = "None"
  type MachineInfo (line 180) | type MachineInfo struct
    method Clone (line 251) | func (m *MachineInfo) Clone() *MachineInfo {
  type MemoryInfo (line 294) | type MemoryInfo struct
  type NVMInfo (line 302) | type NVMInfo struct
  type VersionInfo (line 313) | type VersionInfo struct
  type MachineInfoFactory (line 332) | type MachineInfoFactory interface

FILE: info/v1/machine_test.go
  function TestMachineInfoClone (line 25) | func TestMachineInfoClone(t *testing.T) {
  function getFakeMachineInfo (line 38) | func getFakeMachineInfo() MachineInfo {

FILE: info/v1/metric.go
  type MetricType (line 22) | type MetricType
  constant MetricGauge (line 26) | MetricGauge MetricType = "gauge"
  constant MetricCumulative (line 29) | MetricCumulative MetricType = "cumulative"
  type DataType (line 33) | type DataType
  constant IntType (line 36) | IntType   DataType = "int"
  constant FloatType (line 37) | FloatType DataType = "float"
  type MetricSpec (line 41) | type MetricSpec struct
  type MetricValBasic (line 56) | type MetricValBasic struct
  type MetricVal (line 66) | type MetricVal struct

FILE: info/v1/test/datagen.go
  function GenerateRandomStats (line 25) | func GenerateRandomStats(numStats, numCores int, duration time.Duration)...
  function GenerateRandomContainerSpec (line 57) | func GenerateRandomContainerSpec(numCores int) info.ContainerSpec {
  function GenerateRandomContainerInfo (line 72) | func GenerateRandomContainerInfo(containerName string, numCores int, que...

FILE: info/v2/container.go
  constant TypeName (line 26) | TypeName   = "name"
  constant TypeDocker (line 27) | TypeDocker = "docker"
  constant TypePodman (line 28) | TypePodman = "podman"
  type CpuSpec (line 31) | type CpuSpec struct
  type MemorySpec (line 46) | type MemorySpec struct
  type ContainerInfo (line 60) | type ContainerInfo struct
  type ContainerSpec (line 68) | type ContainerSpec struct
  type DeprecatedContainerStats (line 112) | type DeprecatedContainerStats struct
  type ContainerStats (line 156) | type ContainerStats struct
  type Percentiles (line 193) | type Percentiles struct
  type Usage (line 213) | type Usage struct
  type InstantUsage (line 225) | type InstantUsage struct
  type DerivedStats (line 232) | type DerivedStats struct
  type FsInfo (line 245) | type FsInfo struct
  type RequestOptions (line 274) | type RequestOptions struct
  type ProcessInfo (line 286) | type ProcessInfo struct
  type TcpStat (line 303) | type TcpStat struct
  type NetworkStats (line 317) | type NetworkStats struct
  type CpuInstStats (line 333) | type CpuInstStats struct
  type CpuInstUsage (line 338) | type CpuInstUsage struct
  type FilesystemStats (line 357) | type FilesystemStats struct

FILE: info/v2/conversion.go
  function machineFsStatsFromV1 (line 26) | func machineFsStatsFromV1(fsStats []v1.FsStats) []MachineFsStats {
  function MachineStatsFromV1 (line 62) | func MachineStatsFromV1(cont *v1.ContainerInfo) []MachineStats {
  function ContainerStatsFromV1 (line 100) | func ContainerStatsFromV1(containerName string, spec *v1.ContainerSpec, ...
  function DeprecatedStatsFromV1 (line 171) | func DeprecatedStatsFromV1(cont *v1.ContainerInfo) []DeprecatedContainer...
  function InstCpuStats (line 232) | func InstCpuStats(last, cur *v1.ContainerStats) (*CpuInstStats, error) {
  function ContainerSpecFromV1 (line 285) | func ContainerSpecFromV1(specV1 *v1.ContainerSpec, aliases []string, nam...

FILE: info/v2/conversion_test.go
  function TestContainerSpecFromV1 (line 33) | func TestContainerSpecFromV1(t *testing.T) {
  function TestContainerStatsFromV1 (line 110) | func TestContainerStatsFromV1(t *testing.T) {
  function TestInstCpuStats (line 293) | func TestInstCpuStats(t *testing.T) {

FILE: info/v2/machine.go
  type Attributes (line 24) | type Attributes struct
  function GetAttributes (line 78) | func GetAttributes(mi *v1.MachineInfo, vi *v1.VersionInfo) Attributes {
  type MachineStats (line 101) | type MachineStats struct
  type MachineFsStats (line 119) | type MachineFsStats struct
  type DiskStats (line 144) | type DiskStats struct

FILE: integration/framework/framework.go
  type Framework (line 40) | type Framework interface
  function New (line 76) | func New(t *testing.T) Framework {
  function getContainerdSocket (line 113) | func getContainerdSocket() string {
  constant Aufs (line 121) | Aufs         string = "aufs"
  constant Overlay (line 122) | Overlay      string = "overlay"
  constant Overlay2 (line 123) | Overlay2     string = "overlay2"
  constant DeviceMapper (line 124) | DeviceMapper string = "devicemapper"
  constant Unknown (line 125) | Unknown      string = ""
  type DockerActions (line 128) | type DockerActions interface
  type CrioActions (line 151) | type CrioActions interface
  type CrioRunArgs (line 164) | type CrioRunArgs struct
  type ContainerdActions (line 174) | type ContainerdActions interface
  type ContainerdRunArgs (line 187) | type ContainerdRunArgs struct
  type ShellActions (line 198) | type ShellActions interface
  type CadvisorActions (line 204) | type CadvisorActions interface
  type realFramework (line 210) | type realFramework struct
    method T (line 256) | func (f *realFramework) T() *testing.T {
    method Hostname (line 260) | func (f *realFramework) Hostname() HostnameInfo {
    method Shell (line 264) | func (f *realFramework) Shell() ShellActions {
    method Docker (line 268) | func (f *realFramework) Docker() DockerActions {
    method Crio (line 272) | func (f *realFramework) Crio() CrioActions {
    method Containerd (line 276) | func (f *realFramework) Containerd() ContainerdActions {
    method Cadvisor (line 280) | func (f *realFramework) Cadvisor() CadvisorActions {
    method Cleanup (line 285) | func (f *realFramework) Cleanup() {
    method Client (line 292) | func (f *realFramework) Client() *client.Client {
    method ClientV2 (line 304) | func (f *realFramework) ClientV2() *v2.Client {
  type shellActions (line 225) | type shellActions struct
    method wrapSSH (line 412) | func (a shellActions) wrapSSH(command string, args ...string) *exec.Cmd {
    method Run (line 422) | func (a shellActions) Run(command string, args ...string) (string, str...
    method RunStress (line 444) | func (a shellActions) RunStress(command string, args ...string) (strin...
  type dockerActions (line 229) | type dockerActions struct
    method RunPause (line 315) | func (a dockerActions) RunPause() string {
    method RunBusybox (line 322) | func (a dockerActions) RunBusybox(cmd ...string) string {
    method Run (line 346) | func (a dockerActions) Run(args DockerRunArgs, cmd ...string) string {
    method Version (line 360) | func (a dockerActions) Version() []string {
    method StorageDriver (line 371) | func (a dockerActions) StorageDriver() string {
    method RunStress (line 394) | func (a dockerActions) RunStress(args DockerRunArgs, cmd ...string) st...
  type crioActions (line 233) | type crioActions struct
    method RunPause (line 502) | func (a *crioActions) RunPause() string {
    method RunBusybox (line 508) | func (a *crioActions) RunBusybox(cmd ...string) string {
    method Run (line 514) | func (a *crioActions) Run(args CrioRunArgs, cmd ...string) string {
  type containerdActions (line 238) | type containerdActions struct
    method RunPause (line 608) | func (a *containerdActions) RunPause() string {
    method RunBusybox (line 614) | func (a *containerdActions) RunBusybox(cmd ...string) string {
    method Run (line 622) | func (a *containerdActions) Run(args ContainerdRunArgs, cmd ...string)...
  type HostnameInfo (line 246) | type HostnameInfo struct
    method FullHostname (line 252) | func (h HostnameInfo) FullHostname() string {
  type DockerRunArgs (line 328) | type DockerRunArgs struct
  function RetryForDuration (line 467) | func RetryForDuration(retryFunc func() error, dur time.Duration) error {
  type crioPodConfig (line 480) | type crioPodConfig struct
  type crioContainerConfig (line 490) | type crioContainerConfig struct

FILE: integration/framework/metrics.go
  type MetricsClient (line 30) | type MetricsClient struct
    method Fetch (line 46) | func (m *MetricsClient) Fetch() (string, error) {
    method FetchWithParams (line 52) | func (m *MetricsClient) FetchWithParams(params string) (string, error) {
    method Parse (line 78) | func (m *MetricsClient) Parse(metricsText string) (map[string]*dto.Met...
    method FetchAndParse (line 84) | func (m *MetricsClient) FetchAndParse() (map[string]*dto.MetricFamily,...
  function NewMetricsClient (line 36) | func NewMetricsClient(hostname HostnameInfo) *MetricsClient {
  function HasMetric (line 93) | func HasMetric(families map[string]*dto.MetricFamily, name string) bool {
  function GetMetricFamily (line 99) | func GetMetricFamily(families map[string]*dto.MetricFamily, name string)...
  function FindMetricWithLabels (line 106) | func FindMetricWithLabels(mf *dto.MetricFamily, labels map[string]string...
  function FindMetricsWithLabelSubstring (line 120) | func FindMetricsWithLabelSubstring(mf *dto.MetricFamily, labelName, subs...
  function GetGaugeValue (line 137) | func GetGaugeValue(metric *dto.Metric) float64 {
  function GetCounterValue (line 145) | func GetCounterValue(metric *dto.Metric) float64 {
  function GetLabelValue (line 154) | func GetLabelValue(metric *dto.Metric, labelName string) string {
  function ContainsLabelValue (line 168) | func ContainsLabelValue(mf *dto.MetricFamily, labelName, substring strin...
  function GetMetricType (line 183) | func GetMetricType(mf *dto.MetricFamily) string {
  function matchesLabels (line 191) | func matchesLabels(metric *dto.Metric, targetLabels map[string]string) b...
  function CountMetrics (line 208) | func CountMetrics(mf *dto.MetricFamily) int {
  function GetAllLabelValues (line 217) | func GetAllLabelValues(mf *dto.MetricFamily, labelName string) []string {

FILE: integration/runner/runner.go
  constant cadvisorBinary (line 44) | cadvisorBinary = "cadvisor"
  constant testTimeout (line 45) | testTimeout    = 15 * time.Minute
  function getAttributes (line 55) | func getAttributes(ipAddress, portStr string) (*cadvisorApi.Attributes, ...
  function RunCommand (line 76) | func RunCommand(cmd string, args ...string) error {
  function RunSshCommand (line 85) | func RunSshCommand(cmd string, args ...string) error {
  function PushAndRunTests (line 92) | func PushAndRunTests(host, testDir string) (result error) {
  function Run (line 198) | func Run() error {
  function initRetryWhitelist (line 257) | func initRetryWhitelist() {
  function main (line 282) | func main() {

FILE: integration/tests/api/containerd_test.go
  function waitForContainerdContainer (line 33) | func waitForContainerdContainer(containerID string, fm framework.Framewo...
  function containsString (line 60) | func containsString(s, substr string) bool {
  function sanityCheckContainerd (line 72) | func sanityCheckContainerd(containerID string, containerInfo info.Contai...
  function findContainerdContainer (line 78) | func findContainerdContainer(containerID string, containers []info.Conta...
  function TestContainerdContainerById (line 94) | func TestContainerdContainerById(t *testing.T) {
  function TestContainerdContainerByName (line 118) | func TestContainerdContainerByName(t *testing.T) {
  function TestGetAllContainerdContainers (line 145) | func TestGetAllContainerdContainers(t *testing.T) {
  function TestBasicContainerdContainer (line 175) | func TestBasicContainerdContainer(t *testing.T) {
  function TestContainerdContainerCpuStats (line 197) | func TestContainerdContainerCpuStats(t *testing.T) {
  function TestContainerdContainerMemoryStats (line 227) | func TestContainerdContainerMemoryStats(t *testing.T) {
  function TestContainerdContainerSpec (line 257) | func TestContainerdContainerSpec(t *testing.T) {
  function TestContainerdContainerLabels (line 282) | func TestContainerdContainerLabels(t *testing.T) {
  function TestContainerdContainerCreationTime (line 313) | func TestContainerdContainerCreationTime(t *testing.T) {
  function TestContainerdContainerDiskIoStats (line 340) | func TestContainerdContainerDiskIoStats(t *testing.T) {
  function TestContainerdContainerImageInfo (line 364) | func TestContainerdContainerImageInfo(t *testing.T) {

FILE: integration/tests/api/docker_test.go
  function sanityCheck (line 38) | func sanityCheck(alias string, containerInfo info.ContainerInfo, t *test...
  function sanityCheckV2 (line 46) | func sanityCheckV2(alias string, info v2.ContainerInfo, t *testing.T) {
  function waitForContainer (line 52) | func waitForContainer(alias string, fm framework.Framework) {
  function TestDockerContainerById (line 70) | func TestDockerContainerById(t *testing.T) {
  function TestDockerContainerByName (line 89) | func TestDockerContainerByName(t *testing.T) {
  function findContainer (line 112) | func findContainer(alias string, containers []info.ContainerInfo, t *tes...
  function TestGetAllDockerContainers (line 125) | func TestGetAllDockerContainers(t *testing.T) {
  function TestBasicDockerContainer (line 149) | func TestBasicDockerContainer(t *testing.T) {
  function TestDockerContainerSpec (line 180) | func TestDockerContainerSpec(t *testing.T) {
  function TestDockerContainerCpuStats (line 243) | func TestDockerContainerCpuStats(t *testing.T) {
  function TestDockerContainerMemoryStats (line 265) | func TestDockerContainerMemoryStats(t *testing.T) {
  function TestDockerContainerNetworkStats (line 285) | func TestDockerContainerNetworkStats(t *testing.T) {
  function TestDockerFilesystemStats (line 324) | func TestDockerFilesystemStats(t *testing.T) {
  function TestDockerHealthState (line 404) | func TestDockerHealthState(t *testing.T) {
  function TestDockerContainerRestartCount (line 436) | func TestDockerContainerRestartCount(t *testing.T) {
  function TestDockerContainerDiskIoStats (line 475) | func TestDockerContainerDiskIoStats(t *testing.T) {
  function TestDockerContainerNetworkNone (line 498) | func TestDockerContainerNetworkNone(t *testing.T) {
  function TestDockerContainerNetworkHost (line 526) | func TestDockerContainerNetworkHost(t *testing.T) {
  function TestDockerContainerSharedNetwork (line 555) | func TestDockerContainerSharedNetwork(t *testing.T) {
  function TestDockerContainerImageInfo (line 598) | func TestDockerContainerImageInfo(t *testing.T) {
  function TestDockerContainerCreationTime (line 621) | func TestDockerContainerCreationTime(t *testing.T) {

FILE: integration/tests/api/event_test.go
  function TestStreamingEventInformationIsReturned (line 30) | func TestStreamingEventInformationIsReturned(t *testing.T) {
  function waitForStaticEvent (line 69) | func waitForStaticEvent(containerID string, urlRequest string, t *testin...
  function TestContainerDeletionExitCode (line 84) | func TestContainerDeletionExitCode(t *testing.T) {

FILE: integration/tests/api/perf_test.go
  function TestPerfEvents (line 29) | func TestPerfEvents(t *testing.T) {
  function waitForContainerInfo (line 49) | func waitForContainerInfo(fm framework.Framework, containerID string) {

FILE: integration/tests/api/test_utils.go
  function init (line 30) | func init() {
  function inDelta (line 35) | func inDelta(t *testing.T, expected, actual, delta uint64, description s...
  function checkCPUStats (line 48) | func checkCPUStats(t *testing.T, stat info.CpuStats) {
  function checkMemoryStats (line 69) | func checkMemoryStats(t *testing.T, stat info.MemoryStats) {

FILE: integration/tests/common/attributes_test.go
  function TestAttributeInformationIsReturned (line 25) | func TestAttributeInformationIsReturned(t *testing.T) {

FILE: integration/tests/common/healthz_test.go
  function TestHealthzOk (line 25) | func TestHealthzOk(t *testing.T) {

FILE: integration/tests/common/machine_test.go
  function TestMachineInformationIsReturned (line 26) | func TestMachineInformationIsReturned(t *testing.T) {

FILE: integration/tests/common/machinestats_test.go
  function TestMachineStatsIsReturned (line 31) | func TestMachineStatsIsReturned(t *testing.T) {

FILE: integration/tests/crio/crio_test.go
  function waitForCrioContainer (line 35) | func waitForCrioContainer(containerID string, fm framework.Framework) {
  function contains (line 63) | func contains(s, substr string) bool {
  function findSubstring (line 67) | func findSubstring(s, substr string) bool {
  function sanityCheck (line 79) | func sanityCheck(containerID string, containerInfo info.ContainerInfo, t...
  function TestCrioContainerById (line 85) | func TestCrioContainerById(t *testing.T) {
  function TestCrioContainerByName (line 118) | func TestCrioContainerByName(t *testing.T) {
  function TestGetAllCrioContainers (line 155) | func TestGetAllCrioContainers(t *testing.T) {
  function TestBasicCrioContainer (line 192) | func TestBasicCrioContainer(t *testing.T) {
  function TestCrioContainerCpuStats (line 226) | func TestCrioContainerCpuStats(t *testing.T) {
  function TestCrioContainerMemoryStats (line 268) | func TestCrioContainerMemoryStats(t *testing.T) {
  function TestCrioContainerNetworkStats (line 313) | func TestCrioContainerNetworkStats(t *testing.T) {
  function TestCrioContainerSpec (line 370) | func TestCrioContainerSpec(t *testing.T) {
  function TestCrioContainerDeletionExitCode (line 411) | func TestCrioContainerDeletionExitCode(t *testing.T) {
  function TestCrioHealthState (line 468) | func TestCrioHealthState(t *testing.T) {
  function TestCrioFilesystemStats (line 473) | func TestCrioFilesystemStats(t *testing.T) {

FILE: integration/tests/crio/test_utils.go
  function init (line 30) | func init() {
  function inDelta (line 35) | func inDelta(t *testing.T, expected, actual, delta uint64, description s...
  function checkCPUStats (line 48) | func checkCPUStats(t *testing.T, stat info.CpuStats) {
  function checkMemoryStats (line 68) | func checkMemoryStats(t *testing.T, stat info.MemoryStats) {

FILE: integration/tests/healthz/healthz_test.go
  function TestHealthzOk (line 25) | func TestHealthzOk(t *testing.T) {

FILE: integration/tests/healthz/test_utils.go
  function init (line 19) | func init() {

FILE: integration/tests/metrics/containerd_metrics_test.go
  function waitForContainerdContainerViaAPI (line 32) | func waitForContainerdContainerViaAPI(containerID string, fm framework.F...
  function getContainerdContainerMetricID (line 61) | func getContainerdContainerMetricID(fm framework.Framework, containerID ...
  function TestContainerdContainerAppearsInMetrics (line 86) | func TestContainerdContainerAppearsInMetrics(t *testing.T) {
  function TestContainerdContainerCPUMetrics (line 103) | func TestContainerdContainerCPUMetrics(t *testing.T) {
  function TestContainerdContainerMemoryMetrics (line 139) | func TestContainerdContainerMemoryMetrics(t *testing.T) {
  function TestContainerdContainerLabelsInMetrics (line 174) | func TestContainerdContainerLabelsInMetrics(t *testing.T) {
  function TestContainerdContainerImageInMetrics (line 207) | func TestContainerdContainerImageInMetrics(t *testing.T) {
  function TestContainerdContainerStartTimeMetric (line 234) | func TestContainerdContainerStartTimeMetric(t *testing.T) {
  function TestMultipleContainerdContainersInMetrics (line 262) | func TestMultipleContainerdContainersInMetrics(t *testing.T) {
  function TestContainerdContainerDiskIOMetrics (line 298) | func TestContainerdContainerDiskIOMetrics(t *testing.T) {

FILE: integration/tests/metrics/docker_metrics_test.go
  function waitForContainerInMetrics (line 29) | func waitForContainerInMetrics(_ *testing.T, client *framework.MetricsCl...
  function TestDockerContainerAppearsInMetrics (line 54) | func TestDockerContainerAppearsInMetrics(t *testing.T) {
  function TestDockerContainerCPUMetrics (line 69) | func TestDockerContainerCPUMetrics(t *testing.T) {
  function TestDockerContainerMemoryMetrics (line 115) | func TestDockerContainerMemoryMetrics(t *testing.T) {
  function TestDockerContainerNetworkMetrics (line 167) | func TestDockerContainerNetworkMetrics(t *testing.T) {
  function TestDockerContainerLabelsInMetrics (line 207) | func TestDockerContainerLabelsInMetrics(t *testing.T) {
  function TestDockerContainerImageInMetrics (line 240) | func TestDockerContainerImageInMetrics(t *testing.T) {
  function TestDockerContainerStartTimeMetric (line 268) | func TestDockerContainerStartTimeMetric(t *testing.T) {
  function TestMultipleDockerContainersInMetrics (line 297) | func TestMultipleDockerContainersInMetrics(t *testing.T) {
  function TestDockerContainerFilesystemMetrics (line 334) | func TestDockerContainerFilesystemMetrics(t *testing.T) {
  function TestDockerContainerMemoryFailcnt (line 365) | func TestDockerContainerMemoryFailcnt(t *testing.T) {

FILE: integration/tests/metrics/prometheus_test.go
  function TestMetricsEndpointReturns200 (line 31) | func TestMetricsEndpointReturns200(t *testing.T) {
  function TestMetricsEndpointReturnsValidPrometheusFormat (line 43) | func TestMetricsEndpointReturnsValidPrometheusFormat(t *testing.T) {
  function TestCadvisorVersionInfoExists (line 55) | func TestCadvisorVersionInfoExists(t *testing.T) {
  function TestCoreCPUMetricsExist (line 80) | func TestCoreCPUMetricsExist(t *testing.T) {
  function TestCoreMemoryMetricsExist (line 107) | func TestCoreMemoryMetricsExist(t *testing.T) {
  function TestCoreNetworkMetricsExist (line 135) | func TestCoreNetworkMetricsExist(t *testing.T) {
  function TestCoreFilesystemMetricsExist (line 157) | func TestCoreFilesystemMetricsExist(t *testing.T) {
  function TestContainerSpecMetricsExist (line 177) | func TestContainerSpecMetricsExist(t *testing.T) {
  function TestMachineMetricsExist (line 197) | func TestMachineMetricsExist(t *testing.T) {
  function TestMetricsHaveCorrectTypes (line 236) | func TestMetricsHaveCorrectTypes(t *testing.T) {
  function TestMetricsHaveHelpText (line 275) | func TestMetricsHaveHelpText(t *testing.T) {
  function TestContainerLastSeenExists (line 299) | func TestContainerLastSeenExists(t *testing.T) {
  function TestRootContainerMetricsExist (line 312) | func TestRootContainerMetricsExist(t *testing.T) {
  function TestGoRuntimeMetricsExist (line 340) | func TestGoRuntimeMetricsExist(t *testing.T) {
  function TestProcessMetricsExist (line 365) | func TestProcessMetricsExist(t *testing.T) {
  function TestMetricsContainExpectedLabels (line 390) | func TestMetricsContainExpectedLabels(t *testing.T) {
  function TestDiskIOMetricsExist (line 421) | func TestDiskIOMetricsExist(t *testing.T) {
  function TestMetricsResponseContainsComments (line 450) | func TestMetricsResponseContainsComments(t *testing.T) {

FILE: machine/info.go
  constant hugepagesDirectory (line 38) | hugepagesDirectory = "/sys/kernel/mm/hugepages/"
  constant memoryControllerPath (line 39) | memoryControllerPath = "/sys/devices/system/edac/mc/"
  function getInfoFromFiles (line 44) | func getInfoFromFiles(filePaths string) string {
  function Info (line 58) | func Info(sysFs sysfs.SysFs, fsInfo fs.FsInfo, inHostNamespace bool) (*i...
  function ContainerOsVersion (line 165) | func ContainerOsVersion() string {
  function KernelVersion (line 173) | func KernelVersion() string {

FILE: machine/machine.go
  constant memTypeFileName (line 58) | memTypeFileName = "dimm_mem_type"
  constant sizeFileName (line 59) | sizeFileName = "size"
  function GetCPUVendorID (line 62) | func GetCPUVendorID(procInfo []byte) string {
  function GetPhysicalCores (line 77) | func GetPhysicalCores(procInfo []byte) int {
  function GetSockets (line 91) | func GetSockets(procInfo []byte) int {
  function GetBooks (line 105) | func GetBooks(procInfo []byte) int {
  function GetDrawers (line 122) | func GetDrawers(procInfo []byte) int {
  function GetClockSpeed (line 140) | func GetClockSpeed(procInfo []byte) (uint64, error) {
  function GetMachineMemoryCapacity (line 175) | func GetMachineMemoryCapacity() (uint64, error) {
  function GetMachineMemoryByType (line 194) | func GetMachineMemoryByType(edacPath string) (map[string]*info.MemoryInf...
  function mbToBytes (line 243) | func mbToBytes(megabytes int) int {
  function GetMachineSwapCapacity (line 249) | func GetMachineSwapCapacity() (uint64, error) {
  function GetTopology (line 263) | func GetTopology(sysFs sysfs.SysFs) ([]info.Node, int, error) {
  function parseCapacity (line 269) | func parseCapacity(b []byte, r *regexp.Regexp) (uint64, error) {
  function getUniqueMatchesCount (line 284) | func getUniqueMatchesCount(s string, r *regexp.Regexp) int {
  function getMachineArch (line 293) | func getMachineArch() string {
  function isArm32 (line 304) | func isArm32() bool {
  function isAArch64 (line 309) | func isAArch64() bool {
  function isSystemZ (line 314) | func isSystemZ() bool {
  function isRiscv64 (line 319) | func isRiscv64() bool {
  function isMips64 (line 324) | func isMips64() bool {

FILE: machine/operatingsystem_unix.go
  function getOperatingSystem (line 32) | func getOperatingSystem() (string, error) {

FILE: machine/operatingsystem_windows.go
  function getOperatingSystem (line 23) | func getOperatingSystem() (string, error) {

FILE: machine/topology_test.go
  function TestPhysicalCores (line 35) | func TestPhysicalCores(t *testing.T) {
  function TestPhysicalCoresReadingFromCpuBus (line 46) | func TestPhysicalCoresReadingFromCpuBus(t *testing.T) {
  function TestPhysicalCoresFromWrongSysFs (line 62) | func TestPhysicalCoresFromWrongSysFs(t *testing.T) {
  function TestSockets (line 78) | func TestSockets(t *testing.T) {
  function TestSocketsReadingFromCpuBus (line 89) | func TestSocketsReadingFromCpuBus(t *testing.T) {
  function TestSocketsReadingFromWrongSysFs (line 105) | func TestSocketsReadingFromWrongSysFs(t *testing.T) {
  function TestTopology (line 124) | func TestTopology(t *testing.T) {
  function TestTopologyEmptySysFs (line 251) | func TestTopologyEmptySysFs(t *testing.T) {
  function TestTopologyWithoutNodes (line 257) | func TestTopologyWithoutNodes(t *testing.T) {
  function TestTopologyWithNodesWithoutCPU (line 348) | func TestTopologyWithNodesWithoutCPU(t *testing.T) {
  function TestTopologyOnSystemZ (line 431) | func TestTopologyOnSystemZ(t *testing.T) {
  function TestMemoryInfo (line 541) | func TestMemoryInfo(t *testing.T) {
  function TestMemoryInfoOnArchThatDoNotExposeMemoryController (line 553) | func TestMemoryInfoOnArchThatDoNotExposeMemoryController(t *testing.T) {
  function TestClockSpeedOnCpuUpperCase (line 561) | func TestClockSpeedOnCpuUpperCase(t *testing.T) {
  function TestClockSpeedOnCpuLowerCase (line 576) | func TestClockSpeedOnCpuLowerCase(t *testing.T) {
  function TestGetCPUVendorID (line 591) | func TestGetCPUVendorID(t *testing.T) {

FILE: manager/container.go
  type containerInfo (line 63) | type containerInfo struct
  type atomicTime (line 72) | type atomicTime struct
    method Time (line 77) | func (t *atomicTime) Time() time.Time {
  type containerData (line 81) | type containerData struct
    method Start (line 134) | func (cd *containerData) Start() error {
    method Stop (line 139) | func (cd *containerData) Stop() error {
    method allowErrorLogging (line 155) | func (cd *containerData) allowErrorLogging() bool {
    method OnDemandHousekeeping (line 167) | func (cd *containerData) OnDemandHousekeeping(maxAge time.Duration) {
    method notifyOnDemand (line 180) | func (cd *containerData) notifyOnDemand() {
    method GetInfo (line 191) | func (cd *containerData) GetInfo(shouldUpdateSubcontainers bool) (*con...
    method DerivedStats (line 219) | func (cd *containerData) DerivedStats() (v2.DerivedStats, error) {
    method getCgroupPath (line 226) | func (cd *containerData) getCgroupPath(cgroups string) string {
    method ReadFile (line 252) | func (cd *containerData) ReadFile(filepath string, inHostNamespace boo...
    method getPsOutput (line 275) | func (cd *containerData) getPsOutput(inHostNamespace bool, format stri...
    method getContainerPids (line 292) | func (cd *containerData) getContainerPids(inHostNamespace bool) ([]str...
    method GetProcessList (line 318) | func (cd *containerData) GetProcessList(cadvisorContainer string, inHo...
    method parseProcessList (line 327) | func (cd *containerData) parseProcessList(cadvisorContainer string, in...
    method isRoot (line 358) | func (cd *containerData) isRoot() bool {
    method parsePsLine (line 362) | func (cd *containerData) parsePsLine(line, cadvisorContainer string, i...
    method nextHousekeepingInterval (line 499) | func (cd *containerData) nextHousekeepingInterval() time.Duration {
    method housekeeping (line 526) | func (cd *containerData) housekeeping() {
    method housekeepingTick (line 592) | func (cd *containerData) housekeepingTick(timer <-chan time.Time, long...
    method updateSpec (line 619) | func (cd *containerData) updateSpec() error {
    method updateLoad (line 646) | func (cd *containerData) updateLoad(newLoad uint64) {
    method updateLoadD (line 654) | func (cd *containerData) updateLoadD(newLoad uint64) {
    method updateStats (line 662) | func (cd *containerData) updateStats() error {
    method updateCustomStats (line 753) | func (cd *containerData) updateCustomStats() (map[string][]info.Metric...
    method updateSubcontainers (line 764) | func (cd *containerData) updateSubcontainers() error {
  function jitter (line 126) | func jitter(duration time.Duration, maxFactor float64) time.Duration {
  function newContainerData (line 443) | func newContainerData(containerName string, memoryCache *memory.InMemory...

FILE: manager/container_test.go
  constant containerName (line 43) | containerName        = "/container"
  constant testLongHousekeeping (line 44) | testLongHousekeeping = time.Second
  function setupContainerData (line 48) | func setupContainerData(t *testing.T, spec info.ContainerSpec) (*contain...
  function newTestContainerData (line 64) | func newTestContainerData(t *testing.T) (*containerData, *containertest....
  function TestUpdateSubcontainers (line 68) | func TestUpdateSubcontainers(t *testing.T) {
  function TestUpdateSubcontainersWithError (line 104) | func TestUpdateSubcontainersWithError(t *testing.T) {
  function TestUpdateSubcontainersWithErrorOnDeadContainer (line 117) | func TestUpdateSubcontainersWithErrorOnDeadContainer(t *testing.T) {
  function checkNumStats (line 129) | func checkNumStats(t *testing.T, memoryCache *memory.InMemoryCache, numS...
  function TestUpdateStats (line 136) | func TestUpdateStats(t *testing.T) {
  function TestUpdateSpec (line 155) | func TestUpdateSpec(t *testing.T) {
  function TestGetInfo (line 171) | func TestGetInfo(t *testing.T) {
  function TestOnDemandHousekeeping (line 217) | func TestOnDemandHousekeeping(t *testing.T) {
  function TestConcurrentOnDemandHousekeeping (line 244) | func TestConcurrentOnDemandHousekeeping(t *testing.T) {
  function TestOnDemandHousekeepingReturnsAfterStopped (line 280) | func TestOnDemandHousekeepingReturnsAfterStopped(t *testing.T) {
  function TestOnDemandHousekeepingRace (line 306) | func TestOnDemandHousekeepingRace(t *testing.T) {
  function TestParseProcessList (line 342) | func TestParseProcessList(t *testing.T) {
  function TestParsePsLine (line 480) | func TestParsePsLine(t *testing.T) {
  function TestGetCgroupPath (line 532) | func TestGetCgroupPath(t *testing.T) {

FILE: manager/manager.go
  constant DockerNamespace (line 65) | DockerNamespace = "docker"
  constant PodmanNamespace (line 66) | PodmanNamespace = "podman"
  type Manager (line 76) | type Manager interface
  function New (line 157) | func New(memoryCache *memory.InMemoryCache, sysfs sysfs.SysFs, Housekeep...
  type namespacedContainerName (line 241) | type namespacedContainerName struct
  type containerMap (line 251) | type containerMap struct
    method Load (line 256) | func (c *containerMap) Load(name namespacedContainerName) (*containerD...
    method Store (line 265) | func (c *containerMap) Store(name namespacedContainerName, data *conta...
    method Delete (line 270) | func (c *containerMap) Delete(name namespacedContainerName) {
    method Range (line 275) | func (c *containerMap) Range(f func(name namespacedContainerName, data...
  type manager (line 281) | type manager struct
    method PodmanContainer (line 307) | func (m *manager) PodmanContainer(containerName string, query *info.Co...
    method Start (line 321) | func (m *manager) Start() error {
    method Stop (line 378) | func (m *manager) Stop() error {
    method destroyCollectors (line 397) | func (m *manager) destroyCollectors() {
    method updateMachineInfo (line 408) | func (m *manager) updateMachineInfo(quit chan error) {
    method globalHousekeeping (line 430) | func (m *manager) globalHousekeeping(quit chan error) {
    method getContainerData (line 463) | func (m *manager) getContainerData(containerName string) (*containerDa...
    method GetDerivedStats (line 472) | func (m *manager) GetDerivedStats(containerName string, options v2.Req...
    method GetContainerSpec (line 489) | func (m *manager) GetContainerSpec(containerName string, options v2.Re...
    method getV2Spec (line 508) | func (m *manager) getV2Spec(cinfo *containerInfo) v2.ContainerSpec {
    method getAdjustedSpec (line 513) | func (m *manager) getAdjustedSpec(cinfo *containerInfo) info.Container...
    method GetContainerInfo (line 528) | func (m *manager) GetContainerInfo(containerName string, query *info.C...
    method GetContainerInfoV2 (line 536) | func (m *manager) GetContainerInfoV2(containerName string, options v2....
    method containerDataToContainerInfo (line 570) | func (m *manager) containerDataToContainerInfo(cont *containerData, qu...
    method getContainer (line 592) | func (m *manager) getContainer(containerName string) (*containerData, ...
    method getSubcontainers (line 600) | func (m *manager) getSubcontainers(containerName string) map[string]*c...
    method SubcontainersInfo (line 618) | func (m *manager) SubcontainersInfo(containerName string, query *info....
    method getAllNamespacedContainers (line 628) | func (m *manager) getAllNamespacedContainers(ns string) map[string]*co...
    method AllDockerContainers (line 644) | func (m *manager) AllDockerContainers(query *info.ContainerInfoRequest...
    method namespacedContainer (line 649) | func (m *manager) namespacedContainer(containerName string, ns string)...
    method DockerContainer (line 681) | func (m *manager) DockerContainer(containerName string, query *info.Co...
    method containerDataSliceToContainerInfoSlice (line 694) | func (m *manager) containerDataSliceToContainerInfoSlice(containers []...
    method GetRequestedContainersInfo (line 714) | func (m *manager) GetRequestedContainersInfo(containerName string, opt...
    method getRequestedContainers (line 738) | func (m *manager) getRequestedContainers(containerName string, options...
    method GetDirFsInfo (line 790) | func (m *manager) GetDirFsInfo(dir string) (v2.FsInfo, error) {
    method GetFsInfoByFsUUID (line 798) | func (m *manager) GetFsInfoByFsUUID(uuid string) (v2.FsInfo, error) {
    method GetFsInfo (line 806) | func (m *manager) GetFsInfo(label string) ([]v2.FsInfo, error) {
    method GetMachineInfo (line 853) | func (m *manager) GetMachineInfo() (*info.MachineInfo, error) {
    method GetVersionInfo (line 859) | func (m *manager) GetVersionInfo() (*info.VersionInfo, error) {
    method Exists (line 867) | func (m *manager) Exists(containerName string) bool {
    method GetProcessList (line 872) | func (m *manager) GetProcessList(containerName string, options v2.Requ...
    method registerCollectors (line 895) | func (m *manager) registerCollectors(collectorConfigs map[string]strin...
    method createContainer (line 927) | func (m *manager) createContainer(containerName string, watchSource wa...
    method destroyContainer (line 1023) | func (m *manager) destroyContainer(containerName string) error {
    method getContainersDiff (line 1077) | func (m *manager) getContainersDiff(containerName string) (added []inf...
    method detectSubcontainers (line 1121) | func (m *manager) detectSubcontainers(containerName string) error {
    method watchForNewContainers (line 1147) | func (m *manager) watchForNewContainers(quit chan error) error {
    method watchForNewOoms (line 1210) | func (m *manager) watchForNewOoms() error {
    method WatchForEvents (line 1272) | func (m *manager) WatchForEvents(request *events.Request) (*events.Eve...
    method GetPastEvents (line 1277) | func (m *manager) GetPastEvents(request *events.Request) ([]*info.Even...
    method CloseEventChannel (line 1282) | func (m *manager) CloseEventChannel(watchID int) {
    method DebugInfo (line 1333) | func (m *manager) DebugInfo() map[string][]string {
    method getFsInfoByDeviceName (line 1365) | func (m *manager) getFsInfoByDeviceName(deviceName string) (v2.FsInfo,...
    method containersInfo (line 1382) | func (m *manager) containersInfo(containers map[string]*containerData,...
    method AllPodmanContainers (line 1399) | func (m *manager) AllPodmanContainers(query *info.ContainerInfoRequest...
  function parseEventsStoragePolicy (line 1287) | func parseEventsStoragePolicy() events.StoragePolicy {
  function getVersionInfo (line 1404) | func getVersionInfo() (*info.VersionInfo, error) {
  type partialFailure (line 1418) | type partialFailure
    method append (line 1420) | func (f *partialFailure) append(id, operation string, err error) {
    method Error (line 1424) | func (f partialFailure) Error() string {
    method OrNil (line 1428) | func (f partialFailure) OrNil() error {

FILE: manager/manager_bench_test.go
  function BenchmarkSyncMapConcurrentReads (line 26) | func BenchmarkSyncMapConcurrentReads(b *testing.B) {
  function BenchmarkRWMutexMapConcurrentReads (line 46) | func BenchmarkRWMutexMapConcurrentReads(b *testing.B) {
  function BenchmarkSyncMapIteration (line 69) | func BenchmarkSyncMapIteration(b *testing.B) {
  function BenchmarkRWMutexMapIteration (line 88) | func BenchmarkRWMutexMapIteration(b *testing.B) {
  function BenchmarkSyncMapMixedReadWrite (line 109) | func BenchmarkSyncMapMixedReadWrite(b *testing.B) {
  function BenchmarkRWMutexMapMixedReadWrite (line 136) | func BenchmarkRWMutexMapMixedReadWrite(b *testing.B) {

FILE: manager/manager_test.go
  function createManagerAndAddContainers (line 53) | func createManagerAndAddContainers(
  function createManagerAndAddSubContainers (line 91) | func createManagerAndAddSubContainers(
  function expectManagerWithContainers (line 155) | func expectManagerWithContainers(containers []string, query *info.Contai...
  function expectManagerWithSubContainers (line 205) | func expectManagerWithSubContainers(containers []string, query *info.Con...
  function expectManagerWithContainersV2 (line 250) | func expectManagerWithContainersV2(containers []string, query *info.Cont...
  function TestGetContainerInfo (line 295) | func TestGetContainerInfo(t *testing.T) {
  function TestGetContainerInfoV2 (line 327) | func TestGetContainerInfoV2(t *testing.T) {
  function TestGetContainerInfoV2Failure (line 359) | func TestGetContainerInfoV2Failure(t *testing.T) {
  function TestSubcontainersInfo (line 419) | func TestSubcontainersInfo(t *testing.T) {
  function TestSubcontainersInfoError (line 452) | func TestSubcontainersInfoError(t *testing.T) {
  function TestDockerContainersInfo (line 506) | func TestDockerContainersInfo(t *testing.T) {
  function TestDestroyContainerWithExitCode (line 541) | func TestDestroyContainerWithExitCode(t *testing.T) {
  function TestDestroyContainerExitCodeUnavailable (line 586) | func TestDestroyContainerExitCodeUnavailable(t *testing.T) {
  type mockEventHandler (line 631) | type mockEventHandler struct
    method AddEvent (line 635) | func (m *mockEventHandler) AddEvent(e *info.Event) error {
    method WatchEvents (line 640) | func (m *mockEventHandler) WatchEvents(request *events.Request) (*even...
    method GetEvents (line 644) | func (m *mockEventHandler) GetEvents(request *events.Request) ([]*info...
    method StopWatch (line 648) | func (m *mockEventHandler) StopWatch(watchID int) {
  type threadSafeEventHandler (line 652) | type threadSafeEventHandler struct
    method AddEvent (line 657) | func (m *threadSafeEventHandler) AddEvent(e *info.Event) error {
    method WatchEvents (line 664) | func (m *threadSafeEventHandler) WatchEvents(request *events.Request) ...
    method GetEvents (line 668) | func (m *threadSafeEventHandler) GetEvents(request *events.Request) ([...
    method StopWatch (line 672) | func (m *threadSafeEventHandler) StopWatch(watchID int) {
  function TestContainerDataStopConcurrent (line 679) | func TestContainerDataStopConcurrent(t *testing.T) {
  function TestDestroyContainerConcurrent (line 721) | func TestDestroyContainerConcurrent(t *testing.T) {

FILE: metrics/metrics.go
  type metricValue (line 26) | type metricValue struct
  type metricValues (line 32) | type metricValues
  type infoProvider (line 35) | type infoProvider interface

FILE: metrics/prometheus.go
  function asFloat64 (line 34) | func asFloat64(v uint64) float64 { return float64(v) }
  function asMicrosecondsToSeconds (line 37) | func asMicrosecondsToSeconds(v uint64) float64 {
  function asNanosecondsToSeconds (line 42) | func asNanosecondsToSeconds(v uint64) float64 {
  function fsValues (line 47) | func fsValues(fsStats []info.FsStats, valueFn func(*info.FsStats) float6...
  function ioValues (line 60) | func ioValues(ioStats []info.PerDiskStats, ioType string, ioValueFn func...
  type containerMetric (line 83) | type containerMetric struct
    method desc (line 92) | func (cm *containerMetric) desc(baseLabels []string) *prometheus.Desc {
  type ContainerLabelsFunc (line 98) | type ContainerLabelsFunc
  type PrometheusCollector (line 101) | type PrometheusCollector struct
    method Describe (line 1894) | func (c *PrometheusCollector) Describe(ch chan<- *prometheus.Desc) {
    method Collect (line 1909) | func (c *PrometheusCollector) Collect(ch chan<- prometheus.Metric) {
    method collectContainersInfo (line 1977) | func (c *PrometheusCollector) collectContainersInfo(ch chan<- promethe...
    method collectVersionInfo (line 2077) | func (c *PrometheusCollector) collectVersionInfo(ch chan<- prometheus....
  function NewPrometheusCollector (line 114) | func NewPrometheusCollector(i infoProvider, f ContainerLabelsFunc, inclu...
  constant ContainerLabelPrefix (line 1918) | ContainerLabelPrefix = "container_label_"
  constant ContainerEnvPrefix (line 1920) | ContainerEnvPrefix = "container_env_"
  constant LabelID (line 1922) | LabelID = "id"
  constant LabelName (line 1924) | LabelName = "name"
  constant LabelImage (line 1926) | LabelImage = "image"
  function DefaultContainerLabels (line 1932) | func DefaultContainerLabels(container *info.ContainerInfo) map[string]st...
  function BaseContainerLabels (line 1951) | func BaseContainerLabels(whiteList []string) func(container *info.Contai...
  constant maxMemorySize (line 2089) | maxMemorySize = uint64(1 << 62)
  function specMemoryValue (line 2091) | func specMemoryValue(v uint64) float64 {
  function sanitizeLabelName (line 2102) | func sanitizeLabelName(name string) string {
  function getNumaStatsPerNode (line 2106) | func getNumaStatsPerNode(nodeStats map[uint8]uint64, labels []string, ti...
  function getPerCPUCorePerfEvents (line 2115) | func getPerCPUCorePerfEvents(s *info.ContainerStats) metricValues {
  function getPerCPUCoreScalingRatio (line 2127) | func getPerCPUCoreScalingRatio(s *info.ContainerStats) metricValues {
  function getAggregatedCorePerfEvents (line 2139) | func getAggregatedCorePerfEvents(s *info.ContainerStats) metricValues {
  function getMinCoreScalingRatio (line 2158) | func getMinCoreScalingRatio(s *info.ContainerStats) metricValues {
  function getContainerHealthState (line 2182) | func getContainerHealthState(s *info.ContainerStats) metricValues {

FILE: metrics/prometheus_fake.go
  type testSubcontainersInfoProvider (line 25) | type testSubcontainersInfoProvider struct
    method GetVersionInfo (line 27) | func (p testSubcontainersInfoProvider) GetVersionInfo() (*info.Version...
    method GetMachineInfo (line 37) | func (p testSubcontainersInfoProvider) GetMachineInfo() (*info.Machine...
    method GetRequestedContainersInfo (line 276) | func (p testSubcontainersInfoProvider) GetRequestedContainersInfo(stri...
  type erroringSubcontainersInfoProvider (line 815) | type erroringSubcontainersInfoProvider struct
    method GetVersionInfo (line 820) | func (p *erroringSubcontainersInfoProvider) GetVersionInfo() (*info.Ve...
    method GetMachineInfo (line 827) | func (p *erroringSubcontainersInfoProvider) GetMachineInfo() (*info.Ma...
    method GetRequestedContainersInfo (line 834) | func (p *erroringSubcontainersInfoProvider) GetRequestedContainersInfo(

FILE: metrics/prometheus_machine.go
  constant prometheusModeLabelName (line 31) | prometheusModeLabelName       = "mode"
  constant prometheusTypeLabelName (line 32) | prometheusTypeLabelName       = "type"
  constant prometheusLevelLabelName (line 33) | prometheusLevelLabelName      = "level"
  constant prometheusNodeLabelName (line 34) | prometheusNodeLabelName       = "node_id"
  constant prometheusCoreLabelName (line 35) | prometheusCoreLabelName       = "core_id"
  constant prometheusThreadLabelName (line 36) | prometheusThreadLabelName     = "thread_id"
  constant prometheusPageSizeLabelName (line 37) | prometheusPageSizeLabelName   = "page_size"
  constant prometheusTargetNodeLabelName (line 38) | prometheusTargetNodeLabelName = "target_node_id"
  constant nvmMemoryMode (line 40) | nvmMemoryMode    = "memory_mode"
  constant nvmAppDirectMode (line 41) | nvmAppDirectMode = "app_direct_mode"
  constant memoryByTypeDimmCountKey (line 43) | memoryByTypeDimmCountKey    = "DimmCount"
  constant memoryByTypeDimmCapacityKey (line 44) | memoryByTypeDimmCapacityKey = "Capacity"
  constant emptyLabelValue (line 46) | emptyLabelValue = ""
  type machineMetric (line 51) | type machineMetric struct
    method desc (line 60) | func (metric *machineMetric) desc(baseLabels []string) *prometheus.Desc {
  type PrometheusMachineCollector (line 65) | type PrometheusMachineCollector struct
    method Describe (line 235) | func (collector *PrometheusMachineCollector) Describe(ch chan<- *prome...
    method Collect (line 244) | func (collector *PrometheusMachineCollector) Collect(ch chan<- prometh...
    method collectMachineInfo (line 250) | func (collector *PrometheusMachineCollector) collectMachineInfo(ch cha...
  function NewPrometheusMachineCollector (line 72) | func NewPrometheusMachineCollector(i infoProvider, includedMetrics conta...
  function getMemoryByType (line 285) | func getMemoryByType(machineInfo *info.MachineInfo, property string) met...
  function getThreadsSiblingsCount (line 303) | func getThreadsSiblingsCount(machineInfo *info.MachineInfo) metricValues {
  function getNodeMemory (line 325) | func getNodeMemory(machineInfo *info.MachineInfo) metricValues {
  function getHugePagesCount (line 339) | func getHugePagesCount(machineInfo *info.MachineInfo) metricValues {
  function getCaches (line 356) | func getCaches(machineInfo *info.MachineInfo) metricValues {
  function getDistance (line 394) | func getDistance(machineInfo *info.MachineInfo) metricValues {

FILE: metrics/prometheus_machine_test.go
  constant machineMetricsFile (line 31) | machineMetricsFile = "testdata/prometheus_machine_metrics"
  constant machineMetricsFailureFile (line 32) | machineMetricsFailureFile = "testdata/prometheus_machine_metrics_failure"
  function TestPrometheusMachineCollector (line 34) | func TestPrometheusMachineCollector(t *testing.T) {
  function TestPrometheusMachineCollectorWithFailure (line 54) | func TestPrometheusMachineCollectorWithFailure(t *testing.T) {
  function TestGetMemoryByType (line 77) | func TestGetMemoryByType(t *testing.T) {
  function TestGetMemoryByTypeWithWrongProperty (line 88) | func TestGetMemoryByTypeWithWrongProperty(t *testing.T) {
  function TestGetCaches (line 96) | func TestGetCaches(t *testing.T) {
  function TestGetThreadsSiblingsCount (line 133) | func TestGetThreadsSiblingsCount(t *testing.T) {
  function TestGetNodeMemory (line 161) | func TestGetNodeMemory(t *testing.T) {
  function TestGetHugePagesCount (line 175) | func TestGetHugePagesCount(t *testing.T) {
  function TestGetDistance (line 191) | func TestGetDistance(t *testing.T) {
  function assertMetricValues (line 207) | func assertMetricValues(t *testing.T, expected metricValues, actual metr...

FILE: metrics/prometheus_test.go
  function TestPrometheusCollector (line 35) | func TestPrometheusCollector(t *testing.T) {
  function TestPrometheusCollectorWithWhiteList (line 47) | func TestPrometheusCollectorWithWhiteList(t *testing.T) {
  function TestPrometheusCollectorWithPerfAggregated (line 63) | func TestPrometheusCollectorWithPerfAggregated(t *testing.T) {
  function testPrometheusCollector (line 78) | func testPrometheusCollector(t *testing.T, gatherer prometheus.Gatherer,...
  function TestPrometheusCollector_scrapeFailure (line 90) | func TestPrometheusCollector_scrapeFailure(t *testing.T) {
  function TestNewPrometheusCollectorWithPerf (line 111) | func TestNewPrometheusCollectorWithPerf(t *testing.T) {
  function TestNewPrometheusCollectorWithRequestOptions (line 126) | func TestNewPrometheusCollectorWithRequestOptions(t *testing.T) {
  type mockInfoProvider (line 137) | type mockInfoProvider struct
    method GetRequestedContainersInfo (line 141) | func (m *mockInfoProvider) GetRequestedContainersInfo(containerName st...
    method GetVersionInfo (line 146) | func (m *mockInfoProvider) GetVersionInfo() (*info.VersionInfo, error) {
    method GetMachineInfo (line 150) | func (m *mockInfoProvider) GetMachineInfo() (*info.MachineInfo, error) {
  function mockLabelFunc (line 154) | func mockLabelFunc(*info.ContainerInfo) map[string]string {
  function TestGetPerCpuCorePerfEvents (line 158) | func TestGetPerCpuCorePerfEvents(t *testing.T) {
  function TestGetPerCpuCoreScalingRatio (line 206) | func TestGetPerCpuCoreScalingRatio(t *testing.T) {
  function TestGetAggCorePerfEvents (line 252) | func TestGetAggCorePerfEvents(t *testing.T) {
  function TestGetMinCoreScalingRatio (line 296) | func TestGetMinCoreScalingRatio(t *testing.T) {
  function TestGetContainerHealthState (line 340) | func TestGetContainerHealthState(t *testing.T) {
  function TestIOCostMetrics (line 360) | func TestIOCostMetrics(t *testing.T) {
  function TestCPUBurstMetrics (line 432) | func TestCPUBurstMetrics(t *testing.T) {

FILE: nvm/m
Condensed preview — 2683 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,740K chars).
[
  {
    "path": ".github/workflows/publish-container.yml",
    "chars": 2260,
    "preview": "name: Publish Container Image\n\non:\n  push:\n    tags:\n      - 'v*'\n  workflow_dispatch:\n    inputs:\n      tag:\n        de"
  },
  {
    "path": ".github/workflows/release-binaries.yml",
    "chars": 3574,
    "preview": "name: Release Binaries\n\non:\n  push:\n    tags:\n      - 'v*'\n  workflow_dispatch:\n    inputs:\n      tag:\n        descripti"
  },
  {
    "path": ".github/workflows/stale.yaml",
    "chars": 1291,
    "preview": "name: Stale issues and pull requests\n\non:\n  schedule:\n  - cron: \"21 4 * * *\"\n  workflow_dispatch:\n\njobs:\n  stale:\n    pe"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 3036,
    "preview": "name: Test\non: [push, pull_request]\njobs:\n  test:\n    strategy:\n      matrix:\n        go-versions: ['1.25']\n        plat"
  },
  {
    "path": ".gitignore",
    "chars": 157,
    "preview": "cadvisor\n/release\n.vscode\n_output/\n\n# Log files\n*.log\n\n# Go test binaries\n*.test\n\n# Files generated by JetBrains IDEs, e"
  },
  {
    "path": ".golangci.yml",
    "chars": 1609,
    "preview": "version: \"2\"\n\nrun:\n  timeout: 5m\n\nlinters:\n  default: none\n  enable:\n    - govet\n    - errcheck\n    - staticcheck\n    - "
  },
  {
    "path": "AUTHORS",
    "chars": 256,
    "preview": "# This is the official list of cAdvisor authors for copyright purposes.\n\n# Names should be added to this file as\n#     N"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 22048,
    "preview": "# Changelog\n\n### 0.39.0 (2021-03-08)\n\n- [do not initialize libipmctl package when getting an error from nvm_init()](http"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 872,
    "preview": "## How to contribute\n\nOpen an issue or a pull request, its that easy!\n\n## Contributor License Agreements\n\nWe'd love to a"
  },
  {
    "path": "LICENSE",
    "chars": 10765,
    "preview": "   Copyright 2014 The cAdvisor Authors\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may no"
  },
  {
    "path": "Makefile",
    "chars": 3607,
    "preview": "# Copyright 2015 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# "
  },
  {
    "path": "README.md",
    "chars": 4888,
    "preview": "![cAdvisor](logo.png \"cAdvisor\")\n\n![test status](https://github.com/google/cadvisor/workflows/Test/badge.svg)\n\ncAdvisor "
  },
  {
    "path": "build/assets.sh",
    "chars": 2371,
    "preview": "#!/bin/bash\n\n# Copyright 2015 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "build/boilerplate/boilerplate.go.txt",
    "chars": 609,
    "preview": "// Copyright YEAR Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "build/boilerplate/boilerplate.py",
    "chars": 4758,
    "preview": "#!/usr/bin/env python3\n\n# Copyright 2016 Google Inc. All Rights Reserved.\n#\n# Licensed under the Apache License, Version"
  },
  {
    "path": "build/boilerplate/boilerplate.py.txt",
    "chars": 620,
    "preview": "#!/usr/bin/env python3\n\n# Copyright YEAR Google Inc. All Rights Reserved.\n#\n# Licensed under the Apache License, Version"
  },
  {
    "path": "build/boilerplate/boilerplate.sh.txt",
    "chars": 596,
    "preview": "# Copyright YEAR Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# "
  },
  {
    "path": "build/build.sh",
    "chars": 2383,
    "preview": "#!/usr/bin/env bash\n\n# Copyright 2015 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2."
  },
  {
    "path": "build/check_boilerplate.sh",
    "chars": 968,
    "preview": "#!/bin/bash\n\n# Copyright 2015 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "build/check_container.sh",
    "chars": 2200,
    "preview": "#!/usr/bin/env bash\n# Copyright 2015 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0"
  },
  {
    "path": "build/check_gotidy.sh",
    "chars": 1758,
    "preview": "#!/bin/bash\n\n# Copyright 2020 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "build/config/crio.sh",
    "chars": 721,
    "preview": "# Copyright 2024 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# "
  },
  {
    "path": "build/config/libipmctl.sh",
    "chars": 803,
    "preview": "# Copyright 2020 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# "
  },
  {
    "path": "build/config/libpfm4.sh",
    "chars": 794,
    "preview": "# Copyright 2020 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# "
  },
  {
    "path": "build/config/plain.sh",
    "chars": 709,
    "preview": "# Copyright 2020 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# "
  },
  {
    "path": "build/integration-crio.sh",
    "chars": 8493,
    "preview": "#!/usr/bin/env bash\n\n# Copyright 2024 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2."
  },
  {
    "path": "build/integration-in-docker-crio.sh",
    "chars": 8125,
    "preview": "#!/usr/bin/env bash\n\n# Copyright 2024 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2."
  },
  {
    "path": "build/integration-in-docker.sh",
    "chars": 2734,
    "preview": "#!/usr/bin/env bash\n\n# Copyright 2020 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2."
  },
  {
    "path": "build/integration.sh",
    "chars": 5742,
    "preview": "#!/usr/bin/env bash\n\n# Copyright 2016 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2."
  },
  {
    "path": "build/prow_e2e.sh",
    "chars": 1353,
    "preview": "#!/usr/bin/env bash\n\n# Copyright 2018 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2."
  },
  {
    "path": "build/release.sh",
    "chars": 3070,
    "preview": "#!/usr/bin/env bash\n\n# Copyright 2015 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2."
  },
  {
    "path": "build/unit-in-container.sh",
    "chars": 1386,
    "preview": "#!/usr/bin/env bash\n\n# Copyright 2020 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2."
  },
  {
    "path": "cache/cache.go",
    "chars": 1538,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cache/memory/memory.go",
    "chars": 4512,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cache/memory/memory_test.go",
    "chars": 2807,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "client/README.md",
    "chars": 1807,
    "preview": "# Example REST API Client\n\nThis is an implementation of a cAdvisor REST API in Go.  You can use it like this:\n\n```go\ncli"
  },
  {
    "path": "client/client.go",
    "chars": 6752,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "client/client_test.go",
    "chars": 5321,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "client/clientexample/main.go",
    "chars": 1841,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "client/v2/README.md",
    "chars": 1738,
    "preview": "# Example REST API Client\n\nThis is an implementation of a cAdvisor REST API in Go.  You can use it like this:\n\n```go\ncli"
  },
  {
    "path": "client/v2/client.go",
    "chars": 5062,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "client/v2/client_test.go",
    "chars": 5742,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/cadvisor.go",
    "chars": 9612,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/cadvisor_test.go",
    "chars": 4300,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/go.mod",
    "chars": 6002,
    "preview": "module github.com/google/cadvisor/cmd\n\ngo 1.24.0\n\n// Record that the cmd module requires the cadvisor library module.\n//"
  },
  {
    "path": "cmd/go.sum",
    "chars": 36997,
    "preview": "cloud.google.com/go/auth v0.16.1 h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU=\ncloud.google.com/go/auth v0.16.1/go.mod"
  },
  {
    "path": "cmd/internal/api/handler.go",
    "chars": 6917,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/api/versions.go",
    "chars": 15098,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/api/versions_test.go",
    "chars": 2455,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/container/install/install.go",
    "chars": 1437,
    "preview": "// Copyright 2019 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/healthz/healthz.go",
    "chars": 996,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/http/handlers.go",
    "chars": 5072,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/http/mux/mux.go",
    "chars": 893,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/pages/assets/html/containers.html",
    "chars": 9640,
    "preview": "<!--\n  Copyright 2014 Google Inc. All Rights Reserved.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\")"
  },
  {
    "path": "cmd/internal/pages/assets/js/containers.js",
    "chars": 34605,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/pages/assets/js/loader.js",
    "chars": 65121,
    "preview": "(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\n'use strict';var m;funct"
  },
  {
    "path": "cmd/internal/pages/assets/styles/containers.css",
    "chars": 132925,
    "preview": "\n.google-visualization-toolbar{font-size:100%}.google-visualization-toolbar .google-visualization-toolbar-export-igoogle"
  },
  {
    "path": "cmd/internal/pages/containers.go",
    "chars": 6346,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/pages/docker.go",
    "chars": 5168,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/pages/pages.go",
    "chars": 6785,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/pages/podman.go",
    "chars": 4251,
    "preview": "// Copyright 2021 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/pages/static/assets.go",
    "chars": 791167,
    "preview": "// Copyright 2022 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/pages/static/static.go",
    "chars": 2556,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/pages/templates.go",
    "chars": 17177,
    "preview": "// Copyright 2023 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/bigquery/README.md",
    "chars": 940,
    "preview": "BigQuery Storage Driver\n=======\n\n[EXPERIMENTAL] Support for BigQuery backend as cAdvisor storage driver.\nThe current imp"
  },
  {
    "path": "cmd/internal/storage/bigquery/bigquery.go",
    "chars": 8525,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/bigquery/client/client.go",
    "chars": 6591,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/bigquery/client/example/example.go",
    "chars": 2277,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/elasticsearch/elasticsearch.go",
    "chars": 4593,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/influxdb/influxdb.go",
    "chars": 16095,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/influxdb/influxdb_test.go",
    "chars": 12265,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/kafka/kafka.go",
    "chars": 4422,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/redis/redis.go",
    "chars": 3867,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/statsd/client/client.go",
    "chars": 1589,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/statsd/statsd.go",
    "chars": 8706,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/stdout/stdout.go",
    "chars": 8650,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/test/mock.go",
    "chars": 1089,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/internal/storage/test/storagetests.go",
    "chars": 2924,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "cmd/storagedriver.go",
    "chars": 2247,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/collector_manager.go",
    "chars": 2928,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/collector_manager_test.go",
    "chars": 2069,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/config/sample_config.json",
    "chars": 1037,
    "preview": "{\n\t\"endpoint\" : \"http://localhost:8000/nginx_status\",\n\t\"metrics_config\"  : [\n\t\t{ \"name\" : \"activeConnections\",  \n\t\t  \"me"
  },
  {
    "path": "collector/config/sample_config_endpoint_config.json",
    "chars": 986,
    "preview": "{\n  \"endpoint\" : {\n    \"protocol\": \"https\",\n    \"port\": 8000,\n    \"path\": \"/nginx_status\"\n  },\n  \"metrics_config\"  : [\n "
  },
  {
    "path": "collector/config/sample_config_prometheus.json",
    "chars": 125,
    "preview": "{\n        \"endpoint\" : \"http://localhost:8080/metrics\",\n\t\"polling_frequency\" : 10, \n        \"metrics_config\" : [\n       "
  },
  {
    "path": "collector/config/sample_config_prometheus_endpoint_config.json",
    "chars": 145,
    "preview": "{\n  \"endpoint\" : {\n    \"protocol\": \"http\",\n    \"port\": 8081,\n    \"path\": \"/METRICS\"\n  },\n  \"polling_frequency\" : 10,\n  \""
  },
  {
    "path": "collector/config/sample_config_prometheus_filtered.json",
    "chars": 179,
    "preview": "{\n        \"endpoint\" : \"http://localhost:8080/metrics\",\n        \"polling_frequency\" : 10,\n        \"metrics_config\" : [\n "
  },
  {
    "path": "collector/config.go",
    "chars": 2793,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/fakes.go",
    "chars": 1099,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/generic_collector.go",
    "chars": 5648,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/generic_collector_test.go",
    "chars": 6947,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/prometheus_collector.go",
    "chars": 8104,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/prometheus_collector_test.go",
    "chars": 9149,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/types.go",
    "chars": 1809,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "collector/util.go",
    "chars": 1041,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/common/container_hints.go",
    "chars": 1943,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/common/container_hints_test.go",
    "chars": 1692,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/common/fsHandler.go",
    "chars": 3862,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/common/helpers.go",
    "chars": 12896,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/common/helpers_test.go",
    "chars": 8121,
    "preview": "// Copyright 2018 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/common/inotify_watcher.go",
    "chars": 3564,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/common/test_resources/cgroup_v1/test1/cpu/cpu.cfs_period_us",
    "chars": 7,
    "preview": "100010\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v1/test1/cpu/cpu.cfs_quota_us",
    "chars": 6,
    "preview": "20000\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v1/test1/cpu/cpu.shares",
    "chars": 5,
    "preview": "1025\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v1/test1/cpuset/cpuset.cpus",
    "chars": 4,
    "preview": "0-5\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v1/test1/memory/memory.limit_in_bytes",
    "chars": 10,
    "preview": "123456789\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v1/test1/memory/memory.memsw.limit_in_bytes",
    "chars": 6,
    "preview": "13579\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v1/test1/memory/memory.soft_limit_in_bytes",
    "chars": 6,
    "preview": "24680\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v1/test1/pids/pids.max",
    "chars": 5,
    "preview": "1027\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test1/cpu.max",
    "chars": 13,
    "preview": "20000 100010\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test1/cpu.weight",
    "chars": 3,
    "preview": "50\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test1/cpuset.cpus.effective",
    "chars": 4,
    "preview": "0-5\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test1/memory.max",
    "chars": 10,
    "preview": "123456789\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test1/memory.min",
    "chars": 6,
    "preview": "24680\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test1/memory.swap.max",
    "chars": 6,
    "preview": "13579\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test1/pids.max",
    "chars": 5,
    "preview": "1027\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test2/cpu.max",
    "chars": 11,
    "preview": "max 100010\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test2/cpu.weight",
    "chars": 3,
    "preview": "50\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test2/memory.max",
    "chars": 4,
    "preview": "max\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test2/memory.min",
    "chars": 4,
    "preview": "max\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test2/memory.swap.max",
    "chars": 4,
    "preview": "max\n"
  },
  {
    "path": "container/common/test_resources/cgroup_v2/test2/pids.max",
    "chars": 4,
    "preview": "max\n"
  },
  {
    "path": "container/common/test_resources/container_hints.json",
    "chars": 1049,
    "preview": "{\n  \"name\": \"Container Hints\",\n  \"description\": \"Container hints file\",\n  \"all_hosts\": [\n    {\n      \"network_interface\""
  },
  {
    "path": "container/container.go",
    "chars": 2598,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/client.go",
    "chars": 6036,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/client_test.go",
    "chars": 2209,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/containers/containers.go",
    "chars": 4141,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/factory.go",
    "chars": 5383,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/factory_test.go",
    "chars": 2716,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/grpc.go",
    "chars": 1797,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/handler.go",
    "chars": 8293,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/handler_test.go",
    "chars": 6137,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/identifiers/validate.go",
    "chars": 2825,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/identifiers/validate_test.go",
    "chars": 2326,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/install/install.go",
    "chars": 1046,
    "preview": "// Copyright 2019 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/namespaces/context.go",
    "chars": 3016,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/namespaces/context_test.go",
    "chars": 2402,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/namespaces/grpc.go",
    "chars": 2306,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/namespaces/store.go",
    "chars": 2252,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/namespaces/ttrpc.go",
    "chars": 1913,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/namespaces/ttrpc_test.go",
    "chars": 1921,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/pkg/dialer/dialer.go",
    "chars": 2431,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/pkg/dialer/dialer_unix.go",
    "chars": 1879,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/pkg/dialer/dialer_windows.go",
    "chars": 1571,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/containerd/plugin.go",
    "chars": 1304,
    "preview": "// Copyright 2019 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/crio/client.go",
    "chars": 4657,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/crio/client_test.go",
    "chars": 1323,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/crio/factory.go",
    "chars": 5249,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/crio/factory_test.go",
    "chars": 3628,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/crio/handler.go",
    "chars": 10894,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/crio/handler_test.go",
    "chars": 3343,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/crio/install/install.go",
    "chars": 1010,
    "preview": "// Copyright 2019 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/crio/plugin.go",
    "chars": 1623,
    "preview": "// Copyright 2019 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/client.go",
    "chars": 1705,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/docker.go",
    "chars": 5702,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/docker_test.go",
    "chars": 1747,
    "preview": "// Copyright 2017 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/factory.go",
    "chars": 11816,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/factory_test.go",
    "chars": 2111,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/fs.go",
    "chars": 5501,
    "preview": "// Copyright 2022 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/handler.go",
    "chars": 13597,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/handler_test.go",
    "chars": 10310,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/install/install.go",
    "chars": 1022,
    "preview": "// Copyright 2019 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/plugin.go",
    "chars": 2320,
    "preview": "// Copyright 2019 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/utils/docker.go",
    "chars": 3426,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/docker/utils/docker_test.go",
    "chars": 1228,
    "preview": "// Copyright 2022 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/factory.go",
    "chars": 10520,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/factory_test.go",
    "chars": 6004,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/libcontainer/handler.go",
    "chars": 28265,
    "preview": "// Copyright 2018 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/libcontainer/handler_test.go",
    "chars": 9091,
    "preview": "// Copyright 2018 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/libcontainer/helpers.go",
    "chars": 4842,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/libcontainer/helpers_test.go",
    "chars": 3606,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/libcontainer/testdata/clear_refs4",
    "chars": 2,
    "preview": "0\n"
  },
  {
    "path": "container/libcontainer/testdata/clear_refs6",
    "chars": 2,
    "preview": "0\n"
  },
  {
    "path": "container/libcontainer/testdata/clear_refs8",
    "chars": 2,
    "preview": "0\n"
  },
  {
    "path": "container/libcontainer/testdata/docker-v1.8.3/execdriver/native/1/state.json",
    "chars": 6026,
    "preview": "{\"id\":\"1\",\"init_process_pid\":66241,\"init_process_start\":\"4507843\",\"cgroup_paths\":{\"blkio\":\"/sys/fs/cgroup/blkio/docker/1"
  },
  {
    "path": "container/libcontainer/testdata/docker-v1.9.1/execdriver/native/1/state.json",
    "chars": 6393,
    "preview": "{\"id\":\"1\",\"init_process_pid\":64076,\"init_process_start\":\"3211353\",\"cgroup_paths\":{\"blkio\":\"/sys/fs/cgroup/blkio/docker/1"
  },
  {
    "path": "container/libcontainer/testdata/limits",
    "chars": 1323,
    "preview": "Limit                     Soft Limit           Hard Limit           Units     \nMax cpu time              unlimited      "
  },
  {
    "path": "container/libcontainer/testdata/procnetdev",
    "chars": 682,
    "preview": "Inter-|   Receive                                                |  Transmit\n face |bytes    packets errs drop fifo fram"
  },
  {
    "path": "container/libcontainer/testdata/procnetudp",
    "chars": 381,
    "preview": "  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode ref pointer drops      "
  },
  {
    "path": "container/libcontainer/testdata/smaps4",
    "chars": 2602,
    "preview": "55f523c9f000-55f523cc1000 r-xp 00000000 08:02 5505067                    /sbin/cgmanager\nSize:                136 kB\nKer"
  },
  {
    "path": "container/libcontainer/testdata/smaps6",
    "chars": 652,
    "preview": "55f523c9f000-55f523cc1000 r-xp 00000000 08:02 5505067                    /sbin/cgmanager\nSize:                136 kB\nKer"
  },
  {
    "path": "container/libcontainer/testdata/smaps8",
    "chars": 652,
    "preview": "55f523c9f000-55f523cc1000 r-xp 00000000 08:02 5505067                    /sbin/cgmanager\nSize:                136 kB\nKer"
  },
  {
    "path": "container/podman/client.go",
    "chars": 1469,
    "preview": "// Copyright 2021 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/podman/factory.go",
    "chars": 3003,
    "preview": "// Copyright 2021 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/podman/fs.go",
    "chars": 1755,
    "preview": "// Copyright 2022 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/podman/handler.go",
    "chars": 10542,
    "preview": "// Copyright 2021 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/podman/install/install.go",
    "chars": 921,
    "preview": "// Copyright 2021 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/podman/plugin.go",
    "chars": 3479,
    "preview": "// Copyright 2021 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/podman/podman.go",
    "chars": 3772,
    "preview": "// Copyright 2021 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/podman/podman_test.go",
    "chars": 1703,
    "preview": "// Copyright 2022 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/raw/factory.go",
    "chars": 3647,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/raw/handler.go",
    "chars": 8647,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/raw/handler_test.go",
    "chars": 15591,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/raw/watcher.go",
    "chars": 7121,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/systemd/factory.go",
    "chars": 2010,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/systemd/install/install.go",
    "chars": 1010,
    "preview": "// Copyright 2019 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/systemd/plugin.go",
    "chars": 1283,
    "preview": "// Copyright 2019 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "container/testing/mock_handler.go",
    "chars": 3737,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "deploy/Dockerfile",
    "chars": 3109,
    "preview": "FROM registry.hub.docker.com/library/golang:1.25-alpine3.22 AS build\n\n# Install build depdencies for all supported arche"
  },
  {
    "path": "deploy/Dockerfile.ppc64le",
    "chars": 792,
    "preview": "FROM ppc64le/alpine:3.15\nMAINTAINER dashpole@google.com lysannef@us.ibm.com\n# Deprecated: the Dockerfile in this directo"
  },
  {
    "path": "deploy/build.sh",
    "chars": 704,
    "preview": "#!/bin/bash\n\n# Copyright 2015 Google Inc. All rights reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \""
  }
]

// ... and 2483 more files (download for full content)

About this extraction

This page contains the full source code of the google/cadvisor GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2683 files (3.0 MB), approximately 940.2k tokens, and a symbol index with 2744 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!