123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- // Package types is used for API stability in the types and response to the
- // consumers of the API stats endpoint.
- package types // import "github.com/docker/docker/api/types"
- import "time"
- // ThrottlingData stores CPU throttling stats of one running container.
- // Not used on Windows.
- type ThrottlingData struct {
- // Number of periods with throttling active
- Periods uint64 `json:"periods"`
- // Number of periods when the container hits its throttling limit.
- ThrottledPeriods uint64 `json:"throttled_periods"`
- // Aggregate time the container was throttled for in nanoseconds.
- ThrottledTime uint64 `json:"throttled_time"`
- }
- // CPUUsage stores All CPU stats aggregated since container inception.
- type CPUUsage struct {
- // Total CPU time consumed.
- // Units: nanoseconds (Linux)
- // Units: 100's of nanoseconds (Windows)
- TotalUsage uint64 `json:"total_usage"`
- // Total CPU time consumed per core (Linux). Not used on Windows.
- // Units: nanoseconds.
- PercpuUsage []uint64 `json:"percpu_usage,omitempty"`
- // Time spent by tasks of the cgroup in kernel mode (Linux).
- // Time spent by all container processes in kernel mode (Windows).
- // Units: nanoseconds (Linux).
- // Units: 100's of nanoseconds (Windows). Not populated for Hyper-V Containers.
- UsageInKernelmode uint64 `json:"usage_in_kernelmode"`
- // Time spent by tasks of the cgroup in user mode (Linux).
- // Time spent by all container processes in user mode (Windows).
- // Units: nanoseconds (Linux).
- // Units: 100's of nanoseconds (Windows). Not populated for Hyper-V Containers
- UsageInUsermode uint64 `json:"usage_in_usermode"`
- }
- // CPUStats aggregates and wraps all CPU related info of container
- type CPUStats struct {
- // CPU Usage. Linux and Windows.
- CPUUsage CPUUsage `json:"cpu_usage"`
- // System Usage. Linux only.
- SystemUsage uint64 `json:"system_cpu_usage,omitempty"`
- // Online CPUs. Linux only.
- OnlineCPUs uint32 `json:"online_cpus,omitempty"`
- // Throttling Data. Linux only.
- ThrottlingData ThrottlingData `json:"throttling_data,omitempty"`
- }
- // MemoryStats aggregates all memory stats since container inception on Linux.
- // Windows returns stats for commit and private working set only.
- type MemoryStats struct {
- // Linux Memory Stats
- // current res_counter usage for memory
- Usage uint64 `json:"usage,omitempty"`
- // maximum usage ever recorded.
- MaxUsage uint64 `json:"max_usage,omitempty"`
- // TODO(vishh): Export these as stronger types.
- // all the stats exported via memory.stat.
- Stats map[string]uint64 `json:"stats,omitempty"`
- // number of times memory usage hits limits.
- Failcnt uint64 `json:"failcnt,omitempty"`
- Limit uint64 `json:"limit,omitempty"`
- // Windows Memory Stats
- // See https://technet.microsoft.com/en-us/magazine/ff382715.aspx
- // committed bytes
- Commit uint64 `json:"commitbytes,omitempty"`
- // peak committed bytes
- CommitPeak uint64 `json:"commitpeakbytes,omitempty"`
- // private working set
- PrivateWorkingSet uint64 `json:"privateworkingset,omitempty"`
- }
- // BlkioStatEntry is one small entity to store a piece of Blkio stats
- // Not used on Windows.
- type BlkioStatEntry struct {
- Major uint64 `json:"major"`
- Minor uint64 `json:"minor"`
- Op string `json:"op"`
- Value uint64 `json:"value"`
- }
- // BlkioStats stores All IO service stats for data read and write.
- // This is a Linux specific structure as the differences between expressing
- // block I/O on Windows and Linux are sufficiently significant to make
- // little sense attempting to morph into a combined structure.
- type BlkioStats struct {
- // number of bytes transferred to and from the block device
- IoServiceBytesRecursive []BlkioStatEntry `json:"io_service_bytes_recursive"`
- IoServicedRecursive []BlkioStatEntry `json:"io_serviced_recursive"`
- IoQueuedRecursive []BlkioStatEntry `json:"io_queue_recursive"`
- IoServiceTimeRecursive []BlkioStatEntry `json:"io_service_time_recursive"`
- IoWaitTimeRecursive []BlkioStatEntry `json:"io_wait_time_recursive"`
- IoMergedRecursive []BlkioStatEntry `json:"io_merged_recursive"`
- IoTimeRecursive []BlkioStatEntry `json:"io_time_recursive"`
- SectorsRecursive []BlkioStatEntry `json:"sectors_recursive"`
- }
- // StorageStats is the disk I/O stats for read/write on Windows.
- type StorageStats struct {
- ReadCountNormalized uint64 `json:"read_count_normalized,omitempty"`
- ReadSizeBytes uint64 `json:"read_size_bytes,omitempty"`
- WriteCountNormalized uint64 `json:"write_count_normalized,omitempty"`
- WriteSizeBytes uint64 `json:"write_size_bytes,omitempty"`
- }
- // NetworkStats aggregates the network stats of one container
- type NetworkStats struct {
- // Bytes received. Windows and Linux.
- RxBytes uint64 `json:"rx_bytes"`
- // Packets received. Windows and Linux.
- RxPackets uint64 `json:"rx_packets"`
- // Received errors. Not used on Windows. Note that we don't `omitempty` this
- // field as it is expected in the >=v1.21 API stats structure.
- RxErrors uint64 `json:"rx_errors"`
- // Incoming packets dropped. Windows and Linux.
- RxDropped uint64 `json:"rx_dropped"`
- // Bytes sent. Windows and Linux.
- TxBytes uint64 `json:"tx_bytes"`
- // Packets sent. Windows and Linux.
- TxPackets uint64 `json:"tx_packets"`
- // Sent errors. Not used on Windows. Note that we don't `omitempty` this
- // field as it is expected in the >=v1.21 API stats structure.
- TxErrors uint64 `json:"tx_errors"`
- // Outgoing packets dropped. Windows and Linux.
- TxDropped uint64 `json:"tx_dropped"`
- // Endpoint ID. Not used on Linux.
- EndpointID string `json:"endpoint_id,omitempty"`
- // Instance ID. Not used on Linux.
- InstanceID string `json:"instance_id,omitempty"`
- }
- // PidsStats contains the stats of a container's pids
- type PidsStats struct {
- // Current is the number of pids in the cgroup
- Current uint64 `json:"current,omitempty"`
- // Limit is the hard limit on the number of pids in the cgroup.
- // A "Limit" of 0 means that there is no limit.
- Limit uint64 `json:"limit,omitempty"`
- }
- // Stats is Ultimate struct aggregating all types of stats of one container
- type Stats struct {
- // Common stats
- Read time.Time `json:"read"`
- PreRead time.Time `json:"preread"`
- // Linux specific stats, not populated on Windows.
- PidsStats PidsStats `json:"pids_stats,omitempty"`
- BlkioStats BlkioStats `json:"blkio_stats,omitempty"`
- // Windows specific stats, not populated on Linux.
- NumProcs uint32 `json:"num_procs"`
- StorageStats StorageStats `json:"storage_stats,omitempty"`
- // Shared stats
- CPUStats CPUStats `json:"cpu_stats,omitempty"`
- PreCPUStats CPUStats `json:"precpu_stats,omitempty"` // "Pre"="Previous"
- MemoryStats MemoryStats `json:"memory_stats,omitempty"`
- }
- // StatsJSON is newly used Networks
- type StatsJSON struct {
- Stats
- Name string `json:"name,omitempty"`
- ID string `json:"id,omitempty"`
- // Networks request version >=1.21
- Networks map[string]NetworkStats `json:"networks,omitempty"`
- }
|