| // This package is used for API stability in the types and response to the |
| // consumers of the API stats endpoint. |
| package types |
| |
| import "time" |
| |
| type ThrottlingData struct { |
| // Number of periods with throttling active |
| Periods uint64 `json:"periods"` |
| // Number of periods when the container hit its throttling limit. |
| ThrottledPeriods uint64 `json:"throttled_periods"` |
| // Aggregate time the container was throttled for in nanoseconds. |
| ThrottledTime uint64 `json:"throttled_time"` |
| } |
| |
| // All CPU stats are aggregated since container inception. |
| type CpuUsage struct { |
| // Total CPU time consumed. |
| // Units: nanoseconds. |
| TotalUsage uint64 `json:"total_usage"` |
| // Total CPU time consumed per core. |
| // Units: nanoseconds. |
| PercpuUsage []uint64 `json:"percpu_usage"` |
| // Time spent by tasks of the cgroup in kernel mode. |
| // Units: nanoseconds. |
| UsageInKernelmode uint64 `json:"usage_in_kernelmode"` |
| // Time spent by tasks of the cgroup in user mode. |
| // Units: nanoseconds. |
| UsageInUsermode uint64 `json:"usage_in_usermode"` |
| } |
| |
| type CpuStats struct { |
| CpuUsage CpuUsage `json:"cpu_usage"` |
| SystemUsage uint64 `json:"system_cpu_usage"` |
| ThrottlingData ThrottlingData `json:"throttling_data,omitempty"` |
| } |
| |
| type MemoryStats struct { |
| // current res_counter usage for memory |
| Usage uint64 `json:"usage"` |
| // maximum usage ever recorded. |
| MaxUsage uint64 `json:"max_usage"` |
| // TODO(vishh): Export these as stronger types. |
| // all the stats exported via memory.stat. |
| Stats map[string]uint64 `json:"stats"` |
| // number of times memory usage hits limits. |
| Failcnt uint64 `json:"failcnt"` |
| Limit uint64 `json:"limit"` |
| } |
| |
| type BlkioStatEntry struct { |
| Major uint64 `json:"major"` |
| Minor uint64 `json:"minor"` |
| Op string `json:"op"` |
| Value uint64 `json:"value"` |
| } |
| |
| type BlkioStats struct { |
| // number of bytes tranferred 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"` |
| } |
| |
| type Network struct { |
| RxBytes uint64 `json:"rx_bytes"` |
| RxPackets uint64 `json:"rx_packets"` |
| RxErrors uint64 `json:"rx_errors"` |
| RxDropped uint64 `json:"rx_dropped"` |
| TxBytes uint64 `json:"tx_bytes"` |
| TxPackets uint64 `json:"tx_packets"` |
| TxErrors uint64 `json:"tx_errors"` |
| TxDropped uint64 `json:"tx_dropped"` |
| } |
| |
| type Stats struct { |
| Read time.Time `json:"read"` |
| Network Network `json:"network,omitempty"` |
| PreCpuStats CpuStats `json:"precpu_stats,omitempty"` |
| CpuStats CpuStats `json:"cpu_stats,omitempty"` |
| MemoryStats MemoryStats `json:"memory_stats,omitempty"` |
| BlkioStats BlkioStats `json:"blkio_stats,omitempty"` |
| } |