kvmgt-kernel 實現GPU虛擬化


KVMGT-kernel是Intel開源技術01.org推出的一項完整的GPU虛擬化解決方案,在KVM和XEN的基礎上實現。本文檔對該技術進行相應測試,讓大家有個基本參考和了解。KVMGT-kernel目前支持虛機系統包含win7 32,64位,win8.1 ubuntu,centos 。

首先來看下GPU虛擬化實現方式。(下圖來自Intel)
第一種是實例調用api來實現虛擬化,這種方式即不能完全發揮GPU的性能,而且通過api調用實現的性能也非常低。
第二種雖然能通過DRIVER來獲取GPU的性能實現GPU虛擬化,但屬於獨享資源,並不能實現多實例共享GPU性能。
·第三種是目前最優方式,即可通過DRIVER來獲取調用HYPERVISOR相應模塊實現GPU虛擬化,發揮最大性能,並且實現了多實例性能共享。
\
 
一、安裝部署

測試環境原宿主機系統為centos7.0 64位
先獲取kernel及qemu
項目地址:https://github.com/01org/KVMGT-kernel
  https://github.com/01org/igvtg-qemu
\
查看kernel 分支版本,建議編譯如下版本(目前穩定版):
\
安裝對應依賴包
yum install libarchive-dev libghc-bzlib-dev libpci-dev mercurial gettext bcc iasl libncurses5-dev kpartx bc libperl-dev libgtk2.0-dev libc6-dev-i386 libaio-dev libsdl1.2-dev libyajl-dev libx11-dev autoconf libtool xsltproc bison flex xutils-dev xserver-xorg-dev x11proto-gl-dev libx11-xcb-dev vncviewer libxcb-glx0 libxcb-glx0-dev libxcb-dri2-0-dev libxcb-xfixes0-dev python-dev bin86 git vim libssl-dev gcc gcc-c++ glib2 glib2-devel zlib zlib-devel automake
升級kernel.
   1)進入kernel目錄建立編譯配置文件
\
  2)編輯.config文件,增加XFS模塊支持(由於本人采用xfs文件系統)。
\
3)編譯內核文件
   make  -j8
\
4)確認編譯通過之后執行make modules_install 安裝內核模塊。
\
5)生成引導鏡像
mkinitrd /boot/initramfs-3.18.0-rc7-vgt-2015q3+ -v vmlinuz-3.18.0-rc7-vgt-2015q3+
\
6)復制必要文件至對應目錄
cp   arch/x86/boot/bzImage  /boot/vmlinuz-kvm
\
cp vgt.rules /etc/udev/rules.d
\
chmod a+x vgt_mgr
\
cp vgt_mgr /usr/bin
\
 
二、安裝qemu-kvmgt

1)更新相應依賴子模塊(這步需要翻牆)
git submodule update --init dtc
\
git submodule update --init roms/seabios
\
2 )編譯安裝
 ./configure --prefix=/root --enable-kvm --disable-xen --enable-debug-info --enable-debug --enable-sdl --enable-vhost-net --disable-debug-tcg
\
\
\
查看版本
\
3),加入boot引導項
Example(以下是本人grub.cfg配置)               
 
menuentry 'CentOS KVMGT Linux (3.18.0-rc7-vgt-2015q3+) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-123.13.1.el7.x86_64-advanced-73a9bad6-c54e-4c4a-8cc3-9ea39290efed' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 --hint='hd0,msdos2'  6c4194dc-75bd-44a3-a9fa-98681e7ea0d6
        else
          search --no-floppy --fs-uuid --set=root 6c4194dc-75bd-44a3-a9fa-98681e7ea0d6
        fi
        linux16 /vmlinuz-3.18.0-rc7-vgt-2015q3+ root=/dev/mapper/os-root ro crashkernel=auto intel_iommu=igfx_off ignore_loglevel drm_debug=15.UTF-8 i915.hvm_boot_foreground=1
        initrd16 /initramfs-3.18.0-rc7-vgt-2015q3+.img
}
\
重啟機器,查看內核版本
\
 
三、性能測試

建立測試虛機,本人測試虛機采用win7 64位系統。虛機安裝系統之后需要安裝驅動。
在下面鏈接中下載對應驅動即可。(建議進入安全模式安裝驅動)
https://downloadcenter.intel.com/download/25425/Intel-Graphics-Driver-for-Windows-7-8-1-15-36-
這里采用passmark2d軟件進行性能測試。
PassMark Performance Test是一個專門用來測試電腦效能的性能測試軟件。我們這里只測試顯卡性能不同虛擬化場景對比。
使用Intel  GVT虛擬化場景性能測試。
我測試虛機內存為4096, CPU 為2.開啟了gvt虛擬化功能。
\
可以看到虛擬機已經成功識別了宿主機的硬件。
\
1)首先使用系統自帶評分工具測試結果如下。
\
可以看出基本評分為5.9分。
 
使用PASSMARK 2D圖形評測結果如下
\
使用PASSMARK 3D圖形評測結果如下
\
常規虛擬化場景性能測試
同樣一台虛機,內存為4096, CPU 為2.我關閉GVT虛擬化功能來進行測試。
\
\

還是先看系統自帶工具評分。
\
可以看到,使用常規虛擬化技術顯示性能相當低,只有1分。
接下來看passmark 2D圖形評測結果
\
2D評測結果也比開啟GVT虛擬化性能要差很多,而3D性能評測試在常規虛擬化技術中根本無法使用。

 四、后續總結

使用Intel GVT虛擬化技術性能明顯高出常規虛擬化技術顯示性能,由於是Intel弄的,目前只支持intel型號cpu(i7系列)。
該技術應用場景可用於部分游戲,視頻、圖片編輯/播放,媒體轉碼等應用,具體應用場景可根據業務類型來選擇。
 
該文檔只測試了以kvm方式來實現的方式,有興趣大家可以看看xen的實現方式。
Intel內部技術透露他們已經將其與openstack整合了,至於方法有興趣大家可自行研究。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM