找回密码
 立即注册
搜索
查看: 4528|回复: 14

[软件] Looking glass是不是kvm上最好的共享显示器方案了?

[复制链接]
     
发表于 2023-6-30 13:00 | 显示全部楼层 |阅读模式
本帖最后由 塔奇克马 于 2023-7-3 16:33 编辑

截图 2023-06-30 13-08-28.png
随便说说:
最近继续鼓捣KVM虚拟机

环境:Ubuntu 22.04 STL 2080TI解锁了VGPU支持
我一直在找一种流畅的控制虚拟机Windows的方案,但是每个都不完美
免费的流畅度 本地自建RustDesk > Nomachine > RDP > VNC
这些是远程控制端,专门给网络优化的,所以画质帧数都是可以牺牲的,而且也并不流畅,本地控制我不需要考虑这个网络问题,这些都是不行的,
Spice GL_virtio 这个不知道怎么样了,实现一部分GPU功能到windows类似VM的虚拟显卡,有VGPU了不可能考虑这种代价偏大的方案
VNC spice 直通GPU方案
上面这两行不适合我,我是VGPU是完整的支持各种功能的所以不行的,也不可能用直通方案.
然后随便找..发现了looking glass..支持直通/VGPU/Gvt
直接打洞实现内窥镜功能,通过共享一部分内存32M+来把画面传给host,其他功能通过spice通讯实现,这种肯定要比网络实现好得多想都不用想
那么还有其他方案吗?

我先做个记录:
官网关于安装部分非常详细的,这里只是记录一部分注意事项:
官网中使用vga显示,实际上应该设置成none,没有显示,控制可以用RDP等解决
为了避免其他问题,客户端源码包和host端版本号要一致,在download页面Bleeding Edge下载最新的源码编译和host端程序
我装完了无法听到windowsguest的声音,无法解决,最终使用了PulseAudio穿透方案,Aur Wiki上的教程貌似不完整,这里做下记录
修改 /etc/libvirt/qemu.conf 中 user = "你的用户名"
virsh edit 你的虚拟机名字
头部修改为

  1. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
复制代码

并且加入如下的配置(在最后一个</devices>之后,</domain>之前):
  1.   <qemu:commandline>
  2. <qemu:arg value='-device'/>
  3. <qemu:arg value='ich9-intel-hda,bus=pcie.0,addr=0x1b'/>
  4. <qemu:arg value='-device'/>
  5. <qemu:arg value='hda-micro,audiodev=hda'/>
  6. <qemu:arg value='-audiodev'/>
  7. <qemu:arg value='pa,id=hda,server=unix:/run/user/1000/pulse/native'/>
  8.   </qemu:commandline>
复制代码

参考了这位的方案
在 /etc/apparmor.d/abstractions/libvirt-qemu 中添加
  1. /run/user/1000/pulse/native rw,
复制代码

1000是你的用户ID,如果必要的话改为你的用户ID,用户ID可以通过id命令查看。
systemctl restart libvirtd.service
systemctl --user restart pulseaudio.service
直接用窗口可以随便拉伸很不爽,所以用一些参数比如:

  1. looking-glass-client app:shmFile=/dev/shm/looking-glass win:autoResize win:size=1920x1080 win:dontUpscale win:shrinkOnUpscale
复制代码

End;

评分

参与人数 1战斗力 +1 收起 理由
痴货 + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
发表于 2023-6-30 13:33 | 显示全部楼层
延迟如何?要不试试Sunshine或者Parsec这类的Streaming软件?
回复

使用道具 举报

     
 楼主| 发表于 2023-6-30 13:34 | 显示全部楼层
痴货 发表于 2023-6-30 13:33
延迟如何?要不试试Sunshine或者Parsec这类的Streaming软件?

和实机一样无区别,所有经过网络都不行,可以淘汰了
回复

使用道具 举报

     
发表于 2023-6-30 13:46 | 显示全部楼层
搜了下发现个挺有用的网页,里面涉及到了一些Looking Glass的配置

https://asus-linux.org/wiki/vfio-guide/#option-3-looking-glass-setup
回复

使用道具 举报

     
 楼主| 发表于 2023-6-30 13:56 | 显示全部楼层
本帖最后由 塔奇克马 于 2023-6-30 14:21 编辑
痴货 发表于 2023-6-30 13:46
搜了下发现个挺有用的网页,里面涉及到了一些Looking Glass的配置

官网文档和AUR里有的

看了下
根据配置FPS应该能跑好几百
e9d68d9c69f6c5c97e62d69fb6f0120e87014db1.jpeg
分配内存影响分辨率,(128MB)4K打底不知道能不能分配到8K分辨率,内存频率对这个性能影响多大未知
回复

使用道具 举报

发表于 2023-7-1 07:33 | 显示全部楼层
痴货 发表于 2023-6-30 13:33
延迟如何?要不试试Sunshine或者Parsec这类的Streaming软件?

Looking glass延迟应该是一帧

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2023-7-1 11:37 | 显示全部楼层
装个 DisplayLink USB 显卡,输出到显示器再外接鼠键
回复

使用道具 举报

     
 楼主| 发表于 2023-7-2 15:29 | 显示全部楼层
痴货 发表于 2023-6-30 13:46
搜了下发现个挺有用的网页,里面涉及到了一些Looking Glass的配置

补充下:如果有人用他的脚本建议把
/etc/libvirt/hooks/qemu.d/win10/vm-vars.conf

VM_MEMORY=8388608
这个要比虚拟机需求大2%-10%不然会导致hugepages不够而被拒绝启动
比如你需要8192 count hugepages,那么最好8800之后转换成kib得到18022464
那么
VM_MEMORY=18022464
-----------
原文中大概是没有这个说法
回复

使用道具 举报

发表于 2023-7-2 16:24 | 显示全部楼层
看玻璃用的共享内存,延迟还是有些的,当然秒杀网络栈型远程桌面是必然的
之前直通用过,不过虚拟机还是麻烦,现在只用lutris啥的玩游戏了
回复

使用道具 举报

     
发表于 2023-7-2 21:58 | 显示全部楼层
我的vm视频就开了virtio。vga我记得最新版也是支持的但我自己没有用。这个的好处是如果lg的服务挂了的话还是能在系统内调试,不过我一般是直接rdp了。
声音不需要用pulseaudio穿透,要装spice windows client
同时lgc也支持配置文件,这样执行的时候就不需要写那么多参数。我自己的配置就很简单:
  1. $ cat .looking-glass-client.ini
  2. [app]
  3. shmFile=/dev/kvmfr0

  4. [spice]
  5. host=192.168.9.12
  6. port=5901

  7. [audio]
  8. micDefault=allow
  9. micShowIndicator=no
复制代码
回复

使用道具 举报

     
 楼主| 发表于 2023-7-2 22:57 | 显示全部楼层
不要叫水狗做主人 发表于 2023-7-2 21:58
我的vm视频就开了virtio。vga我记得最新版也是支持的但我自己没有用。这个的好处是如果lg的服务挂了的话还 ...

spice-vdagent-x64-0.10.0
virtio-win-gt-x64
virtio-win-guest-tools
spice-guest-tools-latest
都装了,没用的,是这几个中的一个吗?
回复

使用道具 举报

     
发表于 2023-7-3 15:39 | 显示全部楼层
塔奇克马 发表于 2023-7-2 08:57
spice-vdagent-x64-0.10.0
virtio-win-gt-x64
virtio-win-guest-tools

驱动直接用fedora的最新iso:https://fedorapeople.org/groups/ ... rtio-win-0.1.229-1/
libvirt我不清楚是怎么配置的,我用proxmox要加上`-spice 'addr=0.0.0.0,port=5901,disable-ticketing=on'`让spice端口可以网络访问,然后你要在lgc里面指定vm的ip

回复

使用道具 举报

     
 楼主| 发表于 2023-7-3 16:06 | 显示全部楼层
本帖最后由 塔奇克马 于 2023-7-3 16:32 编辑

截图 2023-07-03 16-03-14.png
你看看吧,反正里面一堆说正常这正常就是没声音
我要不装的话里面不会说我连上agent的,反正我没解决...什么都试过了,我就不解决了吧,
感觉这个选项disable-ticketing=on也没什么用,spice默认接口不需要任何参数的,本地连接不需要密码的




回复

使用道具 举报

     
发表于 2023-7-10 21:51 | 显示全部楼层
塔奇克马 发表于 2023-7-3 16:06
你看看吧,反正里面一堆说正常这正常就是没声音
我要不装的话里面不会说我连上agent的,反正我没解决... ...
  1. [excalibur@nixos:~]$ looking-glass-client
  2. [I]    559338722              main.c:1785 | main                           | Looking Glass (B6)
  3. [I]    559338743              main.c:1786 | main                           | Locking Method: Atomic
  4. [I]    559338843           cpuinfo.c:37   | lgDebugCPU                     | CPU Model: AMD Ryzen 7 3700X 8-Core Processor
  5. [I]    559338853           cpuinfo.c:38   | lgDebugCPU                     | CPU: 1 sockets, 8 cores, 8 threads
  6. [I]    559340541            config.c:559  | config_load                    | Loading config from: /home/excalibur/.looking-glass-client.ini
  7. [I]    559348601              main.c:1162 | lg_run                         | Using font: /nix/store/2qrasnzp0m1k640dw3phiwykzrfvwf31-dejavu-fonts-2.37/share/fonts/truetype/DejaVuSansMono.ttf
  8. [I]    559348685           ivshmem.c:128  | ivshmemOpenDev                 | KVMFR Device     : /dev/kvmfr0
  9. [I]    559360893             audio.c:159  | audio_init                     | Using AudioDev: PipeWire
  10. [I]    559360914                ps.c:245  | purespice_connect              | Connecting to socket 192.168.9.12:5901
  11. [I]    559384058               rsa.c:178  | rsa_encryptPassword            | Using Nettle
  12. [I]    559384478                ps.c:268  | purespice_connect              | Connected
  13. [I]    559384604             agent.c:103  | agent_connect                  | Connected to the spice guest agent
  14. [I]    559384625      channel_main.c:167  | onMessage_mainName             | Guest name: windows
  15. [I]    559384639      channel_main.c:183  | onMessage_mainUUID             | Guest UUID: 9856c5f6-f455-472e-ba0a-5c1b425a0ab2
  16. [I]    559396642                ps.c:644  | ps_connectChannel              | RECORD channel connected
  17. [I]    559408445                ps.c:644  | ps_connectChannel              | PLAYBACK channel connected
  18. [I]    559413962                ps.c:644  | ps_connectChannel              | INPUTS channel connected
  19. [I]    559414097               egl.c:267  | egl_initialize                 | Double buffering is off
  20. [I]    559414107              main.c:1116 | tryRenderer                    | Using Renderer: EGL
  21. [I]    559414116           channel.c:312  | onMessage_notify               | [notify] keyboard channel is insecure
  22. [I]    559416123                gl.c:58   | waylandGetEGLDisplay           | Using eglGetPlatformDisplay
  23. [I]    559440785               egl.c:828  | egl_renderStartup              | Single buffer mode
  24. [I]    559442419               egl.c:855  | egl_renderStartup              | EGL     : 1.5
  25. [I]    559442432               egl.c:856  | egl_renderStartup              | Vendor  : AMD
  26. [I]    559442435               egl.c:857  | egl_renderStartup              | Renderer: AMD Radeon RX 460 Graphics (polaris11, LLVM 15.0.7, DRM 3.52, 6.3.9)
  27. [I]    559442440               egl.c:858  | egl_renderStartup              | Version : OpenGL ES 3.2 Mesa 23.0.3
  28. [I]    559442445               egl.c:859  | egl_renderStartup              | EGL APIs: OpenGL OpenGL_ES
  29. [I]    559442455               egl.c:930  | egl_renderStartup              | Debug messages disabled, enable with egl:debug=true
  30. [I]    559471581           eglutil.c:35   | swapWithDamageInit             | Using EGL_KHR_swap_buffers_with_damage
  31. [I]    559477525              main.c:1566 | lg_run                         | Guest Information:
  32. [I]    559477542              main.c:1567 | lg_run                         | Version  : B6
  33. [I]    559477547              main.c:1588 | lg_run                         | UUID     : 9856c5f6-f455-472e-ba0a-5c1b425a0ab2
  34. [I]    559477553              main.c:1597 | lg_run                         | CPU Model: AMD Ryzen 7 3700X 8-Core Processor
  35. [I]    559477565              main.c:1598 | lg_run                         | CPU      : 1 sockets, 8 cores, 8 threads
  36. [I]    559477575              main.c:1600 | lg_run                         | Using    : DXGI Direct3D 11
  37. [I]    559477581              main.c:1636 | lg_run                         | OS       : Windows
  38. [I]    559477588              main.c:1638 | lg_run                         | OS Name  : Windows 10 Pro (Build: 22621)
  39. [I]    559477592              main.c:1660 | lg_run                         | Starting session
  40. [I]    559478399              main.c:548  | main_frameThread               | Using DMA buffer support
  41. [I]    559654476              main.c:698  | main_frameThread               | Format: FRAME_TYPE_BGRA 3440x1440 stride:3456 pitch:13824 rotation:0
  42. [I]    559656543              main.c:698  | main_frameThread               | Format: FRAME_TYPE_BGRA 3440x1440 stride:3456 pitch:13824 rotation:0
复制代码

我这边看到有连接RECORD和PLAYBACK channel,你的log里面没有
不过我看到你的guest version和我的不一样。你的guest是自己编译的么?是的话用正式release的版本看看
回复

使用道具 举报

     
 楼主| 发表于 2023-7-10 21:52 | 显示全部楼层
不要叫水狗做主人 发表于 2023-7-10 21:51
我这边看到有连接RECORD和PLAYBACK channel,你的log里面没有
不过我看到你的guest version和我的不一样 ...

是自己编译的最新版本,不搞了玩够了,过一段时间再说
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-21 05:27 , Processed in 0.059206 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表