我正在尝试在 Ubuntu 18.04 上运行的 docker 容器中使用实时调度。
我已经按照给定的方法安装了实时内核here https://stackoverflow.com/questions/51669724/install-rt-linux-patch-for-ubuntu。我选择了内核版本 5.2.9 及其相关的 rt 补丁。
的输出uname -a
确认实时内核已正确安装并运行:
Linux myLaptop 5.2.9-rt3 #1 SMP PREEMPT RT ...
要运行我的容器,我发出以下命令:
docker run --cpu-rt-runtime=95000 \
--ulimit rtprio=99 \
--ulimit memlock=102400 \
--cap-add=sys_nice \
--privileged \
-it \
myimage:latest
但是,我得到的输出是:
docker: Error response from daemon: Your kernel does not support cgroup cpu real-time runtime.
我发现这可能与失踪有关CONFIG_RT_GROUP_SCHED
正如问题中详细说明的here https://github.com/oracle/docker-images/issues/937。事实上,如果我运行提供的脚本这一页 https://github.com/moby/moby/blob/master/contrib/check-config.sh检查内核与 Docker 的兼容性,我得到:
- CONFIG_RT_GROUP_SCHED: missing
这似乎证实了 Docker 正在使用它进行实时调度,但内核中并未提供,尽管已修补为实时。
从那时起,我试图寻找解决方案,但徒劳无功。我不太熟悉内核配置,不知道是否需要使用特定选项来编译它,以及选择哪一个来添加缺少的选项CONFIG_RT_GROUP_SCHED
.
预先非常感谢您的建议和帮助。