KVM spice协议在高分屏上的分辨率问题

高分屏用起来很爽,但是目前还是经常会遇到各类问题,比如,最近我发现如果我使用扩展显示器,virt manager可以完美的切换guest 的分辨率,但是一旦我切回笔记本的屏幕(高分屏),guest就无法自动更新分辨率,而是会有一个最大上限比如 1600x1020 之类的。

最后发现是QXL的内存限制只有16M,莫非是不够用?计算一下在 3000x2000 的屏幕上需要多少内存来当显存:

In [1]: 3000 * 2000 * 32 / 8 / 1024 / 1024
Out[1]: 22.88818359375

其中 32 是32位色深,除以8是把单位从bit转换为byte,除以 (1024 * 1024) 是为了把单位从byte转换为MB。所以给22.88M内存就够了, 不过我直接给了32M

$ sudo virsh
# edit --domain thinpc

找到qxl一行:

<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>

改为

<model type='qxl' ram='65536' vram='65536' vgamem='32768' heads='1' primary='yes'/>

2021.10.31 更新:

我用了 4k 显示器之后,上面的配置不太够,还是会卡顿,于是我直接改成了 256M:

<model type='qxl' ram='262144' vram='262144' vgamem='131072' heads='1' primary='yes'/>

参考资料:


更多文章
  • traefik 教程
  • Web开发系列(十):事务和锁
  • Web开发系列(十一):数据库扩展
  • Nginx作为TCP/UDP的负载均衡
  • Web开发简介系列
  • Web开发系列(九):消息队列,异步任务
  • Nginx 请求匹配规则
  • Web开发系列(六):关系型数据库,ORM
  • Web开发系列(七):缓存,CDN
  • Web开发系列(八):单点故障,负载均衡
  • Web开发系列(五):form, json, xml
  • Web开发系列(四):Flask, Tornado和WSGI
  • Web开发系列(三):什么是HTML,CSS,JS?
  • Web开发系列(二):HTTP协议
  • Web开发系列(一):从输入网址到最后,这个过程经历了什么?