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:
Rohit Jnagal 2014-09-22 23:24:34 +00:00
parent 9a76da9993
commit 6aee4c03b0
2 changed files with 12 additions and 7 deletions

View File

@ -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)

View File

@ -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"`
}