R&D/HPC

[HPC] XenServer XAPI about GPU

sunshout 2012. 12. 6. 14:27

XAPI about GPU

GPU_groups

  • 어떤 종류의 GPU가 장착되어 있는지 그룹핑함
  • 아래 결과는 하나는 NVIDIA이며, 다른 한 종류는 MATROX
>>> print xen.GPU_group.get_all(session)
{  
   'Status': 'Success', 
   'Value': ['OpaqueRef:a89e58f5-c3cf-123f-ca97-6faabc599fec', 
             'OpaqueRef:0a2e8432-c7cf-7d49-bd2a-dab35a6c0393']
}

name_label

>>> print xen.GPU_group.get_name_label(session,'OpaqueRef:a89e58f5-c3cf-123f-ca97-6faabc599fec')
{
  'Status': 'Success', 
  'Value' : 'Group of NVIDIA Corporation Tesla C2075 GPUs'
}

PGPUs

  • Physical GPUs 의 개수와 상세 정보를 파악할 때 사용
>>> print xen.GPU_group.get_PGPUs(session,'OpaqueRef:a89e58f5-c3cf-123f-ca97-6faabc599fec')
{
   'Status': 'Success', 
   'Value': ['OpaqueRef:d82acc86-4d25-e19c-e15d-38391ee7553f',
             'OpaqueRef:524b143c-252d-e50e-1d2a-ed4bace7fb8c']
}

VGPUs

  • 실제 VM에 할당된 GPU는 VGPU로 나옴
  • PGPU와 VGPU의 매핑 관계를 통해서 assignable 한 GPU가 있는지를 찾아야 함
>>> print xen.GPU_group.get_VGPUs(session,'OpaqueRef:a89e58f5-c3cf-123f-ca97-6faabc599fec')
{
  'Status': 'Success', 
  'Value': ['OpaqueRef:c7657581-4e6b-f1fd-37de-6068b8371085',
            'OpaqueRef:7e9c9f86-eff9-f0ca-7c73-ddc93f07e95c']
}

VGPU

get_all

  • GPU를 할당 받은 VM이 존재할 때
>>> print xen.VGPU.get_all(session)
{  
   'Status': 'Success', 
   'Value': ['OpaqueRef:c7657581-4e6b-f1fd-37de-6068b8371085', 
             'OpaqueRef:7e9c9f86-eff9-f0ca-7c73-ddc93f07e95c']
}

get_all_records

>>> print xen.VGPU.get_all_records(session)
{
  'Status': 'Success', 
  'Value': {
            'OpaqueRef:c7657581-4e6b-f1fd-37de-6068b8371085': 
                 {
                    'uuid': '45473016-5987-90d7-0814-e2cf822666e9', 
                    'other_config': {}, 
                    'VM': 'OpaqueRef:540ab638-06f9-0dbf-b053-ee45b5bdf805', 
                    'currently_attached': True, 
                    'GPU_group': 'OpaqueRef:a89e58f5-c3cf-123f-ca97-6faabc599fec', 
                    'device': '0'
                 },
             'OpaqueRef:7e9c9f86-eff9-f0ca-7c73-ddc93f07e95c': 
                 {
                    'uuid': 'f9a15a4e-b30f-87ad-e6f6-d2520961be67', 
                    'other_config': {}, 
                    'VM': 'OpaqueRef:89694f52-c633-df12-7d48-e62d4755f7c9', 
                    'currently_attached': True, 
                    'GPU_group': 'OpaqueRef:a89e58f5-c3cf-123f-ca97-6faabc599fec', 
                    'device': '0'
                 }
             }
}

create

typename
VMref VM
GPU groupref GPU group
stringdevice
(string → string)Map other config
>>> print xen.VGPU.create(session,
                          'OpaqueRef:89694f52-c633-df12-7d48-e62d4755f7c9',
                          'OpaqueRef:a89e58f5-c3cf-123f-ca97-6faabc599fec',
                          '0',
                           {})
{
   'Status': 'Success', 
    'Value': 'OpaqueRef:40ca7c3a-f26c-707a-651b-fd2ec8024141'
}

destroy

  • VM 이 stopped 상태일 때 적용가능
>>> print xen.VGPU.destroy(session,'OpaqueRef:7e9c9f86-eff9-f0ca-7c73-ddc93f07e95c')
{
   'Status': 'Success', 
   'Value': ''
}