天天看點

Citrix XenServer vGPU性能優化和監測

 總結的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參數:

Citrix XenServer vGPU性能優化和監測

     控制台的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的選項中我們就可以看見這兩種配置設定機制。

Citrix XenServer vGPU性能優化和監測

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。如果修改了此選項,也有可能會導緻虛拟機無法啟動。

Citrix XenServer vGPU性能優化和監測

3.NUMA架構下CPU Socket的vCPU與GPU的配置設定與對應

   現在的伺服器一般都是兩顆實體的CPU,在學術術語上稱之為CPU Socket,而且一般都采用NUMA架構設計。

Citrix XenServer vGPU性能優化和監測

      如圖所示, 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。

Citrix XenServer vGPU性能優化和監測

具體事宜的指令如下:

我們首先使用指令:xe host-cpu-info檢視下CPU的資訊。

要固定虛拟機的vCPU到特定的CPU插槽,需要設定的參數為VCPU-params。此設定需要VM重新開機才能夠生效。在2顆CPU的平台,假設有32個核心,核心0-15都在 Socket 0,核心16-31都在Socket 1上。要限制虛拟機隻在Socket 0中運作:

Citrix XenServer vGPU性能優化和監測

除此之外我們還可以設定虛拟機就在那幾個核心上運作,而不用講範圍擴大到整個Socket:

Citrix XenServer vGPU性能優化和監測

4.使用4個vCPU

Windows的用戶端作業系統最多支援兩個CPU Sockets。當 Guest VM中的vCPU配置設定給Virtual Sockets,XenServer預設配置設定每個插槽一個vCPU;配置設定給該VM的任何兩個以上的vCPU将不會由Windows用戶端作業系統識别。

為了解決這個問題,需要設定platform:cores-per-socket:核心中每Sockets配置設定給VM vCPU的數量:

Citrix XenServer vGPU性能優化和監測

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

通過XenCenter監測GPU性能,單擊伺服器的性能頁籤,然後在圖形視窗上單擊滑鼠右鍵,選擇操作,然後選擇新圖。為圖形提供名稱,并在可用的計數器資源清單中,選擇一個或多個GPU計數器。計數器列出了目前使用的每個實體GPU的性能資訊。

Citrix XenServer vGPU性能優化和監測

還可以使用指令行的模式:

NVIDIA系統管理接口:NVIDIA-SMI,是一個指令行工具,可以通過噶工具檢視GPU的資訊。NVIDIA-SMI從Dom0的shell中運作,而沒有額外的參數調用,它在系統中提供了所有的GPU的摘要,包括PCI總線ID,功率狀态,溫度,目前記憶體使用等等。下圖所示:

Citrix XenServer vGPU性能優化和監測

注:NVIDIA-SMI不會列出目前配置設定給虛拟機的任何直通GPU裝置。

繼續閱讀