现状梳理
测试环境:QEMU + Ubuntu20.04 虚拟机全屏播放1920x1080的视频,记录客户端的下行带宽情况。带宽数据的获取使用nload。
编码设置 | 带宽数据(MBit/s) | 备注 |
---|---|---|
GLZ无损(SPICE默认) | Max: 43.48 Min: 14.03 Avg: 27.43 | x86_64-softmmu/qemu-system-x86_64 -enable-kvm -m 4G -spice port=5930,disable-ticketing=on -vga qxl -device virtio-serial -chardev spicevmc,id=vdagent,debug=0,name=vdagent -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 -drive format=qcow2,file=test.qcow2 |
JPEG有损 | MAX: 7.9 Min: 6.21 Avg: 7.04 | qemu-system-x86_64 -enable-kvm -m 4G -spice port=5930,disable-ticketing=on,image-compression=quic,jpeg-wan-compression=always -vga qxl -device virtio-serial -chardev spicevmc,id=vdagent,debug=0,name=vdagent -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 -drive format=qcow2,file=test.qcow2 |
SPICE图像数据处理基本流程
优化方向
JPEG-2000
论文《基于SPICE协议优化的虚拟桌面技术研究》中,采用JPEG2000图像压缩算法对SPICE协议性能表现总结:
维度 | 效果 | 备注 |
---|---|---|
客户端带宽占用 | 优 12M → 2M | |
客户端CPU占用 | 差 40% ~ 70% → 50% ~ 100% | JPEG2000的解码占用更多的CPU资源,在富交互场景下,会影响用户体验。 |
延迟 | 优 数据量减小带来延迟降低 0.3ms~250ms → 平均15ms | |
视频质量 | 不明显。 带宽有限(4~10M)JPEG2000表现更好; 带宽充足(100M),原生SPICE表现更好 |
算法实现版本的横向对比
Benchmark
有损压缩:
无损压缩:
数据来源:J2K encoder benchmarks: Open JPEG, Kakadu, Fastvideo | fastcompression.com
JXL - JPEG-XL
一个新的位图格式,2017年提案,2020年敲定比特流格式,有开源实现:https://github.com/libjxl/libjxl
Benchmark
性能
性能上Jpeg-xl表现优于jpeg (libjpeg).
图像质量
(数据来源:Benchmarking JPEG XL image compression)
- y轴(Maximum Butteraugli)数值越低,代表图像质量越好
图像效果上,jpeg-xl优于jpeg, 与jpeg-2000相近。
参考资料
jpeg-xl intro: https://cloudinary.com/blog/time_for_next_gen_codecs_to_dethrone_jpeg
jpeg-xl benchmark: https://drive.cvte.com/p/DYieqi4QtYsCGJvGEQ
总结和思考
- 图像压缩算法在压缩率上的提升,对云桌面的带宽降低、延迟降低预期会有帮助。
- JXL算法在性能上优于jpeg和jpeg-2000, 效果上优于jpeg, 与jpeg-2000相近,建议优先从jpeg-xl算法入手降低spice协议带宽占用。
优化效果测试
测试环境
- qemu + ubuntu20, jpeg图像质量85, 使用image-compression=quic,jpeg-wan-compression=always 参数强制图像压缩全走jpeg
测试方法
- 使用enweb进行课件全屏预览,模拟授课场景
测试工具:
reds_stats, 查看display_channel的数据量
数据记录
用例 | jpeg | jxl | 分析 | 备注 |
---|---|---|---|---|
课件1: 37页 课件分享:《Unit 1 Hello! Part A 李婷》 点击链接可直接预览课件 | 76307260 | 56586318 | Diff: 19720942 下降大约 25.8% | |
课件2: 33页 课件分享:《Unit 4 My home Part B Kiko》 点击链接可直接预览课件 | 99681360 | 56738530 | diff: 42942830, 下降 ~40% | |
课件播放 | JPEG Quality: 100 158320883 | 118747477 | 下降:~25% |
存在的问题
-
CPU负载增加15%~30%,内存占用增加4%。
如果您觉得这篇文章有帮助,麻烦点个赞支持一下~感谢各位啦。