Flatten diskio stats and use struct key.
Docker-DCO-1.1-Signed-off-by: Rohit Jnagal <jnagal@google.com> (github: rjnagal)
This commit is contained in:
parent
9a76da9993
commit
6aee4c03b0
@ -15,7 +15,6 @@
|
|||||||
package libcontainer
|
package libcontainer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/docker/libcontainer"
|
"github.com/docker/libcontainer"
|
||||||
@ -46,12 +45,19 @@ func DiskStatsCopy(blkio_stats []cgroups.BlkioStatEntry) (stat []info.PerDiskSta
|
|||||||
if len(blkio_stats) == 0 {
|
if len(blkio_stats) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
disk_stat := make(map[string]*info.PerDiskStats)
|
type DiskKey struct {
|
||||||
|
Major uint64
|
||||||
|
Minor uint64
|
||||||
|
}
|
||||||
|
disk_stat := make(map[DiskKey]*info.PerDiskStats)
|
||||||
for i := range blkio_stats {
|
for i := range blkio_stats {
|
||||||
major := blkio_stats[i].Major
|
major := blkio_stats[i].Major
|
||||||
minor := blkio_stats[i].Minor
|
minor := blkio_stats[i].Minor
|
||||||
device_string := fmt.Sprintf("%d:%d", major, minor)
|
disk_key := DiskKey{
|
||||||
diskp, ok := disk_stat[device_string]
|
Major: major,
|
||||||
|
Minor: minor,
|
||||||
|
}
|
||||||
|
diskp, ok := disk_stat[disk_key]
|
||||||
if !ok {
|
if !ok {
|
||||||
disk := info.PerDiskStats{
|
disk := info.PerDiskStats{
|
||||||
Major: major,
|
Major: major,
|
||||||
@ -59,7 +65,7 @@ func DiskStatsCopy(blkio_stats []cgroups.BlkioStatEntry) (stat []info.PerDiskSta
|
|||||||
}
|
}
|
||||||
disk.Stats = make(map[string]uint64)
|
disk.Stats = make(map[string]uint64)
|
||||||
diskp = &disk
|
diskp = &disk
|
||||||
disk_stat[device_string] = diskp
|
disk_stat[disk_key] = diskp
|
||||||
}
|
}
|
||||||
op := blkio_stats[i].Op
|
op := blkio_stats[i].Op
|
||||||
if op == "" {
|
if op == "" {
|
||||||
@ -95,7 +101,6 @@ func toContainerStats(libcontainerStats *libcontainer.ContainerStats) *info.Cont
|
|||||||
ret.Cpu.Usage.Total += s.CpuStats.CpuUsage.PercpuUsage[i]
|
ret.Cpu.Usage.Total += s.CpuStats.CpuUsage.PercpuUsage[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.DiskIo = new(info.DiskIoStats)
|
|
||||||
ret.DiskIo.IoServiceBytes = DiskStatsCopy(s.BlkioStats.IoServiceBytesRecursive)
|
ret.DiskIo.IoServiceBytes = DiskStatsCopy(s.BlkioStats.IoServiceBytesRecursive)
|
||||||
ret.DiskIo.IoServiced = DiskStatsCopy(s.BlkioStats.IoServicedRecursive)
|
ret.DiskIo.IoServiced = DiskStatsCopy(s.BlkioStats.IoServicedRecursive)
|
||||||
ret.DiskIo.IoQueued = DiskStatsCopy(s.BlkioStats.IoQueuedRecursive)
|
ret.DiskIo.IoQueued = DiskStatsCopy(s.BlkioStats.IoQueuedRecursive)
|
||||||
|
@ -228,7 +228,7 @@ type ContainerStats struct {
|
|||||||
// The time of this stat point.
|
// The time of this stat point.
|
||||||
Timestamp time.Time `json:"timestamp"`
|
Timestamp time.Time `json:"timestamp"`
|
||||||
Cpu *CpuStats `json:"cpu,omitempty"`
|
Cpu *CpuStats `json:"cpu,omitempty"`
|
||||||
DiskIo *DiskIoStats `json:"diskio,omitempty"`
|
DiskIo DiskIoStats `json:"diskio,omitempty"`
|
||||||
Memory *MemoryStats `json:"memory,omitempty"`
|
Memory *MemoryStats `json:"memory,omitempty"`
|
||||||
Network *NetworkStats `json:"network,omitempty"`
|
Network *NetworkStats `json:"network,omitempty"`
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user