Merge pull request #9594 from filbranden/cpu_quota_period1
core: add CPUQuotaPeriodSec=
This commit is contained in:
@@ -560,6 +560,11 @@ tests += [
|
||||
[],
|
||||
'', 'manual'],
|
||||
|
||||
[['src/test/test-cgroup-cpu.c'],
|
||||
[libcore,
|
||||
libshared],
|
||||
[]],
|
||||
|
||||
[['src/test/test-cgroup-mask.c',
|
||||
'src/test/test-helper.c'],
|
||||
[libcore,
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "cgroup.h"
|
||||
#include "log.h"
|
||||
|
||||
static void test_cgroup_cpu_adjust_period(void) {
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
/* Period 1ms, quota 40% -> Period 2.5ms */
|
||||
assert_se(2500 == cgroup_cpu_adjust_period(USEC_PER_MSEC, 400 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 10ms, quota 10% -> keep. */
|
||||
assert_se(10 * USEC_PER_MSEC == cgroup_cpu_adjust_period(10 * USEC_PER_MSEC, 100 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 1ms, quota 1000% -> keep. */
|
||||
assert_se(USEC_PER_MSEC == cgroup_cpu_adjust_period(USEC_PER_MSEC, 10000 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 100ms, quota 30% -> keep. */
|
||||
assert_se(100 * USEC_PER_MSEC == cgroup_cpu_adjust_period(100 * USEC_PER_MSEC, 300 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 5s, quota 40% -> adjust to 1s. */
|
||||
assert_se(USEC_PER_SEC == cgroup_cpu_adjust_period(5 * USEC_PER_SEC, 400 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 2s, quota 250% -> adjust to 1s. */
|
||||
assert_se(USEC_PER_SEC == cgroup_cpu_adjust_period(2 * USEC_PER_SEC, 2500 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 10us, quota 5,000,000% -> adjust to 1ms. */
|
||||
assert_se(USEC_PER_MSEC == cgroup_cpu_adjust_period(10, 50000000 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 10ms, quota 50,000% -> keep. */
|
||||
assert_se(10 * USEC_PER_MSEC == cgroup_cpu_adjust_period(10 * USEC_PER_MSEC, 500000 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 10ms, quota 1% -> adjust to 100ms. */
|
||||
assert_se(100 * USEC_PER_MSEC == cgroup_cpu_adjust_period(10 * USEC_PER_MSEC, 10 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 10ms, quota .001% -> adjust to 1s. */
|
||||
assert_se(1 * USEC_PER_SEC == cgroup_cpu_adjust_period(10 * USEC_PER_MSEC, 10, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 0ms, quota 200% -> adjust to 1ms. */
|
||||
assert_se(1 * USEC_PER_MSEC == cgroup_cpu_adjust_period(0, 2 * USEC_PER_SEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
/* Period 0ms, quota 40% -> adjust to 2.5ms. */
|
||||
assert_se(2500 == cgroup_cpu_adjust_period(0, 400 * USEC_PER_MSEC, USEC_PER_MSEC, USEC_PER_SEC));
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
test_cgroup_cpu_adjust_period();
|
||||
return 0;
|
||||
}
|
||||
@@ -85,6 +85,26 @@ static void test_parse_sec_fix_0(void) {
|
||||
assert_se(u == USEC_INFINITY);
|
||||
}
|
||||
|
||||
static void test_parse_sec_def_infinity(void) {
|
||||
usec_t u;
|
||||
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
assert_se(parse_sec_def_infinity("5s", &u) >= 0);
|
||||
assert_se(u == 5 * USEC_PER_SEC);
|
||||
assert_se(parse_sec_def_infinity("", &u) >= 0);
|
||||
assert_se(u == USEC_INFINITY);
|
||||
assert_se(parse_sec_def_infinity(" ", &u) >= 0);
|
||||
assert_se(u == USEC_INFINITY);
|
||||
assert_se(parse_sec_def_infinity("0s", &u) >= 0);
|
||||
assert_se(u == 0);
|
||||
assert_se(parse_sec_def_infinity("0", &u) >= 0);
|
||||
assert_se(u == 0);
|
||||
assert_se(parse_sec_def_infinity(" 0", &u) >= 0);
|
||||
assert_se(u == 0);
|
||||
assert_se(parse_sec_def_infinity("-5s", &u) < 0);
|
||||
}
|
||||
|
||||
static void test_parse_time(void) {
|
||||
usec_t u;
|
||||
|
||||
@@ -472,6 +492,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
test_parse_sec();
|
||||
test_parse_sec_fix_0();
|
||||
test_parse_sec_def_infinity();
|
||||
test_parse_time();
|
||||
test_parse_nsec();
|
||||
test_format_timespan(1);
|
||||
|
||||
Reference in New Issue
Block a user