blob: 023b49b587adf36df51d0ce2de0803fdd37b14b2 [file] [log] [blame]
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
description "configure rt runtime limits"
author "chromium-os-dev@chromium.org"
# This job depends on two other jobs: 1) cgroups.conf that creates
# session_manager_containers/ and 2) ui.conf that creates ui/. Because of the
# dependency, this job uses 'start on started ui' to wait for ui.conf's
# pre-start script to finish. This job doesn't have to wait for cgroups.conf
# because ui.conf already does that. 'on started boot-services' is also added
# to prevent the job from being started again on logout. The job should run
# only once shortly after device boot.
start on started boot-services and started ui
task
# Controlled by ebuild to assign rt_runtime_us to the correct ARC.
env IS_ARCVM=0
script
write_log() {
logger -t "${UPSTART_JOB}" "failed to write $1"
}
# set cgroup based limits.
echo 1000000 > /sys/fs/cgroup/cpu/cpu.rt_period_us || write_log cpu.rt_period_us
echo 850000 > /sys/fs/cgroup/cpu/cpu.rt_runtime_us || write_log cpu.rt_runtime_us
# Assign most of the RT times to ui group.
echo 1000000 > /sys/fs/cgroup/cpu/ui/cpu.rt_period_us || write_log ui/cpu.rt_period_us
echo 600000 > /sys/fs/cgroup/cpu/ui/cpu.rt_runtime_us || write_log ui/cpu.rt_runtime_us
if [ ${IS_ARCVM} -eq 1 ]; then
# Assign RT times to vms group.
echo 1000000 > /sys/fs/cgroup/cpu/vms/cpu.rt_period_us || \
write_log vms/cpu.rt_period_us
echo 250000 > /sys/fs/cgroup/cpu/vms/cpu.rt_runtime_us || \
write_log vms/cpu.rt_runtime_us
# Assign RT times to vmc/arc group.
echo 1000000 > /sys/fs/cgroup/cpu/vms/arc/cpu.rt_period_us || \
write_log vms/arc/cpu.rt_period_us
echo 200000 > /sys/fs/cgroup/cpu/vms/arc/cpu.rt_runtime_us || \
write_log vms/arc/cpu.rt_runtime_us
else
# Assign RT times to session_manager_containers group.
echo 1000000 > /sys/fs/cgroup/cpu/session_manager_containers/cpu.rt_period_us || \
write_log session_manager_containers/cpu.rt_period_us
echo 200000 > /sys/fs/cgroup/cpu/session_manager_containers/cpu.rt_runtime_us || \
write_log session_manager_containers/cpu.rt_runtime_us
# Assign RT times to vms group.
echo 1000000 > /sys/fs/cgroup/cpu/vms/cpu.rt_period_us || \
write_log vms/cpu.rt_period_us
echo 50000 > /sys/fs/cgroup/cpu/vms/cpu.rt_runtime_us || \
write_log vms/cpu.rt_runtime_us
fi
# Assign RT times to vmc/termina group.
echo 1000000 > /sys/fs/cgroup/cpu/vms/termina/cpu.rt_period_us || \
write_log vms/termina/cpu.rt_period_us
echo 50000 > /sys/fs/cgroup/cpu/vms/termina/cpu.rt_runtime_us || \
write_log vms/termina/cpu.rt_runtime_us
# set system-wide limit
echo 1000000 > /proc/sys/kernel/sched_rt_period_us || write_log sched_rt_period_us
echo 850000 > /proc/sys/kernel/sched_rt_runtime_us || write_log sched_rt_runtime_us
end script