我正在尝试在 Ubuntu 18.04 上运行的 docker 容器中使用实时调度。
我已经按照此处给出的方法安装了实时内核。我选择了内核版本 5.2.9 及其相关的 rt 补丁。
的输出uname -a
确认实时内核已正确安装并运行:
Linux myLaptop 5.2.9-rt3 #1 SMP PREEMPT RT ...
Run Code Online (Sandbox Code Playgroud)
要运行我的容器,我发出以下命令:
docker run --cpu-rt-runtime=95000 \
--ulimit rtprio=99 \
--ulimit memlock=102400 \
--cap-add=sys_nice \
--privileged \
-it \
myimage:latest
Run Code Online (Sandbox Code Playgroud)
但是,我得到的输出是:
docker: Error response from daemon: Your kernel does not support cgroup cpu real-time runtime.
Run Code Online (Sandbox Code Playgroud)
我已经看到这可能与此处CONFIG_RT_GROUP_SCHED
问题中详述的缺失有关。事实上,如果我运行此页面提供的脚本来检查内核与 Docker 的兼容性,我会得到:
- CONFIG_RT_GROUP_SCHED: missing
Run Code Online (Sandbox Code Playgroud)
这似乎证实了 Docker 正在使用它进行实时调度,但内核中并未提供,尽管已修补为实时。
从那里,我试图徒劳地寻找解决方案。我不太精通内核配置,不知道是否需要使用特定选项编译它,以及选择哪个选项来添加缺少的CONFIG_RT_GROUP_SCHED
.
非常感谢您的建议和帮助。
试图通过修补/安装RT Linux来修改内核,从而使我的通用Ubuntu成为实时Ubuntu,但找不到直接的设置。有人可以帮忙吗?