From 6aee4c03b0d38452b04ab0d9bf4ebd6c80f21d4b Mon Sep 17 00:00:00 2001 From: Rohit Jnagal Date: Mon, 22 Sep 2014 23:24:34 +0000 Subject: [PATCH] Flatten diskio stats and use struct key. Docker-DCO-1.1-Signed-off-by: Rohit Jnagal (github: rjnagal) --- container/libcontainer/helpers.go | 17 +++++++++++------ info/container.go | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/container/libcontainer/helpers.go b/container/libcontainer/helpers.go index c48bdbb9..6fd47a44 100644 --- a/container/libcontainer/helpers.go +++ b/container/libcontainer/helpers.go @@ -15,7 +15,6 @@ package libcontainer import ( - "fmt" "time" "github.com/docker/libcontainer" @@ -46,12 +45,19 @@ func DiskStatsCopy(blkio_stats []cgroups.BlkioStatEntry) (stat []info.PerDiskSta if len(blkio_stats) == 0 { 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 { major := blkio_stats[i].Major minor := blkio_stats[i].Minor - device_string := fmt.Sprintf("%d:%d", major, minor) - diskp, ok := disk_stat[device_string] + disk_key := DiskKey{ + Major: major, + Minor: minor, + } + diskp, ok := disk_stat[disk_key] if !ok { disk := info.PerDiskStats{ Major: major, @@ -59,7 +65,7 @@ func DiskStatsCopy(blkio_stats []cgroups.BlkioStatEntry) (stat []info.PerDiskSta } disk.Stats = make(map[string]uint64) diskp = &disk - disk_stat[device_string] = diskp + disk_stat[disk_key] = diskp } op := blkio_stats[i].Op if op == "" { @@ -95,7 +101,6 @@ func toContainerStats(libcontainerStats *libcontainer.ContainerStats) *info.Cont ret.Cpu.Usage.Total += s.CpuStats.CpuUsage.PercpuUsage[i] } - ret.DiskIo = new(info.DiskIoStats) ret.DiskIo.IoServiceBytes = DiskStatsCopy(s.BlkioStats.IoServiceBytesRecursive) ret.DiskIo.IoServiced = DiskStatsCopy(s.BlkioStats.IoServicedRecursive) ret.DiskIo.IoQueued = DiskStatsCopy(s.BlkioStats.IoQueuedRecursive) diff --git a/info/container.go b/info/container.go index 8ab7af0c..18ea9a2e 100644 --- a/info/container.go +++ b/info/container.go @@ -228,7 +228,7 @@ type ContainerStats struct { // The time of this stat point. Timestamp time.Time `json:"timestamp"` Cpu *CpuStats `json:"cpu,omitempty"` - DiskIo *DiskIoStats `json:"diskio,omitempty"` + DiskIo DiskIoStats `json:"diskio,omitempty"` Memory *MemoryStats `json:"memory,omitempty"` Network *NetworkStats `json:"network,omitempty"` }