我想全面了解Docker容器的运行时性能开销.我发现网络的参考传闻速度慢了~100μs.
我还发现运行时成本的参考值"可以忽略不计"和"接近于零",但我想更准确地了解这些成本是多少.理想情况下,我想知道Docker正在以性能成本和抽象的东西进行抽象而没有性能成本.网络,CPU,内存等
此外,如果存在抽象成本,是否有办法绕过抽象成本.例如,也许我可以在Docker中直接安装磁盘.
我的操作系统版本Ubuntu 16.04.我想停止码头,所以我在终端运行:
sudo systemctl stop docker
Run Code Online (Sandbox Code Playgroud)
但是这个命令对我没有帮助:
gridsim1103 ~: ps ax | grep docker
11347 ? Sl 0:00 containerd-shim 487e3784f983274131d37bde1641db657e76e41bdd056f43ef4ad5adc1bfc518 /var/run/docker/libcontainerd/487e3784f983274131d37bde1641db657e76e41bdd056f43ef4ad5adc1bfc518 runc
14299 pts/2 S+ 0:00 grep --color=auto docker
29914 ? S 0:00 sudo dockerd -H gridsim1103:2376
29915 ? Sl 4:45 dockerd -H gridsim1103:2376
29922 ? Ssl 0:24 containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime runc
30107 ? Sl 1:01 /usr/bin/docker-proxy -proto tcp -host-ip 188.184.80.77 -host-port 8500 -container-ip 192.17.0.2 -container-port 8500
30139 ? Sl …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 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.
非常感谢您的建议和帮助。