免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: pluto_odin
打印 上一主题 下一主题

有谁知道虚拟机显卡的问题? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-09-07 09:48 |只看该作者
哈哈,我也知道3d工作对显卡的要求,但是一直想试一试,如果你说的xen可以直接利用pci设备,那么也应该可以直接使用显卡吧。那不就没有问题了吗?

论坛徽章:
0
12 [报告]
发表于 2006-09-07 13:08 |只看该作者
原帖由 pluto_odin 于 2006-9-7 09:48 发表
哈哈,我也知道3d工作对显卡的要求,但是一直想试一试,如果你说的xen可以直接利用pci设备,那么也应该可以直接使用显卡吧。那不就没有问题了吗?


支持操作PCI,和直接使用显卡是一回是么? 拜托...

论坛徽章:
0
13 [报告]
发表于 2006-09-07 13:50 |只看该作者
不好意思,可能理解错误。

论坛徽章:
0
14 [报告]
发表于 2006-09-08 15:05 |只看该作者
原帖由 pluto_odin 于 2006-9-7 09:48 发表
哈哈,我也知道3d工作对显卡的要求,但是一直想试一试,如果你说的xen可以直接利用pci设备,那么也应该可以直接使用显卡吧。那不就没有问题了吗?



可以直接使用显卡的,3D功能也没有问题,所有的i/o,mmio操作穿透虚拟机就行了。

论坛徽章:
0
15 [报告]
发表于 2006-09-08 16:04 |只看该作者
nntp  ,coco520 二位说的可有点不一样啊,我到底应该采用谁的意见啊?

论坛徽章:
0
16 [报告]
发表于 2006-09-08 19:26 |只看该作者
原帖由 coco520 于 2006-9-8 15:05 发表



可以直接使用显卡的,3D功能也没有问题,所有的i/o,mmio操作穿透虚拟机就行了。



呵呵,恕我孤陋寡闻了.

据我所知道, xen 的机制中,如果物理内存有512MB,dom0用了 256 MB内存,  addressing就是0-256, domU的OS的内存如果分配了虚拟的256MB,呢么它的addressing是" 0-256",但是这个addressing是 一个相对的地址,不是物理机器的地址. Xen 用了一种叫做shadow-paging的技术,domU看不到真正的物理内存的起点,他会以为domU的可用内存空间是从"真正的"0开始,其实是dom0分配给domU的绝对起点地址(256-512). 所以当domU的OS对视频进行操作的时候,寻址依据是相对于物理的,所以当操作通过dom0然后直接映射到物理机器上的时候,最终得到的结果并不是domU想要得那个位置的位置.只有当你的机器里面有IOMMU单元的时候,才可能穿透domU去操作物理的显示卡.

以前写过和显示卡打交道的程序的朋友知道,显示卡的驱动实际上将会在用户态的内存空间建立一个位图,位图信息映射到显示卡的现存, 假设显示卡以DMA方式工作.当domU里面虚拟的guest OS 发出指令说: 在内存那张位图的 100-120位置,有一段20MB大小的数据,要DMA出来然后放到显示卡内存的某个地址进行显示.  但是 100-120 是domU里面guest OS的自己认为的"物理地址",但是在真正的物理位置,那应该是到了256-276这个位置,但是现在的问题是无论是里面虚拟的guest OS还是外面那块物理的显示卡,都不知道发送过来的DMA指令到底是相对地址还是绝对的,所以显示卡会很忠实地去真正的物理位置的100-120 把20MB的数据取出来,然后DMA给显示卡,显示卡就依照取得的数据画在你的屏幕上了.
我不知道现在计算机专业的学生是否还要做类似操作显示卡的小程序功课,以前我们都会有兴趣去写一个,刚开始的时候经常遇到写的不好,地址操作错误,结果屏幕上就都是垃圾信息,乱七八糟的.


上面是对问题的解释,问题不是Xen造成的,是 现在普遍采用的计算机设备系统中缺少一个将物理地址统一成虚拟设备地址的硬件部件或者机制.

目前对xen这样问题的解决有2个,一个是购买装备有IOMMU硬件部件的计算机设备(服务器/工作站)。另一种方案是让硬件开发商,比如显示卡开发商,提供具备xen-aware (xen 感知)的显示卡驱动. 也就是当你准备在 普通PC上安装Xen的时候,你需要在dom0上面用 Xen-aware的显示卡驱动替换掉目前用的,因此当domU的guest OS对 显示卡操作的时候,dom0的 Xen-aware驱动可以把操作位图的地址转换成真正的物理地址来操作。 可以看出这2个方法实际上是从问题的2头分别来解决.

现在市面上装备有IOMMU设备的普通计算机设备不多,IBM在他们的一些系统上有IOMMU设备.

另外上面提到的所有讨论,并不仅限于显示卡,实际上,只要是类似的操作,比如guest OS需要通过南桥对IO外设进行操作,都会有这样的问题,所以IBM, Intel, AMD三家公司在这方面比较积极地投入解决方案。有兴趣的朋友可以 搜索google, 有一个文档,叫做"Utilizing IOMMUs for Virtualization in Linux and Xen" ,分别有IBM的三位开发人员, Intel, AMD的技术人员共同撰写,专门讨论我上面解释的问题. (IOMMU=I/O Memory Management Unit)

我还找到了IBM技术人员写的"Xen/IOMMU Breaking IO in New and Interesting Ways"的文档.有兴趣的朋友可以从 (http://www.xensource.com/company/xensummit.html)下载.

从技术角度来看,目前通过IOMMU来解决Xen para-虚拟中IO memory mapping到phy mem.addr的问题是最可行的,从intel, amd两家都参与进来得情况来看,新一代的系统主板上带有IOMMU也变的可能起来. 付出的硬件代价也会很低.  实际上Xen 06年的技术峰会上已经提到了目前Xen 在development 版本加入了独立的代码,用来支持IOMMU设备.

Good Luck,

[ 本帖最后由 nntp 于 2006-9-8 20:56 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2006-09-09 00:16 |只看该作者
Utilizing IOMMUs for Virtualization in Linux and Xen是linux symposium 2006上的一篇论文
linux symposium的论文集可以去
http://www.linuxsymposium.org/2006/
下载
另请参考
http://blog.chinaunix.net/u/7667/showart.php?id=145599

论坛徽章:
0
18 [报告]
发表于 2006-09-10 20:12 |只看该作者
多谢二位,涨了见识了啊

论坛徽章:
0
19 [报告]
发表于 2006-09-10 20:45 |只看该作者
在请问二位,IOMMU技术成熟了吗?有那些硬件可以实际使用那?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP