mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-11 06:03:57 +08:00
693a471af8
...instead of an explicit or absent status check. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
78 lines
2.0 KiB
Bash
78 lines
2.0 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load helpers
|
|
|
|
function setup() {
|
|
requires root
|
|
setup_debian
|
|
}
|
|
|
|
function teardown() {
|
|
teardown_bundle
|
|
}
|
|
|
|
@test "scheduler is applied" {
|
|
update_config ' .process.scheduler = {
|
|
"policy": "SCHED_BATCH",
|
|
"priority": 0,
|
|
"nice": 19
|
|
}'
|
|
|
|
runc run -d --console-socket "$CONSOLE_SOCKET" test_scheduler
|
|
[ "$status" -eq 0 ]
|
|
|
|
# Check init settings.
|
|
runc exec test_scheduler chrt -p 1
|
|
[ "$status" -eq 0 ]
|
|
[[ "${lines[0]}" == *"scheduling policy: SCHED_BATCH" ]]
|
|
[[ "${lines[1]}" == *"priority: 0" ]]
|
|
|
|
# Check exec settings derived from config.json.
|
|
runc exec test_scheduler sh -c 'chrt -p $$'
|
|
[ "$status" -eq 0 ]
|
|
[[ "${lines[0]}" == *"scheduling policy: SCHED_BATCH" ]]
|
|
[[ "${lines[1]}" == *"priority: 0" ]]
|
|
|
|
# Another exec, with different scheduler settings.
|
|
proc='
|
|
{
|
|
"terminal": false,
|
|
"args": [ "/bin/sleep", "600" ],
|
|
"cwd": "/",
|
|
"scheduler": {
|
|
"policy": "SCHED_DEADLINE",
|
|
"flags": [ "SCHED_FLAG_RESET_ON_FORK" ],
|
|
"nice": 19,
|
|
"priority": 0,
|
|
"runtime": 42000,
|
|
"deadline": 100000,
|
|
"period": 1000000
|
|
}
|
|
}'
|
|
__runc exec -d --pid-file pid.txt --process <(echo "$proc") test_scheduler
|
|
|
|
run -0 chrt -p "$(cat pid.txt)"
|
|
[[ "${lines[0]}" == *"scheduling policy: SCHED_DEADLINE|SCHED_RESET_ON_FORK" ]]
|
|
[[ "${lines[1]}" == *"priority: 0" ]]
|
|
[[ "${lines[2]}" == *"runtime/deadline/period parameters: 42000/100000/1000000" ]]
|
|
}
|
|
|
|
# Checks that runc emits a specific error when scheduling policy is used
|
|
# together with specific CPUs. As documented in sched_setattr(2):
|
|
#
|
|
# ERRORS:
|
|
# ...
|
|
# EPERM The CPU affinity mask of the thread specified by pid does not
|
|
# include all CPUs in the system (see sched_setaffinity(2)).
|
|
#
|
|
@test "scheduler vs cpus" {
|
|
requires smp
|
|
|
|
update_config ' .linux.resources.cpu.cpus = "0"
|
|
| .process.scheduler = {"policy": "SCHED_DEADLINE", "nice": 19, "runtime": 42000, "deadline": 1000000, "period": 1000000, }'
|
|
|
|
runc run -d --console-socket "$CONSOLE_SOCKET" test_scheduler
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" == *"process scheduler can't be used together with AllowedCPUs"* ]]
|
|
}
|