From 27ca9e94fd920c76c2285b80298533f751f3da4a Mon Sep 17 00:00:00 2001 From: Leno Hou Date: Fri, 14 Dec 2018 12:05:18 +0000 Subject: [PATCH] blkiodev: limit blkio device's read/write Bps/IOps fixes #2509 Signed-off-by: Leno Hou --- cli/update.go | 8 ++++++++ cri/v1alpha2/cri_utils.go | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cli/update.go b/cli/update.go index cf827d3767..dab1f1a6a5 100644 --- a/cli/update.go +++ b/cli/update.go @@ -51,6 +51,10 @@ func (uc *UpdateCommand) addFlags() { flagSet.StringSliceVarP(&uc.labels, "label", "l", nil, "Set label for container") flagSet.StringVar(&uc.restartPolicy, "restart", "", "Restart policy to apply when container exits") flagSet.StringSliceVar(&uc.diskQuota, "disk-quota", nil, "Update disk quota for container(/=10g)") + flagSet.Var(&uc.blkioDeviceReadBps, "device-read-bps", "Limit read rate (bytes per second) from a device") + flagSet.Var(&uc.blkioDeviceWriteBps, "device-write-bps", "Limit write rate (bytes per second) from a device") + flagSet.Var(&uc.blkioDeviceReadIOps, "device-read-iops", "Limit read rate (bytes per second) from a device") + flagSet.Var(&uc.blkioDeviceWriteIOps, "device-write-iops", "Limit write rate (bytes per second) from a device") } // updateRun is the entry of update command. @@ -83,6 +87,10 @@ func (uc *UpdateCommand) updateRun(args []string) error { Memory: memory, MemorySwap: memorySwap, BlkioWeight: uc.blkioWeight, + BlkioDeviceReadBps: uc.blkioDeviceReadBps.Value(), + BlkioDeviceWriteBps: uc.blkioDeviceWriteBps.Value(), + BlkioDeviceReadIOps: uc.blkioDeviceReadIOps.Value(), + BlkioDeviceWriteIOps: uc.blkioDeviceWriteIOps.Value(), } restartPolicy, err := opts.ParseRestartPolicy(uc.restartPolicy) diff --git a/cri/v1alpha2/cri_utils.go b/cri/v1alpha2/cri_utils.go index c97734dda9..61e5615fa2 100644 --- a/cri/v1alpha2/cri_utils.go +++ b/cri/v1alpha2/cri_utils.go @@ -1043,7 +1043,7 @@ func parseResourcesFromCRI(runtimeResources *runtime.LinuxContainerResources) ap BlkioDeviceWriteBps: parseThrottleDeviceFromCRI(runtimeResources.GetBlkioDeviceWriteBps()), BlkioDeviceReadIOps: parseThrottleDeviceFromCRI(runtimeResources.GetBlkioDeviceRead_IOps()), BlkioDeviceWriteIOps: parseThrottleDeviceFromCRI(runtimeResources.GetBlkioDeviceWrite_IOps()), - DiskQuota: runtimeResources.GetDiskQuota(), + DiskQuota: runtimeResources.GetDiskQuota(), KernelMemory: runtimeResources.GetKernelMemory(), MemoryReservation: runtimeResources.GetMemoryReservation(), MemorySwappiness: memorySwappiness,