| package runtime |
| |
| import "time" |
| |
| // Stat holds a container statistics |
| type Stat struct { |
| // Timestamp is the time that the statistics where collected |
| Timestamp time.Time |
| CPU CPU `json:"cpu"` |
| Memory Memory `json:"memory"` |
| Pids Pids `json:"pids"` |
| Blkio Blkio `json:"blkio"` |
| Hugetlb map[string]Hugetlb `json:"hugetlb"` |
| } |
| |
| // Hugetlb holds information regarding a container huge tlb usage |
| type Hugetlb struct { |
| Usage uint64 `json:"usage,omitempty"` |
| Max uint64 `json:"max,omitempty"` |
| Failcnt uint64 `json:"failcnt"` |
| } |
| |
| // BlkioEntry represents a single record for a Blkio stat |
| type BlkioEntry struct { |
| Major uint64 `json:"major,omitempty"` |
| Minor uint64 `json:"minor,omitempty"` |
| Op string `json:"op,omitempty"` |
| Value uint64 `json:"value,omitempty"` |
| } |
| |
| // Blkio regroups all the Blkio related stats |
| type Blkio struct { |
| IoServiceBytesRecursive []BlkioEntry `json:"ioServiceBytesRecursive,omitempty"` |
| IoServicedRecursive []BlkioEntry `json:"ioServicedRecursive,omitempty"` |
| IoQueuedRecursive []BlkioEntry `json:"ioQueueRecursive,omitempty"` |
| IoServiceTimeRecursive []BlkioEntry `json:"ioServiceTimeRecursive,omitempty"` |
| IoWaitTimeRecursive []BlkioEntry `json:"ioWaitTimeRecursive,omitempty"` |
| IoMergedRecursive []BlkioEntry `json:"ioMergedRecursive,omitempty"` |
| IoTimeRecursive []BlkioEntry `json:"ioTimeRecursive,omitempty"` |
| SectorsRecursive []BlkioEntry `json:"sectorsRecursive,omitempty"` |
| } |
| |
| // Pids holds the stat of the pid usage of the machine |
| type Pids struct { |
| Current uint64 `json:"current,omitempty"` |
| Limit uint64 `json:"limit,omitempty"` |
| } |
| |
| // Throttling holds a cpu throttling information |
| type Throttling struct { |
| Periods uint64 `json:"periods,omitempty"` |
| ThrottledPeriods uint64 `json:"throttledPeriods,omitempty"` |
| ThrottledTime uint64 `json:"throttledTime,omitempty"` |
| } |
| |
| // CPUUsage holds information regarding cpu usage |
| type CPUUsage struct { |
| // Units: nanoseconds. |
| Total uint64 `json:"total,omitempty"` |
| Percpu []uint64 `json:"percpu,omitempty"` |
| Kernel uint64 `json:"kernel"` |
| User uint64 `json:"user"` |
| } |
| |
| // CPU regroups both a CPU usage and throttling information |
| type CPU struct { |
| Usage CPUUsage `json:"usage,omitempty"` |
| Throttling Throttling `json:"throttling,omitempty"` |
| } |
| |
| // MemoryEntry regroups statistic about a given type of memory |
| type MemoryEntry struct { |
| Limit uint64 `json:"limit"` |
| Usage uint64 `json:"usage,omitempty"` |
| Max uint64 `json:"max,omitempty"` |
| Failcnt uint64 `json:"failcnt"` |
| } |
| |
| // Memory holds information regarding the different type of memories available |
| type Memory struct { |
| Cache uint64 `json:"cache,omitempty"` |
| Usage MemoryEntry `json:"usage,omitempty"` |
| Swap MemoryEntry `json:"swap,omitempty"` |
| Kernel MemoryEntry `json:"kernel,omitempty"` |
| KernelTCP MemoryEntry `json:"kernelTCP,omitempty"` |
| Raw map[string]uint64 `json:"raw,omitempty"` |
| } |