Xenserver 특정 pGPU 상에서 vGPU 생성하기
작성자 : 서진우 (alang@clunix.com)
아래의 내용은 추측을 통한 검증 테스트 과정의 내용임.
현재 까지의 결론은 gpu-group 은 pgpu를 분리하는 역할만 함.
vgpu의 경우 gpu-group을 통해 배분할 수 없음.
단 아래 방식으로 vGPU 별로 group 을 운영하면, 적어도 XenCenter 상에 VM별 GPU 그룹정보
를 통해 해당 VM이 어떤 vGPU를 가지고 있는지 알수 있다.
또한 vgpu-create 시 xe pgpu-list params=all 로 설정에 필요한 정보를 모두 확인할 수
있다.
—————————————————————————————-
동일한 사양의 여러 PGPU를 가진 서버로 XenServer를 기본 구성하면 단일 gpu group을 통해
해당 pgpu 가 그룹화 된다. 만일 특정 VM에 할당하는 vGPU를 특정 pGPU에 종속을 시키고자 하면
GPU Group을 분리해서 각 그룹별로 다른 pGPU를 할당해야 한다.
이러한 이유는 XenCenter에서 VM의 GPU 속성 선택을 gpu group 단위로만 지정 할 수 있다.
만일 부서나 프로젝트와 같이 같은 종속 부류에 대해 고정된 GPU 자원을 할당하고자 할 경우
기본적인 할당 정책으로는 불가능하다.
XenCenter 상에서 직관적으로 여러 VM의 GPU 자원 운영하고자 할때 pGPU별 그룹 분리는 필요한
방안 중 하나가 될것이다.
참고로 기본상태 XenCenter 로 GPU 그룹을 할당하면 무조건 passthrough type의 vgpu를 가지게
된다. vGPU(K260q,K240q,K200)를 할당받기 위해서는 command line 상에서 직접 해당 VM에
vgpu-type을 지정해 주어야 한다.
XenCenter UI 상에서 GPU 그룹을 vGPU Type별로 분류를 하고, vGPU type 별 그룹을 할당할때
해당 vGPU를 자동으로 할당 받기 위해서는 아래의 GPU 분류작업이 필요하다.
1. vGPU Type 별로 gpu group 생성
2. pGPU 장치 pci id 를 통해 물리적으로 특정 GPU 장치를 gpu group 에 할당
3. pGPU 속성 정보에서 enabled-VGPU-types 을 지정한다.
일단 gpu-group 을 vGPU 별로 분리하기 위해서는 새로운 gpu-group을 생성해야 한다.
또한 새로 생성한 gpu-group 에 특정 pGPU를 할당해야 할것이다.
우선 새로운 GPU group 을 생성하도록 한다.
# xe gpu-group-create name-label=”<New GPU Group name>”
# xe gpu-group-create name-label=”Group of ALANG VMs’s GPU Resource”
이제 특정 pGPU를 새로 생성한 gpu group 에 포함시켜 주면 된다.
그러기 위해서는 새로 생성한 gpu group의 uuid 와 pGPU 의 uuid 를 사전에 파악해야 한다.
아래는 pci_id 86:00.0 의 pGPU를 새로 생성한 “Group of ALANG VMs’s GPU Resource” group
에 포함 시키는 과장이다.
먼저 새로 생성한 gpu group uuid 파악
# xe gpu-group-list name-label=”Group of ALANG VMs’s GPU Resource”
——————————————————————————-
uuid ( RO) : 6a417759-635c-cdf4-8345-f2f2e986d432
name-label ( RW): Group of ALANG VMs’s GPU Resource
name-description ( RW):
——————————————————————————
새로 생성한 gpu group 에 포함 시킬 pGPU의 uuid 파악
# xe pgpu-list pci-id=0000:86:00.0
——————————————————————————
uuid ( RO) : 62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6
vendor-name ( RO): NVIDIA Corporation
device-name ( RO): GK104GL [GRID K2]
gpu-group-uuid ( RW): a116cfbe-ddce-f08a-3d41-7a84640d6fc7
——————————————————————————
해당 pGPU를 신규 gpu group 에 포함
# xe pgpu-param-set uuid=62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6 gpu-group-uuid=6a417759-635c-cdf4-8345-f2f2e986d432
이제 마지막으로 해당 pGPU 에 지원가능한 vgpu-type을 지정한다.
# xe vgpu-type-list : vgpu-type-uuid 확인
# xe pgpu-list params=all : pgpu-uuid, gpu-group-name-label, enabled-VGPU-types 확인
# xe pgpu-param-set uuid=<pgpu-uuid> enabled-VGPU-types=<vgpu-type-uuid>
이제 정상적으로 Group 별로 pGPU 와 vGPU-Type 이 분리가 되었는지 확인한다.
# xe pgpu-list params=all
———————————————————————————————
uuid ( RO) : 502e7398-4756-3cdf-8560-44beb6a62433
vendor-name ( RO): NVIDIA Corporation
device-name ( RO): GK106GL [Quadro K4000]
gpu-group-uuid ( RW): e20bbb59-5236-2d75-10c2-63b7543b30c1
gpu-group-name-label ( RO): Group of NVIDIA Corporation GK106GL [Quadro K4000] GPUs
host-uuid ( RO): 58688cf5-f2e6-40c3-bb22-5f91b945789a
host-name-label ( RO): alang20
pci-id ( RO): 0000:03:00.0
dependencies (SRO): 0000:03:00.1
other-config (MRW):
supported-VGPU-types ( RO): b607c3e6-1948-637b-6cbf-b5175b122919
enabled-VGPU-types (SRW): b607c3e6-1948-637b-6cbf-b5175b122919
resident-VGPUs ( RO):
uuid ( RO) : 3522804a-e851-3d19-fd3c-c6714981d95f
vendor-name ( RO): NVIDIA Corporation
device-name ( RO): GK104GL [GRID K2]
gpu-group-uuid ( RW): c55f9161-a28d-8f20-1522-f95dfbc88f4b
gpu-group-name-label ( RO): NVIDIA GRID K2 [K240Q] vGPUs
host-uuid ( RO): 58688cf5-f2e6-40c3-bb22-5f91b945789a
host-name-label ( RO): alang20
pci-id ( RO): 0000:86:00.0
dependencies (SRO):
other-config (MRW):
supported-VGPU-types ( RO): b607c3e6-1948-637b-6cbf-b5175b122919; 889c4df2-5f7c-78f7-acb9-59f66742c93d; e1b8131a-6ba5-e90f-9d77-d53b93861a3b; 6b5852a5-0499-0129-8bd9-2c8aa15cd1bb
enabled-VGPU-types (SRW): 889c4df2-5f7c-78f7-acb9-59f66742c93d
resident-VGPUs ( RO):
uuid ( RO) : c2a5ab86-9a3f-4d5c-0c12-43f37f01e77c
vendor-name ( RO): NVIDIA Corporation
device-name ( RO): GK104GL [GRID K2]
gpu-group-uuid ( RW): 9bada0e2-f576-8eb7-e282-ba7bfde9e552
gpu-group-name-label ( RO): NVIDIA GRID K2 [passthrough] pGPUs
host-uuid ( RO): 58688cf5-f2e6-40c3-bb22-5f91b945789a
host-name-label ( RO): alang20
pci-id ( RO): 0000:85:00.0
dependencies (SRO):
other-config (MRW):
supported-VGPU-types ( RO): b607c3e6-1948-637b-6cbf-b5175b122919; 889c4df2-5f7c-78f7-acb9-59f66742c93d; e1b8131a-6ba5-e90f-9d77-d53b93861a3b; 6b5852a5-0499-0129-8bd9-2c8aa15cd1bb
enabled-VGPU-types (SRW): b607c3e6-1948-637b-6cbf-b5175b122919
resident-VGPUs ( RO): 94701c64-9262-824c-5c14-2f2abd722205
—————————————————————————————
# xe gpu-group-list params=all
—————————————————————————————–
uuid ( RO) : 72462076-8107-8f35-e09d-ef1ef40e0e5d
name-label ( RW): NVIDIA GRID K2 [K200] vGPUs
name-description ( RW):
VGPU-uuids (SRO):
PGPU-uuids (SRO):
other-config (MRW):
enabled-VGPU-types ( RO): <expensive field>
supported-VGPU-types ( RO): <expensive field>
allocation-algorithm ( RW): depth-first
uuid ( RO) : c55f9161-a28d-8f20-1522-f95dfbc88f4b
name-label ( RW): NVIDIA GRID K2 [K240Q] vGPUs
name-description ( RW):
VGPU-uuids (SRO):
PGPU-uuids (SRO): 3522804a-e851-3d19-fd3c-c6714981d95f
other-config (MRW):
enabled-VGPU-types ( RO): <expensive field>
supported-VGPU-types ( RO): <expensive field>
allocation-algorithm ( RW): depth-first
uuid ( RO) : 9bada0e2-f576-8eb7-e282-ba7bfde9e552
name-label ( RW): NVIDIA GRID K2 [passthrough] pGPUs
name-description ( RW):
VGPU-uuids (SRO): 94701c64-9262-824c-5c14-2f2abd722205
PGPU-uuids (SRO): c2a5ab86-9a3f-4d5c-0c12-43f37f01e77c
other-config (MRW):
enabled-VGPU-types ( RO): <expensive field>
supported-VGPU-types ( RO): <expensive field>
allocation-algorithm ( RW): depth-first
uuid ( RO) : e20bbb59-5236-2d75-10c2-63b7543b30c1
name-label ( RW): Group of NVIDIA Corporation GK106GL [Quadro K4000] GPUs
name-description ( RW):
VGPU-uuids (SRO):
PGPU-uuids (SRO): 502e7398-4756-3cdf-8560-44beb6a62433; 4d6dc185-d40c-048d-b13e-e53fb1b02f1f
other-config (MRW):
enabled-VGPU-types ( RO): <expensive field>
supported-VGPU-types ( RO): <expensive field>
allocation-algorithm ( RW): depth-first
uuid ( RO) : 6620b20d-6fe1-421e-20e8-0c408b1394f0
name-label ( RW): NVIDIA GRID K2 [K260Q] vGPUs
name-description ( RW):
VGPU-uuids (SRO):
PGPU-uuids (SRO):
other-config (MRW):
enabled-VGPU-types ( RO): <expensive field>
supported-VGPU-types ( RO): <expensive field>
allocation-algorithm ( RW): depth-first
———————————————————————————————
일단 새로 추가한 gpu-group 에 PGPU 가 포함되어 있는 것을 확인할 수 있다. 하지만 아직 해당 PGPU
를 통해 아무런 vGPU가 할당되지는 않았다.
이제 XenCenter 로 접속한다. 그런 후 몇몇 VM의 GPU 속성 변경을 통해 새로 생성한 GPU Group 을
할당 한다.
다시 gpu-group-list 를 확인해 본다.
# xe gpu-group-list params=all
——————————————————————————–
uuid ( RO) : 56a9d370-df44-64ab-31c3-b3649cc03247
name-label ( RW): Group of NVIDIA Corporation GK104GL [GRID K2] GPUs
name-description ( RW):
VGPU-uuids (SRO): 3ba20760-c18c-e0f2-aeaa-40716072f6a9; c90014f4-c924-ac69-f329-ab670e0900a8; 7af519ba-bf7c-ac73-2032-56c93dd7770b; ea09461b-b189-8d23-b4f8-112ec576f521; 78458e7a-6c21-69cd-e192-da71c8a4313c; b45b9706-84d5-413e-4189-0f75d8c3d2ea; 459145b3-4fb1-87a5-9256-6832a2ae7f18
PGPU-uuids (SRO): 7bd8ebb9-9f69-e9ef-9e68-2be71bddd172
other-config (MRW):
enabled-VGPU-types ( RO): <expensive field>
supported-VGPU-types ( RO): <expensive field>
allocation-algorithm ( RW): depth-first
uuid ( RO) : 6a417759-635c-cdf4-8345-f2f2e986d432
name-label ( RW): Group of ALANG VMs’s GPU Resource
name-description ( RW):
VGPU-uuids (SRO): 20e3821b-cdc1-dede-dedd-ab662cd6b996; a8403082-2ad3-2ee5-ee48-4848c1421abe; 851e6198-d87b-92b1-b811-e00d2a91fc30; acdf6db6-3e9b-9ea5-c949-0b83ee594efd
PGPU-uuids (SRO): 62ce0ffc-aa26-9f03-ac95-406ee9a4e8f6
other-config (MRW):
enabled-VGPU-types ( RO): <expensive field>
supported-VGPU-types ( RO): <expensive field>
allocation-algorithm ( RW): depth-first
——————————————————————————–
XenCenter에서 GPU group 을 변경한 VM 수만큼 신규 gpu group 에서 vGPU 정보를 확인할 수 있다.