xenserver vgpu pass-through 구현하기 – nvidia vgx – grid k1 – grid k2

 
작성자 : 서진우 (alang@clunix.com)

 

 

Nvidia 에서 Kepler pGPU를 vGPU 형태로 여러 VM에서 공유할 수 있도록 하는 VGX 기술을 만들었다.

해당 GPU Board 가 GRID K 시리즈이다. 현재 고급 3D 그래픽 사용자를 대상으로 하는 k2 시리즈와

일반 그래픽 사용자를 대상으로 하는 K1 시리즈가 출시 되었다.

 

Grid K1 board

pGPG : 4

vGPU Type : K140Q(파워유저, 1GB), K100(일반유저, 256MB)

K140Q : 16개 생성 가능, (pGPU 당 4개)

K100 : 32개 생성 가능, (pGPU 당 8개)

 

Grid K2 board (8GB)

pGPU : 2 (K5000급, 4GB)

vGPU Type : K260Q(전문가, 2GB), K240Q(파워유저, 1GB), K200(일반유저, 256MB)

K260Q : 4개 생성 (K2000급,2GB)

K240Q : 8개 생성 (K600급,1GB)

K200  : 16개 생성 (GT급,256MB)

 

GPU Passthrough 작업 전, 후는 pGPU와 거의 동일하다. 다른 점은 XenServer설치 후

Hotfix XS62ETP001 적용하고, XenServer 에 Nvidia vgx driver를 설치해야 하는 점이다.

 

그리고 VM에 GPU 할당 시 vgpu-type 이란 새로운 개념이 추가 된다는 점이다.

 

이제 vGPU Passthrough 적용 가능에 대해 알아보자.

 

우선 XenServer 6.2 설치하고, XS62ETP001 Hotfix 를 적용한다.

 

reboot

 

Nvidia 사에서 제공하는 NVIDIA-vgx-xenserer driver 를 Xenserver Host 에 설치한다.

 

# rpm -Uvh NVIDIA-vgx-xenserver-6.2-312.53.i386.rpm

 

reboot

 

우선 vgx driver 가 잘 인식되었는지 확인한다.

 

# lsmod | grep nvidia

nvidia               8524886  666

i2c_core               20294  2 nvidia,i2c_i801

 

# nvidia-smi

Fri Oct 25 16:47:44 2013

+——————————————————+

| NVIDIA-SMI 4.312.53   Driver Version: 312.53         |

|——————————-+———————-+———————-+

| GPU  Name                     | Bus-Id        Disp.  | Volatile Uncorr. ECC |

| Fan  Temp  Perf  Pwr:Usage/Cap| Memory-Usage         | GPU-Util  Compute M. |

|===============================+======================+======================|

|   0  GRID K2                  | 0000:85:00.0     Off |                  Off |

| N/A   31C    P8    27W / 117W |  95% 3910MB / 4095MB |      0%      Default |

+——————————-+———————-+———————-+

|   1  GRID K2                  | 0000:86:00.0     Off |                  Off |

| N/A   31C    P8    27W / 117W |  96% 3915MB / 4095MB |      0%      Default |

+——————————-+———————-+———————-+

 

+—————————————————————————–+

| Compute processes:                                               GPU Memory |

|  GPU       PID  Process name                                     Usage      |

|=============================================================================|

|    No running compute processes found                                       |

+—————————————————————————–+

 

이제 pGPU를 확인한다.

 

# xe pgpu-list

———————————————————————————

uuid ( RO)              : 7bd8ebb9-9f69-e9ef-9e68-2be71bddd172

vendor-name ( RO): NVIDIA Corporation

device-name ( RO): GK104GL [GRID K2]

gpu-group-uuid ( RW): 56a9d370-df44-64ab-31c3-b3649cc03247

 

 

uuid ( RO)              : 62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6

vendor-name ( RO): NVIDIA Corporation

device-name ( RO): GK104GL [GRID K2]

gpu-group-uuid ( RW): 56a9d370-df44-64ab-31c3-b3649cc03247

———————————————————————————

2개의 GRID K2 pGPU를 확인할 수 있다.

 

pGPU 의 세부 정보를 확인한다.

 

# xe pgpu-param-list uuid=7bd8ebb9-9f69-e9ef-9e68-2be71bddd172

———————————————————————————

uuid ( RO)                    : 7bd8ebb9-9f69-e9ef-9e68-2be71bddd172

vendor-name ( RO): NVIDIA Corporation

device-name ( RO): GK104GL [GRID K2]

gpu-group-uuid ( RW): 56a9d370-df44-64ab-31c3-b3649cc03247

gpu-group-name-label ( RO): Group of NVIDIA Corporation GK104GL [GRID K2] GPUs

host-uuid ( RO): 63ffb0d6-cfea-405f-84ec-9feedacfbdc1

host-name-label ( RO): xen-alang2

pci-id ( RO): 0000:85:00.0

dependencies (SRO):

other-config (MRW):

supported-VGPU-types ( RO): b6d016bf-7475-f064-45e8-6bbc3c2f61fe; c8a09c89-e48c-cbfd-c76d-e493fbc2f98d; 06b6d0dc-70d9-3134-b569-f521c4967617; 217b6cc8-8470-6e43-6038-98adf2497676

enabled-VGPU-types (SRW): b6d016bf-7475-f064-45e8-6bbc3c2f61fe; c8a09c89-e48c-cbfd-c76d-e493fbc2f98d; 06b6d0dc-70d9-3134-b569-f521c4967617; 217b6cc8-8470-6e43-6038-98adf2497676

resident-VGPUs ( RO):

———————————————————————————

 

# xe pgpu-param-list uuid=62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6

———————————————————————————

uuid ( RO)                    : 62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6

vendor-name ( RO): NVIDIA Corporation

device-name ( RO): GK104GL [GRID K2]

gpu-group-uuid ( RW): 56a9d370-df44-64ab-31c3-b3649cc03247

gpu-group-name-label ( RO): Group of NVIDIA Corporation GK104GL [GRID K2] GPUs

host-uuid ( RO): 63ffb0d6-cfea-405f-84ec-9feedacfbdc1

host-name-label ( RO): xen-alang2

pci-id ( RO): 0000:86:00.0

dependencies (SRO):

other-config (MRW):

supported-VGPU-types ( RO): b6d016bf-7475-f064-45e8-6bbc3c2f61fe; c8a09c89-e48c-cbfd-c76d-e493fbc2f98d; 06b6d0dc-70d9-3134-b569-f521c4967617; 217b6cc8-8470-6e43-6038-98adf2497676

enabled-VGPU-types (SRW): b6d016bf-7475-f064-45e8-6bbc3c2f61fe; c8a09c89-e48c-cbfd-c76d-e493fbc2f98d; 06b6d0dc-70d9-3134-b569-f521c4967617; 217b6cc8-8470-6e43-6038-98adf2497676

resident-VGPUs ( RO):

———————————————————————————

 

이제 XenServer Host에 존재하는 GPU Group 에 대해 확인한다.

 

# xe gpu-group-list

———————————————————————————

uuid ( RO)                : 56a9d370-df44-64ab-31c3-b3649cc03247

name-label ( RW): Group of NVIDIA Corporation GK104GL [GRID K2] GPUs

name-description ( RW):

 

 

uuid ( RO)                : 1f677c02-c0b6-ded5-2606-0bbaa91ff409

name-label ( RW): Group of Matrox Electronics Systems Ltd. G200eR2 GPUs

name-description ( RW):

———————————————————————————

 

지원되는 vGPU Type 를 확인한다

.

vGPU Type을 확인하기 위해서는 아래 명령을 수행해야 한다.

 

# xe-toolstack-restart

 

# xe vgpu-type-list

———————————————————————————

uuid ( RO)                : b6d016bf-7475-f064-45e8-6bbc3c2f61fe

vendor-name ( RO):

model-name ( RO): passthrough

framebuffer-size ( RO): 0

 

 

uuid ( RO)                : 217b6cc8-8470-6e43-6038-98adf2497676

vendor-name ( RO): NVIDIA Corporation

model-name ( RO): GRID K240Q

framebuffer-size ( RO): 1006632960

 

 

uuid ( RO)                : 06b6d0dc-70d9-3134-b569-f521c4967617

vendor-name ( RO): NVIDIA Corporation

model-name ( RO): GRID K200

framebuffer-size ( RO): 268435456

 

 

uuid ( RO)                : c8a09c89-e48c-cbfd-c76d-e493fbc2f98d

vendor-name ( RO): NVIDIA Corporation

model-name ( RO): GRID K260Q

framebuffer-size ( RO): 2013265920

———————————————————————————

 

Grid K2 는 총 4가지 형태의 GPU를 제공한다.

 

pGPU (K5000), vGPU-K260Q (K2000), vGPU-K240Q (K600), vGPU-K200 (GT)

vgpu-type 중 passthrough는 pGPU 를 직접 할당시키는 type이다.

 

vgpu-type 의 세부 정보를 확인해 보자. 아래는 K240Q type 의 세부정보이다.

 

# xe vgpu-type-list uuid=217b6cc8-8470-6e43-6038-98adf2497676 params=all

———————————————————————————

uuid ( RO)                  : 217b6cc8-8470-6e43-6038-98adf2497676

vendor-name ( RO): NVIDIA Corporation

model-name ( RO): GRID K240Q

framebuffer-size ( RO): 1006632960

max-heads ( RO): 2

supported-on-PGPUs ( RO): 62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6; 7bd8ebb9-9f69-e9ef-9e68-2be71bddd172

enabled-on-PGPUs ( RO): 62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6; 7bd8ebb9-9f69-e9ef-9e68-2be71bddd172

VGPU-uuids ( RO):

 

# xe gpu-group-param-list  uuid=56a9d370-df44-64ab-31c3-b3649cc03247

uuid ( RO)                    : 56a9d370-df44-64ab-31c3-b3649cc03247

name-label ( RW): Group of NVIDIA Corporation GK104GL [GRID K2] GPUs

name-description ( RW):

VGPU-uuids (SRO):

PGPU-uuids (SRO): 62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6; 7bd8ebb9-9f69-e9ef-9e68-2be71bddd172

other-config (MRW):

enabled-VGPU-types ( RO): c8a09c89-e48c-cbfd-c76d-e493fbc2f98d; 06b6d0dc-70d9-3134-b569-f521c4967617; 217b6cc8-8470-6e43-6038-98adf2497676; b6d016bf-7475-f064-45e8-6bbc3c2f61fe

supported-VGPU-types ( RO): c8a09c89-e48c-cbfd-c76d-e493fbc2f98d; 06b6d0dc-70d9-3134-b569-f521c4967617; 217b6cc8-8470-6e43-6038-98adf2497676; b6d016bf-7475-f064-45e8-6bbc3c2f61fe

allocation-algorithm ( RW): depth-first

———————————————————————————

 

이제 VM에 GRID K2 에서 지원하는 vGPU를 할당한다.

vGPU 할당에 필요한 정보는 아래와 같다.

 

vm-uuid : VM의 uuid  -> xm vm-list

gpu-group-uuid : pGPU가 소속된 GPU Group 의 uuid -> xe gpu-group-list

vgpu-type-uuid : VM에 할당한 vGPU 등급(passthrough, K260Q, K240Q, K200) -> xe vgpu-type-list

 

아래는 VM에 K240Q vGPU를 할당하는 명령이다.

 

# xe vgpu-create vm-uuid=a623c349-6b7f-709e-4e05-38dffc1c5bb8 gpu-group-uuid=56a9d370-df44-64ab-31c3-b3649cc03247 vgpu-type-uuid=217b6cc8-8470-6e43-6038-98adf2497676

ae8d116b-0d2c-07c3-af43-3f35fe1fdedf

 

할당이 완료된 후,  vgpu-type-list 를 확인하면 할당된 VGPU-uuids 에 할당된 vgpu의 정보가 포함

되어 있다.

 

# xe vgpu-type-list uuid=217b6cc8-8470-6e43-6038-98adf2497676 params=all

uuid ( RO)                  : 217b6cc8-8470-6e43-6038-98adf2497676

vendor-name ( RO): NVIDIA Corporation

model-name ( RO): GRID K240Q

framebuffer-size ( RO): 1006632960

max-heads ( RO): 2

supported-on-PGPUs ( RO): 62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6; 7bd8ebb9-9f69-e9ef-9e68-2be71bddd172

enabled-on-PGPUs ( RO): 62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6; 7bd8ebb9-9f69-e9ef-9e68-2be71bddd172

VGPU-uuids ( RO): 7af519ba-bf7c-ac73-2032-56c93dd7770b; 78458e7a-6c21-69cd-e192-da71c8a4313c; 7dfe501e-cd1f-9998-4d3e-cbc5f30f36fb; ae8d116b-0d2c-07c3-af43-3f35fe1fdedf

 

마지막으로 VM 의 운영체제 설치 및 기본 작업을 완료한 후, VM 가상 console 을 제거한다.

 

# xe vm-param-set platform:vgpu_vnc_enabled=false uuid=755b8431-066d-b42d-260e-3f7e8a38c132

 

# xe vm-param-set uuid=826ac06c-4bee-1c9b-0ef3-b70a68853991 platform:vgpu_extra_args=”disable_vnc=1″ -> VM hang when booting

 

 

 

참고로 vGPU가 할당된 VM에서도 Nvidia Graphic driver를 설치해야 하는데, 반드시 GRID vGPU driver를

설치해야 한다. (312.56-grid-win7-64bit-english-whql.exe)

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...