diff --git a/supervisor/docker/__init__.py b/supervisor/docker/__init__.py index 4c1bc984d..471f77f20 100644 --- a/supervisor/docker/__init__.py +++ b/supervisor/docker/__init__.py @@ -61,7 +61,7 @@ class DockerInfo: @property def support_cpu_realtime(self) -> bool: """Return true, if CONFIG_RT_GROUP_SCHED is loaded.""" - if not Path("/sys/fs/cgroup/cpu.rt_runtime_us").exists(): + if not Path("/sys/fs/cgroup/cpu/cpu.rt_runtime_us").exists(): return False return bool(os.environ.get(ENV_SUPERVISOR_CPU_RT, 0)) diff --git a/supervisor/docker/addon.py b/supervisor/docker/addon.py index 927799e25..4f33fee59 100644 --- a/supervisor/docker/addon.py +++ b/supervisor/docker/addon.py @@ -265,8 +265,12 @@ class DockerAddon(DockerInterface): limits: List[docker.types.Ulimit] = [] # Need schedule functions - if self.addon.with_realtime and self.sys_docker.info.support_cpu_realtime: - limits.append(docker.types.Ulimit(name="rtprio", soft=99)) + if self.addon.with_realtime: + limits.append(docker.types.Ulimit(name="rtprio", soft=90, hard=99)) + + # Set available memory for memlock to 128MB + mem = 128 * 1024 * 1024 + limits.append(docker.types.Ulimit(name="memlock", soft=mem, hard=mem)) # Return None if no capabilities is present if limits: diff --git a/supervisor/docker/audio.py b/supervisor/docker/audio.py index 2f9a27454..a7e5198ee 100644 --- a/supervisor/docker/audio.py +++ b/supervisor/docker/audio.py @@ -59,9 +59,8 @@ class DockerAudio(DockerInterface, CoreSysAttributes): @property def ulimits(self) -> List[docker.types.Ulimit]: """Generate ulimits for audio.""" - if not self.sys_docker.info.support_cpu_realtime: - return None - return [docker.types.Ulimit(name="rtprio", soft=99)] + # Pulseaudio by default tries to use real-time scheduling with priority of 5. + return [docker.types.Ulimit(name="rtprio", soft=10, hard=10)] @property def cpu_rt_runtime(self) -> Optional[int]: