[Exchange and share] 编译了支持Gfxstream后端的qemu
Tofloor
poster avatar
mozixun
deepin
2024-06-28 16:33
Author

谷歌为了解决虚拟机图形效率低下的问题而写了一套gfxstream协议,它可以让支持gfxstream-backand(比如Cuttlefish跑的AOSP)的虚拟机图形效率至少达到70%(而且这个数据是cuttlefish在WebRTC有很多损耗的情况下测试结果),目前我编译了带gfxstream支持的qemu 9.0.1和Gfxstream宿主后端的deb包,有坛友能否帮忙测试一下我编译的qemu能否运行gfxstream,效率又如何?谢谢!blush

需求:需要Wayland显示协议,deepin v23下建议安装weston/Sway试一下

这是使用Sommelier开启虚拟机Wayland应用教程:https://crosvm.dev/book/devices/wayland.html

Gfxstream宿主端deb(解压后安装):https://wwi.lanzoup.com/iOuS122yocpa

Qemu 9.0.1并加入gfxstream支持版本:qemu-gfxstream.tar.gz

Reply Favorite View the author
All Replies
135******40
deepin
2024-08-12 17:30
#1

楼主好,请问下,gfxstream性能达到硬件性能的70%是哪里得到的结论,我自己部署cuttlefish运行android14,测试gfxstream的性能还不如drm_virgl,是我哪里弄错了吗?

Reply View the author
mozixun
deepin
2024-08-12 17:34
#2
135******40

楼主好,请问下,gfxstream性能达到硬件性能的70%是哪里得到的结论,我自己部署cuttlefish运行android14,测试gfxstream的性能还不如drm_virgl,是我哪里弄错了吗?

不是,我在CSDN上看到,以及我自己部署了A12镜像得出来这个结论

而且,cuttlefish由于Wayland会话是模拟出来而不是宿主系统直接运行的,必然导致性能大幅下滑

Reply View the author
135******40
deepin
2024-08-13 19:19
#3
mozixun

不是,我在CSDN上看到,以及我自己部署了A12镜像得出来这个结论

而且,cuttlefish由于Wayland会话是模拟出来而不是宿主系统直接运行的,必然导致性能大幅下滑

感谢楼主的回答,我自己用一台电脑部署的ubuntu系统,理论上wayland都是运行在ubuntu上的,android图形通信在cuttlefish中使用gfxstream,默认是通过asg的方式,即共享内存的方式,我是使用glmark在android端测试的跑分,只是理解不了,同样的cuttlefish环境,使用--gpu_mode=gfxstream性能竟然比--gpu_mode=drm_virgl要低的多

Reply View the author
mozixun
deepin
2024-08-13 19:49
#4
135******40

感谢楼主的回答,我自己用一台电脑部署的ubuntu系统,理论上wayland都是运行在ubuntu上的,android图形通信在cuttlefish中使用gfxstream,默认是通过asg的方式,即共享内存的方式,我是使用glmark在android端测试的跑分,只是理解不了,同样的cuttlefish环境,使用--gpu_mode=gfxstream性能竟然比--gpu_mode=drm_virgl要低的多

不确定是不是用了Virtio-Venus,这玩意效率跟gfxstream差不多

而且cuttlefish涉及到开了个虚拟Wayland会话,这个跟宿主系统是不是wayland没有关系,你在后台看cuttlefish运行时的crosvm指令就知道了

Reply View the author
135******40
deepin
2024-08-14 11:22
#5
mozixun

不确定是不是用了Virtio-Venus,这玩意效率跟gfxstream差不多

而且cuttlefish涉及到开了个虚拟Wayland会话,这个跟宿主系统是不是wayland没有关系,你在后台看cuttlefish运行时的crosvm指令就知道了

感谢,我基本理解了,wayland-server是为webrtc服务的,这块性能影响未知,但对GPU而言应该不大,具体我再分析分析,有机会再讨论讨论

Reply View the author
wukong_android
deepin
2024-09-09 15:31
#6

为什么我安装完不行啊?已经困惑我好几天了

bash: launch_cvd: 未找到命令

wukong@wukong-PC:/mnt/asop/cuttlefish/android-cuttlefish$ sudo dpkg -i ./cuttlefish-base_*64.deb || sudo apt-get install -f
sudo dpkg -i ./cuttlefish-user
_*64.deb || sudo apt-get install -f
请输入密码:
验证成功
正在选中未选择的软件包 cuttlefish-base。
(正在读取数据库 ... 系统当前共安装有 341648 个文件和目录。)
准备解压 .../cuttlefish-base_1.0.0_amd64.deb ...
正在解压 cuttlefish-base (1.0.0) ...
正在设置 cuttlefish-base (1.0.0) ...
正在选中未选择的软件包 cuttlefish-user。
(正在读取数据库 ... 系统当前共安装有 341659 个文件和目录。)
准备解压 .../cuttlefish-user_1.0.0_amd64.deb ...
正在解压 cuttlefish-user (1.0.0) ...
正在设置 cuttlefish-user (1.0.0) ...
wukong@wukong-PC:/mnt/asop/cuttlefish/android-cuttlefish​ sudo usermod -aG kvm,cvdnetwork,render USER
wukong@wukong-PC:/mnt/asop/cuttlefish/android-cuttlefish$ launch_cvd
bash: launch_cvd: 未找到命令

Reply View the author
mozixun
deepin
2024-09-09 17:00
#7
wukong_android

为什么我安装完不行啊?已经困惑我好几天了

bash: launch_cvd: 未找到命令

wukong@wukong-PC:/mnt/asop/cuttlefish/android-cuttlefish$ sudo dpkg -i ./cuttlefish-base_*64.deb || sudo apt-get install -f
sudo dpkg -i ./cuttlefish-user
_*64.deb || sudo apt-get install -f
请输入密码:
验证成功
正在选中未选择的软件包 cuttlefish-base。
(正在读取数据库 ... 系统当前共安装有 341648 个文件和目录。)
准备解压 .../cuttlefish-base_1.0.0_amd64.deb ...
正在解压 cuttlefish-base (1.0.0) ...
正在设置 cuttlefish-base (1.0.0) ...
正在选中未选择的软件包 cuttlefish-user。
(正在读取数据库 ... 系统当前共安装有 341659 个文件和目录。)
准备解压 .../cuttlefish-user_1.0.0_amd64.deb ...
正在解压 cuttlefish-user (1.0.0) ...
正在设置 cuttlefish-user (1.0.0) ...
wukong@wukong-PC:/mnt/asop/cuttlefish/android-cuttlefish​ sudo usermod -aG kvm,cvdnetwork,render USER
wukong@wukong-PC:/mnt/asop/cuttlefish/android-cuttlefish$ launch_cvd
bash: launch_cvd: 未找到命令

1.建议您先看一下官方文档:https://source.android.com/docs/devices/cuttlefish/get-started?hl=zh-cn

里面有从0开始的安装和启动教程

2.cuttlefish镜像的路径里不要出现带中文名字的,cuttlefish在中文路径中运行可能会出现莫名其妙的路径识别问题

Reply View the author