设为首页 收藏本站
查看: 3498|回复: 0

[经验分享] Citrix XenServer vGPU性能优化和监测

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-1 10:04:48 | 显示全部楼层 |阅读模式

  总结的vGPU性能优化和监测:


1.禁用控制台VGA接口

  对于 GPU 的虚拟化技术,目前的进度是通过Partitioning的方式将显存进行分片,然后通过直通给所有的虚拟机,底层通过调度实现虚拟机之间直通访问的问题。通过纯软件的方法虚拟化一个功能齐全的 GPU 是不太现实的,因为其实现的复杂性以及极度低略的性能。鉴于此,在 XenServer中Qemu只模拟了 VGA 接口,通过半虚拟化帧缓存来加速 2D特定帧缓存的访问。在安装完GRID vGPU之后,GRID vGPU会实现一个VGA控制台接口,允许XenCenter通过控制台中的选项卡查看虚拟机的图形输出。此功能仅仅是为了管理需要,输出的图形并不是进过显卡加速或优化过的图像。我们在使用了CitrixXenDesktop与HDX 3D Pro的远程图形堆栈来显示后,才可以显示经过显卡加速或优化过的图像。

       而使用Windows远程桌面(RDP)访问Windows 7 / Windows Server 2008虚拟机的时候,RDP将会禁止GRID vGPU的NVIDIA驱动程序运行,而且GPU加速的DirectX,OpenGL无法使用,NVIDIA控制面板也无法使用。不但如此,安装在VM中的VNC服务器也只是允许显示基本的模拟的显卡以低性能的远程访问方式进行。

      优化VGA接口可以减少虚拟机资源的消耗,尤其是装载了大量的虚拟机vGPU的时候,禁用控制台VGA接口完全可能会产生一些性能优势。我们可以通过在虚拟机平台指定disable_vnc=1来禁用VGA接口:vgpu_extra_args参数:

wKioL1ecUWzwD69aAAAsHoVwfa0683.jpg


     控制台的VGA设置将在虚拟机下次重新启动的时候生效。控制台VGA禁用了以后,XenCenter的虚拟机控制台在WIndows启动的时候将会闪屏,这是正常现象。

      那如果我们的虚拟机出现问题了,通过XenDesktop无法进入了咋办呢?这个时候就需要将这个VGA接口重新激活,通过控制台进入虚拟机进行故障诊断和问题修复了。激活VGA的接口的命令和禁用正好是相反的,指定disable_vnc=0就可以启用了。


2.使用“breadth-first”的分配(不是默认配置)

     “breadth-first”是vGPU启动分配机制的一种,这种分配机制是GRID vGPU在启动之后vGPU分配的最佳性能,但是在默认的配置下并不是默认的,需要我们采用该分配方案提高我们的性能。在GRID vGPU中,目前我所知的有两种vGPU分配方式: “breadth-first”和"depth-first" 两种。那么我们在那点选择这两种模式呢?在XenServer的主机中,我们点击属性,在GPU的选项中我们就可以看见这两种分配机制。

QQ截图20160801100419.jpg

Maximum density【depth-first】

   新启动的VM将尽可能的放置到一个已经使用了该vGPU profile的GPU卡上。如果没有GPU使用该vGPU profile, 则将尝试在一个空余的GPU启动虚拟机(如果有多余)。这是默认的设置。

Maximum performance【breadth-first】

   新启动的虚拟机尽可能的放置到空余的GPU上,这样获取最佳的性能,但是如果使用多个不同的vGPU profiles,则可能会遇到问题。 比如:如果有2 台虚拟机使用K220Q profile, 则都会请求并分配到各自一个独立的GPU上. 如果后面有不是K220Q profile的虚拟机启动,则无法分配GPU 导致无法启动,因为没有空余的GPU了,而profile又不能混合使用。

      在这里vGPU profiles是指GPU切分成为vGPU的类型:在XenCenter上有“Allowed vGPU types”选项可以设置允许GPU使用的profile类型。默认是允许每个GPU使用所有类型的vGPU profiles。如果修改了此选项,也有可能会导致虚拟机无法启动。

QQ截图20160801100423.jpg


3.NUMA架构下CPU Socket的vCPU与GPU的分配与对应

   现在的服务器一般都是两颗物理的CPU,在学术术语上称之为CPU Socket,而且一般都采用NUMA架构设计。

wKiom1ecUn3wyH82AABhg0c0RaM901.jpg
      如图所示, NUMA中,虽然内存直接attach在CPU上,但是由于内存被平均分配在了各个die上。只有当CPU访问自身直接attach内存对应的物理地址时,才会有较短的响应时间,我们称之为本地内存。而如果需要访问其他CPU attach的内存的数据时,就需要通过inter-connect通道访问,响应时间就相比之前变慢了。既然CPU只有在Local-Access时响应时间才能有保障,那么我们就尽量把该CPU所要的数据集中在他local的内存中就OK啦!但是这和我们的GPU有什么关系?

CPU 与GPU 共同使用系统内存。渲染引擎从系统内存中的命令缓存中提取GPU 命令来在多个不同特性方面加速渲染图形;显示引擎从帧缓存中获取图形像素数据,然后将它们发送给外部显示器来显示图像。因此在NUMA平台获得最佳性能,建议将VM vCPU核心与CPU的物理核心进行绑定。例如,我们将物理GPU vGPU 0和1绑定到CPU Socket 0。同样,GPU vGPU 2和3绑定到CPU Socket 1。

wKioL1ecUpfTbB49AAEk2dzrdfE089.jpg

具体事宜的命令如下:

我们首先使用命令:xe host-cpu-info查看下CPU的信息。

要固定虚拟机的vCPU到特定的CPU插槽,需要设置的参数为VCPU-params。此设置需要VM重新引导才能够生效。在2颗CPU的平台,假设有32个内核,内核0-15都在 Socket 0,内核16-31都在Socket 1上。要限制虚拟机只在Socket 0中运行:

wKioL1ecUsSCa6eQAAAd1TCoF8c143.jpg

除此之外我们还可以设置虚拟机就在那几个内核上运行,而不用讲范围扩大到整个Socket:

wKiom1ecUs-jiir-AAAZkhJhuco388.jpg


4.使用4个vCPU

Windows的客户端操作系统最多支持两个CPU Sockets。当 Guest VM中的vCPU分配给Virtual Sockets,XenServer默认分配每个插槽一个vCPU;分配给该VM的任何两个以上的vCPU将不会由Windows客户端操作系统识别。

为了解决这个问题,需要设置platform:cores-per-socket:内核中每Sockets分配给VM vCPU的数量:

wKioL1ecUt3wLr2fAAAc3SiCIJw559.jpg



5.在XenCenter性能管理器看到vCPU(http://support.citrix.com/article/CTX126524

通过XenCenter监测GPU性能,单击服务器的性能选项卡,然后在图形窗口上单击鼠标右键,选择操作,然后选择新图。为图形提供名称,并在可用的计数器资源列表中,选择一个或多个GPU计数器。计数器列出了当前使用的每个物理GPU的性能信息。

wKioL1ecUvGQRA_VAALdVSOz2XM391.jpg
还可以使用命令行的模式:

NVIDIA系统管理接口:NVIDIA-SMI,是一个命令行工具,可以通过噶工具查看GPU的信息。NVIDIA-SMI从Dom0的shell中运行,而没有额外的参数调用,它在系统中提供了所有的GPU的摘要,包括PCI总线ID,功率状态,温度,当前内存使用等等。下图所示:

wKioL1ecUxmipJUxAAM62HCXmb0066.jpg

注:NVIDIA-SMI不会列出当前分配给虚拟机的任何直通GPU设备。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251689-1-1.html 上篇帖子: 删除xenserver的iso库 下篇帖子: Citrix NetScaler版本名称说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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