我的硬件是 Ai9H365(880m) GPU 水平大概在 1650 左右,最近在尝试三种不同的容器方案发现了一点有趣的,在测试了对于运行 firefox 时 webGL 的运行性能 鱼群测试
在驱动正常,且均挂载 /dev/dri
、 /tmp/.X11-unix
情况下,把鱼群拉到 30000,同样分辨率下(2560x1600),canvas 宽高为 1024,持续运行了 10 分钟。
以本机测试 61 fps 为基准,bwrap 几乎为本机帧数,nspawn 会少个几 fps 左右,docker 则比本机低了 20 fps
从 webGL 画面帧数上看 bwrap ≈ 本机 > nspawn > docker
感觉 docker 对于 gpu 的利用不是很好,也许是因为虚拟化程度高?👀 不过从另一个角度看,docker 拥有海量镜像资源,如果用些许性能损失换取便利生态好像也可以接受。只是在追求极致性能时可能还是会考虑用 bwrap 这类更轻的容器方案,而 systemd-nspawn 则介于两者之间。
容器 | 主要特点 | 图形性能 | 量级程度 | 便利性 |
---|---|---|---|---|
bwrap | 需要自行准备基础环境,极简基础沙箱工具,只提供隔离功能,但是用起来很灵活,可定制程度高 | 接近原生 | 轻 | 差 |
systemd-nspawn | 需要自行准备基础环境,拥有不错的 systemd 支持,支持跨架构,相比 bwrap 拥有更多工具 | 非常好 | 中 | 还行 |
docker | 可以开箱即用,docker hub 拥有海量镜像生态,复用性强,非常多的工具 | 一般 | 重 | 好 |
有关这些容器的使用和配置参数,可以了解往期相关文章: