[顯示卡直通]Server 2016/2019 Hyper-V顯示卡直通Win10教學及過程中會遇到的問題蒐集以及詳解-第一章DDA裝置以及準備

Silver_Hawk發表於2020-11-06

Hi,大家好我是遊戲主播火線兔

火線兔講廢話環節

噗!為什麼今天這麼介紹自己這呢,是因為這期虛擬化的專題的啟動是因為需要在直播的時候使用GPU編碼技術,微軟自帶的RemoteFX技術是沒有辦法實現顯示卡轉碼技術的,所以這裡需要使用顯示卡直通方案,請注意,

從這期文章開始,我們的虛擬化的技術全部是基於微軟Hyper-v的VM虛擬機器也是Windows10的!這個難度比Hyper-v顯示卡直通Linux來的難非常多!如果你技術不足的情況下,請移步Linux顯示卡直通文章,謝謝!

本文章是為了能最便宜最方便的去實現功能,甚至使用淘汰的顯示卡來達成我們的目標,所以如果你跟我說你有一個需求確實要用Grid卡什麼的,那我非常願意跟你討論技術,但是如果你只是想裝裝比過來抬槓,那我可躺下了?!


文中會出現的表述詞

  • DDA=Discrete Device Assignment=顯示卡直通=GPU passthrough
    • 在本文這是同一個東西,他們的關係是:
  • DDA=Discrete Device Assignment>顯示卡直通=GPU passthrough
    • DDA是直通的意思,可以直通很多東西包括顯示卡,所以本文中的DDA指的就是顯示卡直通,出現如上其他詞主要是為了SEO
  • 宿主機
    • 就是裝Hyper-v的這臺實體伺服器

顯示卡虛擬化幾大實現

首先我們先介紹下目前Hyper-v下可以使用的顯示卡共享方案

  • 基於單顯示卡多VM共享的RemoteFX技術
  • 基於單顯示卡多核心的NvidiaGrid技術
    • 基於核心DDA
  • 基於單顯示卡單核心分配的PCI技術
    • 基於單PCI的DDA
    • 基於多PCI的DDA

如上的內容就是目前你在Hyper-v平臺上能做到的所有顯示卡共享/直通方案的總和了!


你適合哪種技術方案?

  • 如果你是一個普通使用者
    • 你需要開啟多個VM,這多個VM都是Windows系統,你需要在這個Windows系統上執行一些帶有圖形性質的程式,例如Potplayer,例如OBS(一般不能很好支援),例如企鵝電競這種強制要求安裝直播客戶端的直播平臺
    • VM中不需要執行顯示卡特性的使用者
      • 例如GPU轉碼等
      • 例如OpenCL應用
      • 所有非顯示,需要顯示卡參與運算的應用例如挖礦等
  • 需要使用顯示卡底層特性的使用者
    • 如果你和我一樣是個主播
      • 你需要執行一些圖形應用,例如直播客戶端
      • 使用GPU轉碼來分離錄製推流(例如你使用高位元速率來做直播錄影,然後使用4000k-8000k的位元速率推給平臺)
      • 你需要使用FFMPEG+GPU來做直播水印
    • 如果你是一個礦主
      • 你需要顯示卡的OpenCL特性
    • 如果你是一個轉碼廠廠長
      • 你需要顯示卡的h264_nvenc特性

這些方案就是你選擇使用RemoteFX或者DDA技術時需要考慮的選擇方向了

當然如果你有多顯示卡的情況下,是可以兩個都做的,只不過功耗將會非常嚴重,如果你不考慮省電問題的話,建議兩個都做


技術成本(不談技術成本就是耍流氓):

這兩個技術難度都不是太高,RemoteFX毫無技術難度,裝上驅動選擇顯示卡就能用

DDA或者叫顯示卡直通的話需要使用PowerShell來輸入命令,略有難度, 出現問題的概率也比較大


歷史和應用的(廢話部分):

1.首先微軟在Server2012和Server2016上更新了一個新功能,名稱叫做RemoteFX,這個技術主要是在Hyperv中安裝Windows系統時可以直接通過微軟內建的驅動共享顯示卡,除了宿主機擁有完整的顯示卡功能以外,所有的VM僅享受顯示卡的顯示服務。

  • 舉個例子,比如你在VM上執行企鵝直播助手或者虎牙主播助手等軟體的時候,這個時候你會發現CPU顯著提高了,因為這個時候是CPU在處理顯示的畫面,這將會大大的浪費CPU的資源,但是在開啟了RemoteFX的情況下,你會發現宿主機的GPU佔用提升了,VM中的CPU佔用降低到正常個位數的佔用水平,因為是RemoteFX發揮了顯示卡的顯示特性(僅僅是顯示特性)

2.接著微軟在Server2016上試水了DDA,並且在Server2019的時候取消了RemoteFX(我當時裝了Server2019後才發現RemoteFX沒了),其實倒是沒有取消,只是遮蔽掉了,通過讀了很多國外的帖子,大致瞭解到,因為很多客戶覺得這個功能太好用了,所以微軟在Server2019上砍掉了
- 在Server2019上開啟RemoteFX的方法比DDA還難,反正微軟也放棄了

3.微軟NV和AMD的窒息操作並未停止,通過EULA阻止了NV和AMD的Consumer 驅動在Server平臺上的安裝,你可以試試,Nvidia驅動會提示系統版本不受支援,AMD驅動會直接提示找不到合適的GPU,這也就引出了今天本文討論的GPU PassThrough技術

在這裡插入圖片描述
4.如果你是用這樣的單路平臺(這個是我的超微X9SRL-F主機板),那麼在早期的Server2016版本上是可以安裝GT740以下的驅動的,如果你是雙路主機板,恭喜,暴死!


DDA要解決什麼問題?

這段非常重要,我們為什麼要用DDA,如上文所述,如果你僅僅是在Windows10或者Linux這樣的Consumer作業系統上安裝顯示卡的驅動,那自然是沒有任何問題,但是如果你打算在WindowsServer中安裝顯示卡驅動,受限於顯示卡廠商的驅動限制,**你沒有任何成功安裝顯示卡高階特性的可能性!**這句話通俗的說就是比如你用AMD的卡你確實可以通過安裝15.7版本的驅動來解決Winserver中沒有驅動可以用的問題,但是這都是治標不治本的方法!即使你安裝上了驅動,你也沒有辦法使用Nvidia的NVENC或者AMD的VCE轉碼引擎,這張顯示卡只能當成RemoteFX顯示卡來用,功能大大受限!

但是如果將這塊顯示卡繫結給虛擬機器使用,那麼虛擬機器就可以完全使用這張顯示卡的高階特性,這樣做的好處就是省錢!省錢!省錢!省錢!你可以直接買一張GTX750或者750ti來代替Quadro M2000或者使用一張GTX1050來替代Quadro P600,你最少能省下一半的錢!那為什麼不呢?

我知道解決這些問題就是一張Quardo/Tesla卡的事情,不過你要是做技術的,給自己也是這麼個答案……那……35歲前真的應該轉行了哥/姐/阿姨/叔叔!


GPU Passthrough裝置準備:

平臺告知:
在這裡插入圖片描述

首先兔子的平臺是一個雙路主機板,是來自超微的X9DRD-4DNF

圖中裝的顯示卡是AMD的R7 240顯示卡,也是AMD還一直有提供驅動的顯示卡,但是:

請大家特別注意一下,顯示卡直通不要使用AMD顯示卡!!!能成功但很容易當機!!!
請大家特別注意一下,顯示卡直通不要使用AMD顯示卡!!!能成功但很容易當機!!!
請大家特別注意一下,顯示卡直通不要使用AMD顯示卡!!!能成功但很容易當機!!!


關於當機:

在你做了DDA之後,會不定期的在重啟VM的時候導致宿主機出現當機的情況,
1.AMD顯示卡尤其是!在安裝了AMD的驅動後,幾乎每次或者每2次重啟VM都會導致宿主機藍屏重啟(server2016好像是黑屏二維碼)
2.NV的話大概每6-8次就會有一次,不固定


關於DDA顯示卡選擇:

1.只要是NV的卡就行,不要太新的,上限是GTX2080ti(3080ti後面製作驅動的時候可能會不支援,請務必主題)

2.我用的是GTX750,是來自Maxwell一代的顯示卡,使用GM107核心,使用這個核心也就限制了我們無法使用HEVC轉碼,不過我這個用來轉碼直播用的,H264就行,如果大家想要做HEVC轉碼,請使用GTX1050系的顯示卡,目前的話GTX1050是轉碼卡里面比較實惠的


關於顯示卡電力支援

如果你伺服器和我一樣是自己用的,那麼節電是你必須要考慮的,顯示卡直通的話因為顯示卡是給VM使用的,所以相關的省電配置在VM中完成即可,另外,如果使用NV顯示卡,儘量使用刷BIOS控制頻率的方法,這樣可以大大避免由於軟體所帶來的的不穩定

在這裡插入圖片描述

另外儘量不要選擇外接電源的顯示卡,這樣的顯示卡TDP一般都是70w以上的,說句老實話如果你的轉碼佇列沒有那麼多,真的沒有必要!!!因為大多數顯示卡開始轉碼的時候,功率就全開了,耗電量太嚴重了,沒有必要的!大多數時候一張顯示卡全功率的情況下可以開啟14條標清轉碼佇列了,GTX750可以開啟17條(驅動破解後)


好的那麼第一課的內容就到此結束了,預先準備好裝置可以有效的避免我們在後期可能遇到的問題,如果大家有什麼想討論的,可以本文討論,可以訪問http://tuuz.cn,參與討論

我是主播火線兔,敬請期待下一章

相關文章