merge branch 'pr-2786'

Daniel Dao (1):
  Do not convert blkio weight value using blkio->io conversion scheme

LGTMs: @kolyshkin @AkihiroSuda @cyphar
Closes #2786
This commit is contained in:
Aleksa Sarai
2021-02-24 18:29:27 +11:00
4 changed files with 15 additions and 26 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ func setIo(dirPath string, cgroup *configs.Cgroup) error {
if cgroup.Resources.BlkioWeight != 0 {
filename := "io.bfq.weight"
if err := fscommon.WriteFile(dirPath, filename,
strconv.FormatUint(cgroups.ConvertBlkIOToCgroupV2Value(cgroup.Resources.BlkioWeight), 10)); err != nil {
strconv.FormatUint(uint64(cgroup.Resources.BlkioWeight), 10)); err != nil {
return err
}
}
-11
View File
@@ -400,17 +400,6 @@ func WriteCgroupProc(dir string, pid int) error {
return err
}
// Since the OCI spec is designed for cgroup v1, in some cases
// there is need to convert from the cgroup v1 configuration to cgroup v2
// the formula for BlkIOWeight is y = (1 + (x - 10) * 9999 / 990)
// convert linearly from [10-1000] to [1-10000]
func ConvertBlkIOToCgroupV2Value(blkIoWeight uint16) uint64 {
if blkIoWeight == 0 {
return 0
}
return uint64(1 + (uint64(blkIoWeight)-10)*9999/990)
}
// Since the OCI spec is designed for cgroup v1, in some cases
// there is need to convert from the cgroup v1 configuration to cgroup v2
// the formula for cpuShares is y = (1 + ((x - 2) * 9999) / 262142)
-14
View File
@@ -548,20 +548,6 @@ func TestGetHugePageSizeImpl(t *testing.T) {
}
}
func TestConvertBlkIOToCgroupV2Value(t *testing.T) {
cases := map[uint16]uint64{
0: 0,
10: 1,
1000: 10000,
}
for i, expected := range cases {
got := ConvertBlkIOToCgroupV2Value(i)
if got != expected {
t.Errorf("expected ConvertBlkIOToCgroupV2Value(%d) to be %d, got %d", i, expected, got)
}
}
}
func TestConvertCPUSharesToCgroupV2Value(t *testing.T) {
cases := map[uint64]uint64{
0: 0,
+14
View File
@@ -185,6 +185,20 @@ function setup() {
[[ "$output" == *'invalid configuration'* ]]
}
@test "runc run (blkio weight)" {
requires root cgroups_v2
set_cgroups_path "$BUSYBOX_BUNDLE"
update_config '.linux.resources.blockIO |= {"weight": 750}' "${BUSYBOX_BUNDLE}"
runc run -d --console-socket "$CONSOLE_SOCKET" test_cgroups_unified
[ "$status" -eq 0 ]
runc exec test_cgroups_unified sh -c 'cat /sys/fs/cgroup/io.bfq.weight'
[ "$status" -eq 0 ]
[ "$output" = 'default 750' ]
}
@test "runc run (cgroup v2 resources.unified only)" {
requires root cgroups_v2