Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
G P U O N O P E N S T A C K -
G P U イ ン タ ー ナ ル ク ラ ウ ド の ベ ス ト プ ラ ク テ ィ ス
P R E S E N T E D B Y M A S A F U M I O H T A ...
A ‘ S T A C K E R ’
L O O K I N G I N T O G P G P U
U S E .
V O L U N T E E R F O R T H E
R A S P B E R R Y P I
F O U N D ...
T H I S P R E S E N T A T I O N I S
R E N E W E D F O R
O P E N S T A C K D A Y S T O K Y O
2 0 1 7 .
I T I S I N C L U D ...
O R G I Z N E D B Y V T J A N D
G A T H E R
M E , N V I D I A ( A S K ) , D E L L E M C ,
N E S I C A N D S O M E
C O M P ...
T E S L A M 6 0 + D E L L E M C
P O W E R E D G E
C 4 1 3 0 + O P E N S T A C K
T O E V A L U A T E G P U O N
O P E N S T ...
な ぜ G P U O N O P E N S T A C K な の か ?
は じ め に
O P E N S T A C K
特 殊 利 用 の 需 要
OpenStackの特殊な利用の需要が
増えてきている
Hadoop(Sahara),HPC,などなど
ほとんどのものはまとめたのが
なく、ググって調べるしかない
…
曰く「ドキュ...
ど う や っ て G P U は O P E N S T A C K 環 境 で 動 作 す る の か
?
‘GPU ON OPENSTACK’とは何か?
‘ G P U ’ ト レ ン ド
の お さ ら い
• 多くのGPUコアを利用する
• 一部の計算は単一MPUユニットが小
さくスピードが遅かろうとも多くの
MPUコアを使うことはいくつかの計
算処理には有効である
• サーバ各々は高パフォ...
ど う や っ て G P U
は 動 く の か ?
• 現在のところPCIパススルーあるいは
NVIDIA(GPU) dockerでの利用となる
• ‘PCIパススルー’ は土台となるベアメタル仮
想環境に依存する
• VSphereとXe...
G P U
O P E N S T A C K と は
• インスタントなHPC利用
• いくつかの計算をしおえたらVMその
ものを壊す。
• ちょっとしたお試しでいくつかのVM
を使ってHPCグリッド試してみる。終
わったらすぐ壊す。
• G...
ど ん な G P U の メ カ ニ ズ ム が O P E N S T A C K 環 境
で う ご い て い る の か ?
S E T U P : G P U O N O P E N S T A C K
O p e n S t a c k で G P U を 動 か す 方 法 ( 現 在 )
• PCIパススルー
• PCIデバイスをダイレクトに接続する
• ComputeNodeのハイパーバイザー依存、OpenStack依存ではない
• X...
P C I パ ス ス ル ー は V M 上 で ど う 動 作 す る の か ?
• PCIデバイスをダイレクトにLinuxホストを通じて接続する
• 物理ホストよりデバイスを切り離す必要あり
• (NVIDIA) Dockerと違いホス...
P C I P a s s t h r o u g h o n O p e n S t a c k
• Redhatは公式サポート
• ただ、あまり推しでない気が..
• Ubuntuはドキュメントすらまともにない…
• ググって探すしかない(...
Linux OS for KVM hypervisor
GPU Driver
App
VM
VMM/KVM
IOMMU/Vt-d
PCI Express x16
Linux/Win OS
ComputeNode
GPU Card GPU Car...
S t e p 1 : ホ ス ト の G P U の 状 態 を ま ず は 調 べ る
• lspci -nn | grep -i nvidia でGPUの状態をまずはチェック
lspci -nn | grep -i nvidia
88:0...
G P U ポ ー ト が パ ス ス ル ー さ れ て い る か チ ェ ッ ク
• QuadroなどHDMIはビデオポートだけでなくオーディ
オポートももっているため注意
• lspciでチェックされたものについては全てパススルーさせる...
S T E P 2 : I O M M U セ ッ ト ア ッ プ
• IOMMU(Input/Output Memory Management Unit) は物理デ
バイスを仮想化システムで使う上で必要なもの
• もちろんvt-dはオンにする...
S T E P 3 : p c i - s t u b と V F I O
• pci-stubは物理デバイスをLinuxホスト側が利用できないようにする
• VFIO(Virtual Function IO) は pci-stubと同様の働き...
S T E P 4 - 1 : ブ ラ ッ ク リ ス ト ( 1 )
• ramfsでGPUデバイスを認識できないようにする
• /etc/initramfs-tools/modules to initramfs (ubuntuの場合)
ec...
S T E P 4 - 2 : B l a c k l i s t ( 2 )
• ブート時にGPUデバイスを認識できないようにする。
• /etc/modprobe.d/blacklist.conf に次を追加:
blacklist nvid...
S T E P 5 : 物 理 か ら の ア ン バ イ ン ド
• 『物理ホストから切り離しVMへのバインドするため』にpci-stubを
チェックする
1. pci-stub/new_idにパススルーするドライバのPCI IDをエントリす...
物理デバイス
pci-stub
(仮想で使う)
GPUユニット
(全てのデバイス)
‘GPUを物理デバイスよりアンバインドして
仮想デバイスにバインドする’
echo 11de 11b4 > /sys/bus/pci/drivers/pci-s...
modprobe
/etc/modprobe.d/blacklist.conf
pci-stub
/sys/bus/pci/drivers/pci-stub/
/sys/bus/pci/devices/$(Identifier)/driver/...
G P U を 追 加 す る ( 1 )
• lspci の結果を確認- 2つの関連するPCI識別子が確認で
きるはず(識別子番号は使用するシステムに依存)
lspci -nn | grep -i nvidia
88:00.0 VGA com...
G P U を 追 加 す る ( 2 )
• 追加のGPUがうまく動いたかVMで確認
ubuntu@guestos$ lspci -nn | grep -i nvidia
00:07.0 VGA compatible controller [...
O p e n s t a c k : n o v a - a p i の 設 定
• ControllerNodeの/etc/nova/nova.confを編集しnova-
apiを再起動する
• pci_aliasにPCIデバイスの情報、エ...
O p e n S t a c k : n o v a - c o m p u t e の 設 定
• ComputeNodeにある/etc/nova/nova.confを編集し、
nova-computeを再起動する。
• pci_passt...
O p e n S t a c k : n o v a - s c h e d u l e r の 設 定
• ControllerNodeの/etc/nova/nova.confを設定しnova-
schedulerを再起動する。
• Pci...
Linux OS for KVM hypervisor
GPU D
App
VM
VMM/KVM
Linux/W
ComputeNode
Nova Compute
Nova Scheduler
Nova API
Linux OS
Control...
O p e n S t a c k : f l a v o r - k e y の 設 定
• flavor-keyを設定しGPUインスタンスで利用できるよ
うにPCIパススルーの設定をflavorに追記する
• pci_passthrough...
G P U O N O P E N S T A C K を 使 う に あ た っ て 注 意 す べ
き 問 題 点
既 知 の 問 題
C l o u d イ メ ー ジ の 問 題
• CloudイメージはGPUを使う上ではとても小さくqemu-imgでリサイズ
する必要がある
• CUDAドライバはperl-packages(dev packages)がインストール時に必要...
V D I と し て の W i n d o w s 利 用
• CUDA on Windows は思ったより早いけどカクカクしてしまう
• 多分DISKのスピード、ネットワークなどなどいろいろなものが予想される。多
分エフェメラルモードやそ...
V D I と し て の W i n d o w s 利 用 ( f e e d b a c k )
• Thanks giving some feedbacks to my session at LC3 China!
• Should ch...
ラ イ ブ マ イ グ レ ー シ ョ ン の 問 題
• PCIパススルーを使ったVMはライブマイグレーションができない。マ
イグレーション前のホストのPCIコネクションが切れないままになって
しまう。
• ワークアラウンド:古いコネクション...
G P U が O P E N S T A C K 環 境 で ど う 動 く か
チ ェ ッ ク !
デ モ ( ビ デ オ )
イ ン ス タ ン ス を 立 ち 上 げ G P U の 動 作 を 確 認
• RHEL OpenStackを利用
• パススルーしてあるインスタンスを立ち上げる
• Ubuntuインスタンスを立ち上げlspciとdevicequeryを実...
関 連 リ ン ク
• Attaching physical PCI devices to guests:
https://docs.openstack.org/admin-guide/compute-pci-
passthrough.html...
S p e c i a l T h a n k s t o :
• GPU on OpenStack project members
VirtualTech Japan
NVIDIA
DellEMC
NEC Networks & System ...
P R E S E N T B Y M A S A F U M I O H T A
T W E E T @ m a s a f u m i o h t a m a i l t o : m a s a f u m i @ p i d 0 . o ...
GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月
Upcoming SlideShare
Loading in …5
×

GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月

1,983 views

Published on

タイトル:GPU on OpenStack - GPUインターナルクラウドのベストプラクティス
講演者:太田 昌文
アジェンダ:
- なぜGPU on OpenStackなのか?
- どうやってGPUはOpenStack環境で動作するのか?
- どんなGPUのメカニズムがOpenStack環境で動いているのか?
- GPU on OpenStackを使うにあたっての注意すべき問題点
- GPUがOpenStack環境でどう動くかチェック!

Published in: Technology

GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月

  1. 1. G P U O N O P E N S T A C K - G P U イ ン タ ー ナ ル ク ラ ウ ド の ベ ス ト プ ラ ク テ ィ ス P R E S E N T E D B Y M A S A F U M I O H T A @ m a s a f u m i o h t a
  2. 2. A ‘ S T A C K E R ’ L O O K I N G I N T O G P G P U U S E . V O L U N T E E R F O R T H E R A S P B E R R Y P I F O U N D A T I O N : ) M A S A F U M I O H T A
  3. 3. T H I S P R E S E N T A T I O N I S R E N E W E D F O R O P E N S T A C K D A Y S T O K Y O 2 0 1 7 . I T I S I N C L U D E D S O M E F E E D B A C K S F R O M T H E S E S S I O N A T # L C 3 C H I N A I N B E I J I N G , 2 0 1 7 P R E S E N T A T I O N R E N E W E D
  4. 4. O R G I Z N E D B Y V T J A N D G A T H E R M E , N V I D I A ( A S K ) , D E L L E M C , N E S I C A N D S O M E C O M P A N I E S W H O I N T E R E S T E D G P U U S E O N O P E N S T A C K E N V I R O N M E N T F O R O U R C U S T O M E R S T H I S P R O J E C T I S …
  5. 5. T E S L A M 6 0 + D E L L E M C P O W E R E D G E C 4 1 3 0 + O P E N S T A C K T O E V A L U A T E G P U O N O P E N S T A C K E N V I R O N M E N T T H A N K S T W O H E L P I N G O U T A N D P R O V I D I N G T H O S E S E R V E R S + C A R D S N O W E V A L U A T I N G . .
  6. 6. な ぜ G P U O N O P E N S T A C K な の か ? は じ め に
  7. 7. O P E N S T A C K 特 殊 利 用 の 需 要 OpenStackの特殊な利用の需要が 増えてきている Hadoop(Sahara),HPC,などなど ほとんどのものはまとめたのが なく、ググって調べるしかない … 曰く「ドキュメントロスト状態」 これらのものはOpenStackの Docsにまとめられるべき
  8. 8. ど う や っ て G P U は O P E N S T A C K 環 境 で 動 作 す る の か ? ‘GPU ON OPENSTACK’とは何か?
  9. 9. ‘ G P U ’ ト レ ン ド の お さ ら い • 多くのGPUコアを利用する • 一部の計算は単一MPUユニットが小 さくスピードが遅かろうとも多くの MPUコアを使うことはいくつかの計 算処理には有効である • サーバ各々は高パフォーマンスでコ ンパクトにできる • 低消費電力化はHPCエンドユ ーザにとって大事なこと • 多くの省電力・ハイパフォーマンス サーバを所有しやすくなる
  10. 10. ど う や っ て G P U は 動 く の か ? • 現在のところPCIパススルーあるいは NVIDIA(GPU) dockerでの利用となる • ‘PCIパススルー’ は土台となるベアメタル仮 想環境に依存する • VSphereとXenは各々VMにGPUコアを任意の単位 で分割して割り当てすることが可能 • OpenStackの標準的なベアメタル仮想環境として使 われるKVMではコア分割ができず、GPUユニット ごとをVMに割り当てることとなる • 昨今使われるコンテナ仮想環境でのデプロ イとなるNVIDIA(GPU) DockerはDockerコ ンテナ同士で一つのGPUユニットを共有し ているが、明示的な分割はしない • ウインドウズは’docker vm'としては動作しない
  11. 11. G P U O P E N S T A C K と は • インスタントなHPC利用 • いくつかの計算をしおえたらVMその ものを壊す。 • ちょっとしたお試しでいくつかのVM を使ってHPCグリッド試してみる。終 わったらすぐ壊す。 • GPUインターナルクラウドとし てのGPU利用 • 主に製造業において、いくつかのシス テムは情報管理上、パブリッククラウ ドに外だしができない。
  12. 12. ど ん な G P U の メ カ ニ ズ ム が O P E N S T A C K 環 境 で う ご い て い る の か ? S E T U P : G P U O N O P E N S T A C K
  13. 13. O p e n S t a c k で G P U を 動 か す 方 法 ( 現 在 ) • PCIパススルー • PCIデバイスをダイレクトに接続する • ComputeNodeのハイパーバイザー依存、OpenStack依存ではない • Xen利用でのGPUコア分割、KVMはNVIDIA/AMDともコア分割不可 • Intel GVT-g(Xen)/GVT-d(KVM)によるIntel GPUのコア分割 • コンテナ • NVIDIA Dockerの利用 • 複数のコンテナによってGPUを利用できるが、明示的なGPUコア分割はできない タスク次第でのGPU利用 • Kubernetes/Mesos/Docker Swarmなどとの組み合わせ管理
  14. 14. P C I パ ス ス ル ー は V M 上 で ど う 動 作 す る の か ? • PCIデバイスをダイレクトにLinuxホストを通じて接続する • 物理ホストよりデバイスを切り離す必要あり • (NVIDIA) Dockerと違いホスト切り離しとなるため、監視管理等は各VMに必要 • OpenStack依存のことではなく、Linuxのベアメタル環境に依存 • KVM上では一つのGPUデバイスにひとつのVM • Docker/Xen/VSphereと違いGPUは分割もできなければ共有もできない • これはKVMの制限であってOpenStackによるものではない
  15. 15. P C I P a s s t h r o u g h o n O p e n S t a c k • Redhatは公式サポート • ただ、あまり推しでない気が.. • Ubuntuはドキュメントすらまともにない… • ググって探すしかない(さすがUbuntu..orz ) • 目下小職/NVIDIA JAPAN/DELLEMC/VTJで再度細く検証と OpenStackコミュニティのためにドキュメントをまとめ上げる予 定(趣旨に同意いただき参画いただける企業様歓迎いたします)
  16. 16. Linux OS for KVM hypervisor GPU Driver App VM VMM/KVM IOMMU/Vt-d PCI Express x16 Linux/Win OS ComputeNode GPU Card GPU Card Nova Compute Nova Scheduler Nova APILinux OS ControllerNode 図1:OpenStackどうやってGPUパススルーを実現しているのか?(KVMの場合) Nova Conductor pci-stub/vfio-pciGPU Driver
  17. 17. S t e p 1 : ホ ス ト の G P U の 状 態 を ま ず は 調 べ る • lspci -nn | grep -i nvidia でGPUの状態をまずはチェック lspci -nn | grep -i nvidia 88:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:11b4] (rev a1) 88:00.1 Audio device [0403]: NVIDIA Corporation GK104 HDMI Audio Controller [10de:0e0a] (rev a1) • 全てのGPUユニットがパススルーされている必要がある • GPUだけでなく、ユニットとして認識されるGPUデバイス自体も パススルーする必要あり • でないとVMは動いてくれない..(完全にパススルーにならない)
  18. 18. G P U ポ ー ト が パ ス ス ル ー さ れ て い る か チ ェ ッ ク • QuadroなどHDMIはビデオポートだけでなくオーディ オポートももっているため注意 • lspciでチェックされたものについては全てパススルーさせる 必要がある。
  19. 19. S T E P 2 : I O M M U セ ッ ト ア ッ プ • IOMMU(Input/Output Memory Management Unit) は物理デ バイスを仮想化システムで使う上で必要なもの • もちろんvt-dはオンにする必要あり (EFI/BIOSののデフォル トはON) • intel_iommuとvfio_iommu_type1.allow_unsafe_interruptsの 設定を/etc/default/grubに行う必要あり GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1”
  20. 20. S T E P 3 : p c i - s t u b と V F I O • pci-stubは物理デバイスをLinuxホスト側が利用できないようにする • VFIO(Virtual Function IO) は pci-stubと同様の働きをする。kernel 4.1以 降のサポート • 未使用時はデバイスをD3ステート(低消費電力モード)に変更する • It is not used by default デフォルトでは使われないため /etc/module を 編集して、これらと関連するコンポーネンツを追記する (kvm,kvm_intel) pci_stub vfio vfio_iommu_type1 vfio_pci kvm kvm_intel
  21. 21. S T E P 4 - 1 : ブ ラ ッ ク リ ス ト ( 1 ) • ramfsでGPUデバイスを認識できないようにする • /etc/initramfs-tools/modules to initramfs (ubuntuの場合) echo ‘pci_stub ids=10de:11b4,10de:0e0a’ >> /etc/initramfs-tools/modules sudo update-initramfs -u && sudo reboot
  22. 22. S T E P 4 - 2 : B l a c k l i s t ( 2 ) • ブート時にGPUデバイスを認識できないようにする。 • /etc/modprobe.d/blacklist.conf に次を追加: blacklist nvidia blacklist nvidia-uvm • ドライバについてもブラックリストに入れる必要あり blacklist nouveau
  23. 23. S T E P 5 : 物 理 か ら の ア ン バ イ ン ド • 『物理ホストから切り離しVMへのバインドするため』にpci-stubを チェックする 1. pci-stub/new_idにパススルーするドライバのPCI IDをエントリする。 2. 関連するPCI識別子を物理ホストから切り離す 3. pci-stubにこのPCI識別子をバインドする。 echo 11de 11b4 > /sys/bus/pci/drivers/pci-stub/new_id echo 11de 0e0a > /sys/bus/pci/drivers/pci-stub/new_id echo 0000:88:00.0 > /sys/bus/pci/devices/0000:88:00.0/driver/unbind echo 0000:88:00.1 > /sys/bus/pci/devices/0000:88:00.1/driver/unbind echo 0000:88:00.0 > /sys/bus/pci/drivers/pci-stub/bind echo 0000:88:00.1 > /sys/bus/pci/drivers/pci-stub/bind • 物理ホストのdmesgに以下の’claimed’がブートプロセスにあるかど うか確認する。 pci-stub 0000:88:00.1: claimed by stub
  24. 24. 物理デバイス pci-stub (仮想で使う) GPUユニット (全てのデバイス) ‘GPUを物理デバイスよりアンバインドして 仮想デバイスにバインドする’ echo 11de 11b4 > /sys/bus/pci/drivers/pci-stub/new_id echo 11de 0e0a > /sys/bus/pci/drivers/pci-stub/new_id echo 0000:88:00.0 > /sys/bus/pci/drivers/pci-stub/bind echo 0000:88:00.1 > /sys/bus/pci/drivers/pci-stub/bind echo 0000:88:00.0 > /sys/bus/pci/devices/0000:88:00.0/driver/unbind echo 0000:88:00.1 > /sys/bus/pci/devices/0000:88:00.1/driver/unbind 図2:物理にあるGPUを切り離し仮想につなぐ
  25. 25. modprobe /etc/modprobe.d/blacklist.conf pci-stub /sys/bus/pci/drivers/pci-stub/ /sys/bus/pci/devices/$(Identifier)/driver/unbind ramfs /etc/initramfs-tools/modules GRUB /etc/default/grub modules /etc/modules UEFI/BIOS Vt-d 図3:ブート時のGPUブラックリストのプロセス(Ubuntuの場合) IOMMU IOMMU BLACK LIST BLACK LIST IOMMU BLACK LIST BLACK LIST
  26. 26. G P U を 追 加 す る ( 1 ) • lspci の結果を確認- 2つの関連するPCI識別子が確認で きるはず(識別子番号は使用するシステムに依存) lspci -nn | grep -i nvidia 88:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:11b4] (rev a1) 88:00.1 Audio device [0403]: NVIDIA Corporation GK104 HDMI Audio Controller [10de:0e0a] (rev a1) 84:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:11b4] (rev a1) 84:00.1 Audio device [0403]: NVIDIA Corporation GK104 HDMI Audio Controller [10de:0e0a] (rev a1) • pci-stubにさらにパススルーするGPUの追記をする。 echo 0000:84:00.0 > /sys/bus/pci/devices/0000:84:00.0/driver/unbind echo 0000:84:00.1 > /sys/bus/pci/devices/0000:84:00.1/driver/unbind echo 0000:84:00.0 > /sys/bus/pci/drivers/pci-stub/bind echo 0000:84:00.1 > /sys/bus/pci/drivers/pci-stub/bind
  27. 27. G P U を 追 加 す る ( 2 ) • 追加のGPUがうまく動いたかVMで確認 ubuntu@guestos$ lspci -nn | grep -i nvidia 00:07.0 VGA compatible controller [0300]: NVIDIA Corporation GK104GL [Quadro K4200] [10de:11b4] (rev a1) 00:08.0 VGA compatible controller [0300]: NVIDIA Corporation GK104GL [Quadro K4200] [10de:11b4] (rev a1) • アプリによっては両方同時に利用する際など、同一の GPUである必要がある可能性がある。 /nbody -benchmark -numdevices=2 -num bodies=65536
  28. 28. O p e n s t a c k : n o v a - a p i の 設 定 • ControllerNodeの/etc/nova/nova.confを編集しnova- apiを再起動する • pci_aliasにPCIデバイスの情報、エイリアス名を記述 pci_alias={“name”:”K4200”,"vendor_id":"10de","product_id":"11b4"}
  29. 29. O p e n S t a c k : n o v a - c o m p u t e の 設 定 • ComputeNodeにある/etc/nova/nova.confを編集し、 nova-computeを再起動する。 • pci_passthrough_whitelistにPCIデバイスの情報、エイリアス名を 記述 pci_passthrough_whitelist={“name”:”K4200","vendor_id":"10de","product_id":"11b4"} *このケースの場合、ベンダーIDとプロダクトIDが適合したデバイスは全てVMにパススルーする。 • pci_aliasににPCIデバイスの情報、エイリアス名を同様に追記 *Neuton以降 pci_alias={“name”:”K4200”,"vendor_id":"10de","product_id":"11b4"}
  30. 30. O p e n S t a c k : n o v a - s c h e d u l e r の 設 定 • ControllerNodeの/etc/nova/nova.confを設定しnova- schedulerを再起動する。 • PciPassthroughFilterを利用できるようにするために PciPassthroughFilterをscheduler_default_filtersに追記する • 同様にPciPassthroughFilterをscheduler_available_filtersに記述 する scheduler_available_filters=nova.scheduler.filters.all_filters scheduler_available_filters=nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter scheduler_default_filters=DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,Di skFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,S erverGroupAffinityFilter,AggregateInstanceExtraSpecsFilter,PciPassthroughFilter
  31. 31. Linux OS for KVM hypervisor GPU D App VM VMM/KVM Linux/W ComputeNode Nova Compute Nova Scheduler Nova API Linux OS ControllerNode Nova Conductor pci_alias pci_passthrough_whitelist pci_alias scheduler_default_filters scheduler_available_filters 図4:NovaがGPU(PCI)パススルーされているComputeNodeで動作するプロセス P C I デ バ イ ス を 利 用 可 に し て P C I 利 用 の リ ク エ ス ト を 送 れ る よ う に す る p c i p a s s t h r o u g h f i l t e r を 利 用 し て G P U パ ス ス ル ー さ れ た C o m p u t e N o d e を 選 ぶ G P U パ ス ス ル ー し た イ ン ス タ ン ス を p c i _ a l i a s と p c i _ p a s s t h r o u g h _ w h i t e l i s t に よ っ て 発 生 さ せ る
  32. 32. O p e n S t a c k : f l a v o r - k e y の 設 定 • flavor-keyを設定しGPUインスタンスで利用できるよ うにPCIパススルーの設定をflavorに追記する • pci_passthrough:alias=$(pci_alias_name):$(the number of GPUs we would like to use) nova flavor-key $flavor_name set “pci_passthrough:alias”=“K4200:$(the number_of_gpus)”
  33. 33. G P U O N O P E N S T A C K を 使 う に あ た っ て 注 意 す べ き 問 題 点 既 知 の 問 題
  34. 34. C l o u d イ メ ー ジ の 問 題 • CloudイメージはGPUを使う上ではとても小さくqemu-imgでリサイズ する必要がある • CUDAドライバはperl-packages(dev packages)がインストール時に必要 • それが.debあるいは.rpmパッケージであろうとインストールが必要になる。なぜなら CUDAパッケージ自体がバイナリパッケージでなく、ソースコードよりバイナリをビ ルドしていて、makeをパッケージインストールの際に実行している • NVIDIA曰くCUDAドライバの次期リリースでFIX予定とのこと • CUDA 7.6以降でfixの予定だったのに..まだfixされてない..orz
  35. 35. V D I と し て の W i n d o w s 利 用 • CUDA on Windows は思ったより早いけどカクカクしてしまう • 多分DISKのスピード、ネットワークなどなどいろいろなものが予想される。多 分エフェメラルモードやその他爆速系のSSD/NVMeの利用やら10g以上のネッ トワーク環境が必要となるだろう • まだ改善対応をやってみたことはないが、なぜ発生するのかを調べるべく近々検証予定。 • VMは基本メモリ/NW転送などコンテキストスイッチでの動作をするため、CUDAの重いワー クロードはカクカクする可能性があるかもしれない。 • 詳しくはデモビデオにて… • GPU on OpenStack上でのWindowsの動作はもっと調査が必要..時間がほしい…
  36. 36. V D I と し て の W i n d o w s 利 用 ( f e e d b a c k ) • Thanks giving some feedbacks to my session at LC3 China! • Should checked and investigate the Windows-related issues below, will update later. • Windows 10 on KVM issue • http://bart.vanhauwaert.org/hints/installing-win10-on-KVM.html • Windows 10 deployment is succeeded from my KVM but I still have failed the same deployment from my OpenStack.I should investigate more what happened in detail. • Nvidia Driver issue (version 337.88 or later) • https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#.22Error_43:_Driver_failed_to_load .22_on_Nvidia_GPUs_passed_to_Windows_VMs • ‘Nvidia drivers on Windows check if an hypervisor is running and fail if it detects one, which results in an Error 43 in the Windows device manager. ‘ I haven’t found this issue on my Windows 7 VMs so I should check more in detail • Related links libvirt for adding the driver, should be checked. • https://github.com/openstack/nova/blob/master/nova/virt/libvirt/config.py#L2025-L2036 • https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L4262-L4264
  37. 37. ラ イ ブ マ イ グ レ ー シ ョ ン の 問 題 • PCIパススルーを使ったVMはライブマイグレーションができない。マ イグレーション前のホストのPCIコネクションが切れないままになって しまう。 • ワークアラウンド:古いコネクションを下記にあるようなmysql DBの nova.pci_devicesから削除し古いホストを再起動する。 • 再起動は他のホストに影響するため、ありえない。他にmysql DBなど関連プロセ スの再起動で乗り切る形もあるが、これも他のホストに影響するためありえない ことになる。 | 2016-08-11 00:54:45 | 2016-08-19 04:58:01 | NULL | 0 | 45 | 21 | 0000:84:00.0 | 11b4 | 10de | type-PCI | pci_0000_84_00_0 | label_10de_11b4 | available | {} | NULL | NULL | 1 | <<-- old-host | 2016-08-11 00:54:45 | 2016-08-19 04:58:01 | NULL | 0 | 48 | 21 | 0000:88:00.0 | 11b4 | 10de | type-PCI | pci_0000_88_00_0 | label_10de_11b4 | available | {} | NULL | NULL | 1 | <<-- old-host
  38. 38. G P U が O P E N S T A C K 環 境 で ど う 動 く か チ ェ ッ ク ! デ モ ( ビ デ オ )
  39. 39. イ ン ス タ ン ス を 立 ち 上 げ G P U の 動 作 を 確 認 • RHEL OpenStackを利用 • パススルーしてあるインスタンスを立ち上げる • Ubuntuインスタンスを立ち上げlspciとdevicequeryを実行、GPUの 動作を確認 • Windows上でのGPUの動きをGraphicsベンチで確認、RDSでのリ モートサイトにあるものの接続のため、カクカクしてしまうがベ ンチの結果だけ?良いことを確認する。 • デモビデオではSlashtopを利用
  40. 40. 関 連 リ ン ク • Attaching physical PCI devices to guests: https://docs.openstack.org/admin-guide/compute-pci- passthrough.html • Container as a Service on GPU Cloud- Our Decision Among K8s, Mesos, Docker Swarm, and OpenStack Zun: https://www.slideshare.net/secret/AiUdO4dLxNTkfI • OVMF_による_PCI_パススルー https://goo.gl/icq9mV
  41. 41. S p e c i a l T h a n k s t o : • GPU on OpenStack project members VirtualTech Japan NVIDIA DellEMC NEC Networks & System Integration • @zgock999 at Tokaido-LUG, Nagoya, Japan Teach me some hints how to use GPGPU on VM! • Matthew Treinish of IBM attended my session at LC3 china and figure out and feedback some point! • Our customers! give the chance to evaluate!
  42. 42. P R E S E N T B Y M A S A F U M I O H T A T W E E T @ m a s a f u m i o h t a m a i l t o : m a s a f u m i @ p i d 0 . o r g T H A N K S V E R Y M U C H F O R C O M I N G M Y S E S S I O N !

×