狠狠撸
Submit Search
GPU仮想化最前線 - KVMGTとvirtio-gpu -
?
1 like
?
7,445 views
Z
zgock
Follow
翱厂颁名古屋2019、辞辫别苍厂鲍厂贰ユーザー会セミナーの発表资料です
Read less
Read more
1 of 67
Download now
Download to read offline
More Related Content
GPU仮想化最前線 - KVMGTとvirtio-gpu -
1.
2019/07/13gpu仮想化最前線 #oscnagoya 1/67 GPU
仮想化最前線 - KVMGT と virtio-gpu - 安藤 達也 日本 openSUSE ユーザ会
2.
2019/07/13gpu仮想化最前線 #oscnagoya 2/67 お前どこ中誰よ? ● 安藤 達也 –
@zgock999@mstdn.maud.io ● openSUSE との出会い – 2003年ぐらいに自分のPemtium-MノートのWifiを認識してくれ る唯一のディストリということで落ち着く – Xenに強かったディストリということもあり、 2012年ぐらいから家の擬似VDIサーバで活躍してもらっている ● openSUSE12.3~Leap15.1まで随時更新中 ● このへん詳しくは狠狠撸Shareの 「Xenとzfsで作る家庭内VDIサーバ」シリーズ参照 – 50000ビューぐらい行ってて驚いた
3.
2019/07/13gpu仮想化最前線 #oscnagoya 3/67 みなさん って何かご存知ですか?
4.
2019/07/13gpu仮想化最前線 #oscnagoya 4/67 正しいのはどれ? ● 1.
サーバールームでモフモフできるカメレオン型ガジェット ● 2. 緑色のロゴが目印の謎のAI半導体メーカー ● 3. ドイツ生まれの Linux ディストリビューション
5.
2019/07/13gpu仮想化最前線 #oscnagoya 5/67 正解 ● 3.
ドイツ生まれの Linux ディストリビューション – S.u.S.E Linux 4.2 で独自のディストリビューションになってから ● Q: RedHat 系ですか? Debian 系ですか? A: どちらでもありません! – RPM じゃないとダメとか deb じゃないとダメとか、 そういう話もよく聞きます(なぜ? ● Q: OpenSUSE ですか?openSUSE ですか? A: o は小文字です。IPhone ではなく、iPhone なのと同じです
6.
2019/07/13gpu仮想化最前線 #oscnagoya 6/67 今日の内容 ● 仮想化技術最後の壁、GPU仮想化 ● virtio-gpuとKVMGT ● openSUSEでvGPUなKVM環境を作ろう ● その1:virtio-gpuでAndroid-x86 ● その2:KVMGTでWindows10 ● 展示ブースデモ機の解説 ● 質疑応答とか
7.
2019/07/13gpu仮想化最前線 #oscnagoya 7/67 仮想化技術最後の壁、GPU ● 最近はGPUの活躍の場が増えてきた –
ゲーミング – 仮想通貨採掘(openCL/CUDA) – 画像処理etc.(openCL/CUDA) – ディープラーニングとかでも使ってるらしい(専門外だけど) ● 謎のAI半導体メーカ、 一体何VIDIAなんだ???
8.
2019/07/13gpu仮想化最前線 #oscnagoya 8/67 仮想化技術最後の壁、GPU ● qemu/VMWare/VirtualBox等でさまざまなデバイスの仮想化 が進んだ –
ネットワークやブロックデバイス等は採用技術次第ではネイティ ブと遜色ないレベルに ● GPUは複雑なデバイスであるため単純なソフトウェアによる仮 想化ではパフォーマンスや機能に限界があった – 最もパフォーマンスが出るとされているVMWare WorkStation の仮想VGAでも実GPUには遠く及ばない
9.
2019/07/13gpu仮想化最前線 #oscnagoya 9/67 GPU仮想化のための方法論(1) ● 演算対応の完全仮想GPUの実装 –
VMWare VGAとかqemuのvirtio-gpuとか – これまでのアプローチの発展系で3Dアクセ ラレーションやGPU演算対応版仮想デバイス – ゲストからは既存のGPUとは非互換な抽象化 された新設計GPUに見える
10.
2019/07/13gpu仮想化最前線 #oscnagoya 10/67 GPU仮想化のための方法論(1) ● 演算対応の完全仮想GPUの実装 –
長所 ● 一個のGPUを複数のゲストで共有できる ● 従来の思想を踏襲しているので運用レベルでの 変化は少ない
11.
2019/07/13gpu仮想化最前線 #oscnagoya 11/67 GPU仮想化のための方法論(1) ● 演算対応の完全仮想GPUの実装 –
短所 ● 環境側で専用ドライバを用意せねばならず、実 装に手間取りがち – virtio-gpuのwindows driverはまだ未完成 ● 一昨年のGoogle Summer Code対象だった ● とりあえずできたがopenGLのみ対応、DirectX未対応 ● パフォーマンス的にも苦しい – virtio-gpuのLinuxドライバで実gpuの30%ぐらい
12.
2019/07/13gpu仮想化最前線 #oscnagoya 12/67 GPU仮想化のための方法論(1) ● virtio-gpuの恩恵を一番受けられるゲストは? –Android-x86 ● (個人の主観です) ● 実際のVM設定については後述
13.
2019/07/13gpu仮想化最前線 #oscnagoya 13/67 GPU仮想化のための方法論(2) ● 実物理GPUの準仮想化エミュレーションGPU –
IntelのXenGTとかKVMGTとか(intel GVT-g) – GPUネイティブをバックエンドで呼び出す準仮想化 – ゲストからは実GPUのように見える – XenGTの方は数年前から実用レベルだったが KVMGTの方は最近のカーネル(4.18以降ぐらい) から実用レベルになってきた
14.
2019/07/13gpu仮想化最前線 #oscnagoya 14/67 GPU仮想化のための方法論(2) ● 実物理GPUの準仮想化エミュレーションGPU –
長所 ● 一個のGPUを複数のゲストで共有できる ● ドライバは実GPUのドライバで良い ● 完全仮想化型よりは高パフォーマンス – KVMGTで実GPUの70%ぐらい
15.
2019/07/13gpu仮想化最前線 #oscnagoya 15/67 GPU仮想化のための方法論(2) ● 実物理GPUの準仮想化エミュレーションGPU –
短所 ● 新しい実装であるためまだ未成熟 – Kernel 4.10で実装されたばかりである ● Intel以外の専業GPU屋さんは実装に消極的 ● 比較的新しいiGPU(Broadwell世代以降)必須 ● CoffeeLake以降はKernel5.1から対応 ● 有限なリソース、ホストのVRAMが大量に必要 – VRAMを共有できるわけではないのでゲストの数だけ VRAMを分割することになる – Skylakeの場合、最大でvGPU2枚が限界
16.
2019/07/13gpu仮想化最前線 #oscnagoya 16/67 GPU仮想化のための方法論(3) ● 実GPUのゲストへの直接割り当て –
いわゆるGPUパススルー – NICやHBA等のPCI/PCIe機器を割り当てる PCIパススルー技術の応用 – ゲストからは実GPUそのものに見える(当たり前)
17.
2019/07/13gpu仮想化最前線 #oscnagoya 17/67 GPU仮想化のための方法論(3) ● 実GPUのゲストへの直接割り当て 長所 ● 技術的には結構枯れた技術 –
Xenの世界では相当前から実用レベル – KVMは対応が遅れ気味だったが、ここ2~3年ぐらいで 急速に対応が進んだ ● ずっと超えられない壁だったIntel iGPUもKernel4.8とqemu2.7か ら対応 ● パフォーマンスは最も期待できる – 数%前後のロスぐらい
18.
2019/07/13gpu仮想化最前線 #oscnagoya 18/67 GPU仮想化のための方法論(3) ● 実GPUのゲストへの直接割り当て 短所 ● ホスト側に仮想IOのハード支援機構(IOMMU)が必要 –
Intelだとcore-i5以上/xeonなら最近のは大概付いてる ● K付きデスクトップだと付いてないのがあるので注意 – マザーボードも時々対応してないのがある ● ASRockなら大概大丈夫 – AMD系は最近のなら大概大丈夫 – ノートPCだと対応してる方が稀なので注意が必要 ● ゲスト一台につき一個のGPUが (原則として)必要 – SR-IOV、NVIDIA vGPUとかのゲスト間共有のためのハードウェア支援機構もあるにはある ● とても個人レベルで買える代物ではない ● KVMにおいては、まだ未成熟なところがある – 使いこなそうとすると、まだまだPatched Kernelが必要なシチュエーションが
19.
2019/07/13gpu仮想化最前線 #oscnagoya 19/67 ● 個人レベルでの現実解としては GPUパススルーが最も現実的 –
WS一台に複数GPUを積んで、それぞれをゲストに – せいぜい集約できて3~4台だが、そもそもGPUが 必要なレベルのパフォーマンス要求するゲストであ れば、コア数の問題もあってそのくらいが現実的
20.
2019/07/13gpu仮想化最前線 #oscnagoya 20/67 ● そうは行かない場合もある –
例えばノートPC ● dGPUを物理的に取り付けられない ● dGPU付ノートPCもあるが、一般的なデスクトッ プとは異なる接続方式である場合も多い
21.
2019/07/13gpu仮想化最前線 #oscnagoya 21/67 そういうわけで ノートPCでvGPUします openSUSEで!
22.
2019/07/13gpu仮想化最前線 #oscnagoya 22/67 実は仮想化は結構得意なopenSUSE ● 仮想化ホストとしては老舗なSUSE/openSUSE –
Xen主流の時代から仮想化には力を入れている – 基本的な設定程度はYastで一発 – 仮想化関係のカーネル調整も上手 ● ローリングリリースなTumbleweedがある – 最低でもKernel4.18以上とqemu3.0以上が必要だが、 ローリングリリースなTumbleweedならばっちり対応済 ● Snapperでシビアな作業も安心して進められる – カーネル設定やカーネルパッチなど、失敗したらブート 不可になるような作業でも一発で元に戻せる
23.
2019/07/13gpu仮想化最前線 #oscnagoya 23/67 openSUSE
Tumbleweed ● ローリング?リリース – 週に3回程度新しいバージョンがリリース ● 常に最新バージョンのカーネルやアプリケーション、 ライブラリを使いたい人向け – アプリケーション開発時に、新しいコンパイラやライブラリでも 動くかをいち早く確認できる
24.
2019/07/13gpu仮想化最前線 #oscnagoya 24/67 Snapperでいつでも巻き戻し ● Snapperって何? –
btrfsのスナップショット機能を応用したシステム復元ツール – Windowsの「システム復元」と似たようなものと言えなくもな いが、btrfsのスナップショットを使用するので保存も復元も一 瞬 – Yast、zypper等の主要コマンドを実行した時点で自動的にス ナップショットが作られる ● カーネル弄るようなシビアな作業で真価を発揮 – ふぇぇ???設定をしくじってブート不可になったよぉ??? ● ブートローダーから「過去のスナップショットで起動」を選んで失 敗する前の状態でブートする ● 「Snapper rollback」とコマンドを叩けばすっかり元通り
25.
2019/07/13gpu仮想化最前線 #oscnagoya 25/67 -
その1 - virtio-gpuな KVM環境の構築
26.
2019/07/13gpu仮想化最前線 #oscnagoya 26/67 まずはインストールから ● Tumbleweedはネットワークインストール推奨 –
ftp.riken.jpが日本で現状唯一のTumbleweedミラー ● http://ftp.riken.jp/Linux/opensuse/tumbleweed/repo/oss ● UEFIインストールは避けた方が良い – UEFIインストーラはbiosインストーラより細かいところが不親切 – snapper活用するならrootfsは全面btrfsが良い – homeの分割はお好みで ● お好みのデスクトップでインストール – xfce4派ですが、好きなのでいいんじゃないかな?
27.
2019/07/13gpu仮想化最前線 #oscnagoya 27/67 基本設定はYastで一発 ● qemu入れて~libvirt入れて~、daemon有効にして~、ブ リッジ設定して~ –
他のディストリだったらありがちな光景 「Yast>仮想化>ハイパーバイザのインストール」 「KVMサーバ」を選択して実行するだけで GPU仮想化使わない普通のKVM環境なら ネットワーク設定込みで一発で終わります
28.
2019/07/13gpu仮想化最前線 #oscnagoya 28/67 virt-managerでインストール ● virt-managerから普通にisoインストール –
最后に「设定をカスタマイズ」がポイントその1
29.
2019/07/13gpu仮想化最前線 #oscnagoya 29/67 virt-managerでインストールその2 ● ディスプレイをspiceにしてopenGLを有効に
30.
2019/07/13gpu仮想化最前線 #oscnagoya 30/67 virt-managerでインストールその3 ● ビデオをvirtioにして3Dアクセラレーションを有効に
31.
2019/07/13gpu仮想化最前線 #oscnagoya 31/67 virt-managerでインストールその4 ● こんなエラーが出たときは? –
virt-managerのバグでたまにspiceのopenGL設定が外れる 場合があるので再度設定すればOK
32.
2019/07/13gpu仮想化最前線 #oscnagoya 32/67 ● 後は普通にインストール
33.
2019/07/13gpu仮想化最前線 #oscnagoya 33/67 ● 「ドールズフロントオンライン」(ドルフロ)程度なら普通に 動きます
34.
2019/07/13gpu仮想化最前線 #oscnagoya 34/67 ● 「カスタムキャスト」なんかも動くには動く –
ただし蝉辫颈肠别侧の问题でスワイプを受け付けない
35.
2019/07/13gpu仮想化最前線 #oscnagoya 35/67 ● 全てのゲームタイトルが動くわけではありません –
x86で動かないタイトルがたまーにある ● そういうのはAndroid-x86実機でも動かないので仕方な いね
36.
2019/07/13gpu仮想化最前線 #oscnagoya 36/67 -
その2 - KVMGTな KVM環境の構築
37.
2019/07/13gpu仮想化最前線 #oscnagoya 37/67 ちょっと難易度が上がります -
その2 - KVMGTな KVM環境の構築
38.
2019/07/13gpu仮想化最前線 #oscnagoya 38/67 カーネルモジュールの準備 ● gvt-gを使うために必要なモジュール類を入れます #
echo "INITRD_MODULES="kvmgt vfio- iommu-type1 vfio-mdev"" > /etc/sysconfig/kernel # mkinitrd
39.
2019/07/13gpu仮想化最前線 #oscnagoya 39/67 カーネルパラメータの設定 ● カーネルパラメータを設定します i915.enable_gvt=1
kvm_ignore_msrs=1 intel_iommu=1 ● Yast>ブートローダで設定
40.
2019/07/13gpu仮想化最前線 #oscnagoya 40/67 PCIアドレスの確認 ● 再起動してiGPUのpciアドレスを確認 $sudo
lspci 00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers (rev 08) 00:02.0 VGA compatible controller: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07) 00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 08) ?以下略? ● 大概の場合は00:02.0なはず
41.
2019/07/13gpu仮想化最前線 #oscnagoya 41/67 共有GPUの確認 ● ls /sys/device/[GPUのPCIアドレス]/mdev_supported _types/で共有GPUの一覧が取れたら成功している $
ls /sys/devices/pci0000:00/0000:00:02.0/md ev_supported_types/ i915-GVTg_V5_4 i915-GVTg_V5_8
42.
2019/07/13gpu仮想化最前線 #oscnagoya 42/67 共有GPUのタイプ ● cat /sys/device/[GPUのPCIアドレス]/mdev_supported_types/[出てきた共有GPU]/descriptionで 共有GPUの詳細が見られる $
cat /sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types/i915- GVTg_V5_4/description low_gm_size: 128MB ←この共有GPUの最小VRAMサイズ high_gm_size: 512MB ←この共有GPUの最大VRAMサイズ fence: 4 ←この環境で使える共有GPU枠 resolution: 1920x1200 ←この共有GPUの最大解像度 weight: 4 ←この共有GPUが消費する共有GPU枠 $ cat /sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types/i915- GVTg_V5_8/description low_gm_size: 64MB high_gm_size: 384MB fence: 4 resolution: 1024x768 weight: 2
43.
2019/07/13gpu仮想化最前線 #oscnagoya 43/67 共有GPUの確保と解放 ● 共有GPUの確保 echo
'[任意のUUID]' > /sys/devices/[GPUのPCI アドレス]/mdev_supported_types/[共有GPUタ イプ]/create ● 共有GPUの解放 echo '1' > /sys/devices/[GPUのPCIアドレス]/[確保の時 使ったUUID]/remove
44.
2019/07/13gpu仮想化最前線 #oscnagoya 44/67 共有GPUの確保と解放(例) $
echo 'ab8c3af8-8366-449d-8489-fe9254e44621' > /sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types/i9 15-GVTg_V5_4/create $ ls -l /sys/devices/pci0000:00/0000:00:02.0/ 合計 0 drwxr-xr-x 4 root root 0 1月 23 04:14 ab8c3af8-8366-449d- 8489-fe9254e44621 ←このディレクトリが生える -r--r--r-- 1 root root 4096 1月 23 04:14 ari_enabled -r--r--r-- 1 root root 4096 1月 23 04:14 boot_vga ?以下略? $ echo '1' > /sys/devices/pci0000:00/0000:00:02.0/ab8c3af8- 8366-449d-8489-fe9254e44621/remove
45.
2019/07/13gpu仮想化最前線 #oscnagoya 45/67 systemdサービス化 こんな感じでsystemdサービスを作る ● $
cat /usr/lib/systemd/system/gvtgpu.service [Unit] Description=Create Intel GVT-g vGPU [Service] Type=oneshot ExecStart=/bin/sh -c "echo 'ab8c3af8-8366-449d-8489-fe9254e44621' > /sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create" ExecStop=/bin/sh -c "echo '1' > /sys/devices/pci0000:00/0000:00:02.0/ab8c3af8-8366- 449d-8489-fe9254e44621/remove" RemainAfterExit=yes [Install] WantedBy=graphical.target
46.
2019/07/13gpu仮想化最前線 #oscnagoya 46/67 systemdサービス化2 systemdサービス化してしまえば ● $
sudo systemctl start gvtgpu で確保 ● $ sudo systemctl stop gvtgpu で解放 ● $ sudo systemctl enable gvtgpuで起動時確保
47.
2019/07/13gpu仮想化最前線 #oscnagoya 47/67 systemdサービス化2 systemdサービス化してしまえば ● $
sudo systemctl start gvtgpu で確保 ● $ sudo systemctl stop gvtgpu で解放 ● $ sudo systemctl enable gvtgpuで起動時確保
48.
2019/07/13gpu仮想化最前線 #oscnagoya 48/67 systemdサービス化2 systemdサービス化してしまえば ● $
sudo systemctl start gvtgpu で確保 ● $ sudo systemctl stop gvtgpu で解放 ● $ sudo systemctl enable gvtgpuで起動時確保
49.
2019/07/13gpu仮想化最前線 #oscnagoya 49/67 virt-managerでインストール ● 一旦普通にvirt-managerでインストール
50.
2019/07/13gpu仮想化最前線 #oscnagoya 50/67 virt-managerでインストール ● KVMGTはovmfで動かないので必ずseabiosインストールする
51.
2019/07/13gpu仮想化最前線 #oscnagoya 51/67 virt-managerでインストール ● virtio-gpuの時と同様openGL有効なspiceディスプレイにす る
52.
2019/07/13gpu仮想化最前線 #oscnagoya 52/67 virt-managerでインストール ● 普通にインストールした後でシャットダウン
53.
2019/07/13gpu仮想化最前線 #oscnagoya 53/67 libvirt
XMLの編集 ● $ sudo -s ● # virsh list --all ● Id Name State ● ------------------------ ● - win10 shut off ● ● # virsh edit win10
54.
2019/07/13gpu仮想化最前線 #oscnagoya 54/67 libvirt
XMLの編集 ● </video>タグの下あたりに以下のタグを挿入する <hostdev mode='subsystem' type='mdev' managed='yes' model='vfio-pci' display='off'> <source> <address uuid='ab8c3af8-8366-449d-8489- fe9254e44621'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </hostdev> ● uuidは確保時に決めたものを ● adressは他デバイスと競合しないところを
55.
2019/07/13gpu仮想化最前線 #oscnagoya 55/67 ドライバの割り当て ● VMを起動するとセカンダリディスプレイとしてIntel
iGPUが 認識されているのでドライバを当てる
56.
2019/07/13gpu仮想化最前線 #oscnagoya 56/67 qemu XMLのドメイン変更 ● libvirtのxml中にqemuコマンドを直書きできるようスキーマ を変更する –
<domain type='kvm'> から – <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0' >
57.
2019/07/13gpu仮想化最前線 #oscnagoya 57/67 qemu標準ビデオの無効化 ● videoタイプを標準のQXLからcirrusに変更する <video> <model
type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <video> <model type='cirrus' vram='16384' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> ● インストール時点でcirrusにしてもよいが、解像度的な意味で初期インストールが辛 いため
58.
2019/07/13gpu仮想化最前線 #oscnagoya 58/67 qemu標準ビデオの無効化 ● xml末尾にqemuコマンドを追記し、標準ビデオのcirrusにわ ざと間違ったドライバを強制的にあてる <qemu:commandline> <qemu:arg
value='-set'/> <qemu:arg value='device.video0.driver=ne2k_pci'/> </qemu:commandline> ● libvirtの仕様でディスプレイあり/標準ビデオnoneにできない ため、わざとエラーを起こして標準ビデオを無効化するバッド ノウハウ ● QXLからcirrusにしたのはISA準拠だからできる裏技なので
59.
2019/07/13gpu仮想化最前線 #oscnagoya 59/67 qemu標準ビデオの無効化 ● 最新のlibvirtではこれで良くなった <video> <model
type='none'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> – 当然ドライバ指定も不要 ● ただし相当新しいlibvirtからっぽいので、ディストリによって は前述の裏技がまだ必要
60.
2019/07/13gpu仮想化最前線 #oscnagoya 60/67 Intel
iGPUの有効化 ● xml末尾にqemuコマンドを追記 <qemu:commandline> <qemu:arg value='-set'/> <qemu:arg value='device.video0.driver=ne2k_pci'/> <qemu:arg value='-set'/> <qemu:arg value='device.hostdev0.x-igd-opregion=on'/> </qemu:commandline> ● hostdevタグにdisplay=onを追加 <hostdev mode='subsystem' type='mdev' managed='yes' model='vfio-pci' display='on'>
61.
2019/07/13gpu仮想化最前線 #oscnagoya 61/67 ゲストを起動 ● 共有GPUはbiosROMを持たないため最初は画面が出ない ● しばらくしてWindowsドライバがgpuをつかめば表示される
62.
2019/07/13gpu仮想化最前線 #oscnagoya 62/67 ゲストを起動 ● もともとがintel
iGPUの上、能力70%なので性能はお察し ● とはいえVMWare WorkstationのGPU等は余裕で超える性能
63.
2019/07/13gpu仮想化最前線 #oscnagoya 63/67 ゲストを起動 ● 軽めの3Dゲームなら余裕で動きます ● アトリエとかアトリエとかアトリエとか
64.
2019/07/13gpu仮想化最前線 #oscnagoya 64/67 展示ブースの デモ機紹介
65.
2019/07/13gpu仮想化最前線 #oscnagoya 65/67 展示ブースのデモ機構成 ● DELL
Latitude E5470 – CPU: Intel Core i5 6200U – GPU: Intel UHD Graphics 520 – Mem: 8GB – OS: openSUSE Tumbleweed x86_64 – Kernel 5.1 – Qemu: 4.0 ● 解説したAndroid x86とWindows10ゲストを実際に動かして います
66.
2019/07/13gpu仮想化最前線 #oscnagoya 66/67 質疑応答とか
67.
2019/07/13gpu仮想化最前線 #oscnagoya 67/67 ありがとう ございました!
Download