본문 바로가기

Compute

GPU 테스트(DirectPath I/O, Dynamic DirectPath I/O)

Prerequisites

ESXi에서 PCIe Device를 우선 Passthrough Device로 Enable

 

 

DirectPath I/O

  1. VM에 Passthrough Device 할당

 

  1. VM을 Template으로 Clone

 

  1. Template을 이용하여, VM 배포

※ Template을 만들 때 할당했던 Device가 그대로 할당되어 있음

 

배포한 VM의 vmx 파일

더보기
[root@esxi01:/vmfs/volumes/62c37937-1a51c290-8dce-6805ca2ed572/VMfromTemplate] cat VMfromTemplate.vmx
.encoding = "UTF-8"
config.version = "8"
virtualHW.version = "19"
vmci0.present = "TRUE"
floppy0.present = "FALSE"
svga.vramSize = "8388608"
numvcpus = "2"
memSize = "4096"
firmware = "efi"
tools.upgrade.policy = "manual"
sched.cpu.units = "mhz"
sched.cpu.affinity = "all"
vm.createDate = "1659923332627984"
usb_xhci.present = "TRUE"
scsi0.virtualDev = "lsisas1068"
scsi0.present = "TRUE"
sata0.present = "TRUE"
sata0:0.deviceType = "cdrom-image"
sata0:0.fileName = "/vmfs/volumes/62c37937-1a51c290-8dce-6805ca2ed572/ISO/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO"
sata0:0.present = "TRUE"
scsi0:0.deviceType = "scsi-hardDisk"
scsi0:0.fileName = "VMfromTemplate.vmdk"
sched.scsi0:0.shares = "normal"
sched.scsi0:0.throughputCap = "off"
scsi0:0.present = "TRUE"
pciPassthru0.id = "00000:038:00.0"
pciPassthru0.deviceId = "0x139b"
pciPassthru0.vendorId = "0x10de"
pciPassthru0.systemId = "62be48e0-0a6f-b664-93dc-6805ca2ed572"
pciPassthru0.pciSlotNumber = "256"
pciPassthru0.present = "TRUE"
displayName = "VMfromTemplate"
guestOS = "windows2019srv-64"
uefi.secureBoot.enabled = "TRUE"
toolScripts.afterPowerOn = "TRUE"
toolScripts.afterResume = "TRUE"
toolScripts.beforeSuspend = "TRUE"
toolScripts.beforePowerOff = "TRUE"
tools.syncTime = "FALSE"
uuid.bios = "42 19 27 a9 7c da 32 71-ad e8 96 86 1b f6 24 5f"
vc.uuid = "50 19 e8 13 cc 72 16 75-9b 4e aa 0c 9f 96 cf 92"
tools.guest.desktop.autolock = "FALSE"
nvram = "VMfromTemplate.nvram"
svga.present = "TRUE"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
hpet0.present = "TRUE"
sched.cpu.latencySensitivity = "normal"
cpuid.coresPerSocket = "2"
disk.EnableUUID = "TRUE"
numa.autosize.cookie = "20022"
numa.autosize.vcpu.maxPerVirtualNode = "2"
vm.genidX = "-1924103288559589988"
pciBridge0.pciSlotNumber = "17"
pciBridge4.pciSlotNumber = "21"
pciBridge5.pciSlotNumber = "22"
pciBridge6.pciSlotNumber = "23"
pciBridge7.pciSlotNumber = "24"
scsi0.pciSlotNumber = "160"
usb_xhci.pciSlotNumber = "224"
sata0.pciSlotNumber = "32"
scsi0.sasWWID = "50 05 05 69 7c da 32 70"
vmotion.checkpointFBSize = "4194304"
vmotion.checkpointSVGAPrimarySize = "8388608"
vmotion.svga.mobMaxSize = "8388608"
vmotion.svga.graphicsMemoryKB = "8192"
monitor.phys_bits_used = "45"
softPowerOff = "FALSE"
toolsInstallManager.lastInstallError = "0"
svga.guestBackedPrimaryAware = "TRUE"
tools.remindInstall = "FALSE"
toolsInstallManager.updateCounter = "1"
guestInfo.detailed.data = "architecture='X86' bitness='64' buildNumber='9600' distroName='Windows' distroVersion='6.3' familyName='Windows' kernelVersion='9600' prettyName='Windows Server R2 2012, 64-bit (Build 9600)'"
migrate.hostLog = "VMfromTemplate-6147937e.hlog"
sched.cpu.min = "0"
sched.cpu.shares = "normal"
sched.mem.min = "4096"
sched.mem.minSize = "4096"
sched.mem.shares = "normal"
sched.mem.pin = "TRUE"
migrate.encryptionMode = "opportunistic"
ftcpt.ftEncryptionMode = "ftEncryptionOpportunistic"
viv.moid = "8d8ddef6-fbe3-49d1-ae64-eb182620b7ad:vm-4002:3yFJj2obW8S4xMWLiRvAJ0+QgS436DyOBNDTxTCDT9M="
sched.swap.derivedName = "/vmfs/volumes/62c37937-1a51c290-8dce-6805ca2ed572/VMfromTemplate/VMfromTemplate-ec492be4.vswp"
uuid.location = "56 4d 4a 84 bd 09 0e d1-16 b7 8d a7 54 db c1 6e"
vm.genid = "-2928219441041373825"
scsi0:0.redo = ""
vmci0.id = "469115999"
cleanShutdown = "FALSE"
extendedConfigFile = "VMfromTemplate.vmxf"
ethernet0.virtualDev = "vmxnet3"
ethernet0.networkName = "Home Network"
ethernet0.addressType = "vpx"
ethernet0.generatedAddress = "00:50:56:99:7e:96"
ethernet0.uptCompatibility = "TRUE"
ethernet0.present = "TRUE"
ethernet0.pciSlotNumber = "192"
usb_xhci:4.present = "TRUE"
usb_xhci:4.deviceType = "hid"
usb_xhci:4.port = "4"
usb_xhci:4.parent = "-1"
ethernet0.exposeLargeBAR = "TRUE"

 

 

Dynamic DirectPath I/O

  1. VM에 Passthrough Device 할당 시 Dynamic DirectPath I/O 옵션을 선택하여 할당

 

배포한 VM의 vmx 파일

더보기
[root@esxi01:/vmfs/volumes/62c37937-1a51c290-8dce-6805ca2ed572/VMfromTemplate] cat VMfromTemplate.vmx
.encoding = "UTF-8"
config.version = "8"
virtualHW.version = "19"
vmci0.present = "TRUE"
floppy0.present = "FALSE"
svga.vramSize = "8388608"
numvcpus = "2"
memSize = "4096"
firmware = "efi"
tools.upgrade.policy = "manual"
sched.cpu.units = "mhz"
sched.cpu.affinity = "all"
vm.createDate = "1659923332627984"
usb_xhci.present = "TRUE"
scsi0.virtualDev = "lsisas1068"
scsi0.present = "TRUE"
sata0.present = "TRUE"
sata0:0.deviceType = "cdrom-image"
sata0:0.fileName = "/vmfs/volumes/62c37937-1a51c290-8dce-6805ca2ed572/ISO/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO"
sata0:0.present = "TRUE"
scsi0:0.deviceType = "scsi-hardDisk"
scsi0:0.fileName = "VMfromTemplate.vmdk"
sched.scsi0:0.shares = "normal"
sched.scsi0:0.throughputCap = "off"
scsi0:0.present = "TRUE"
displayName = "VMfromTemplate"
guestOS = "windows2019srv-64"
uefi.secureBoot.enabled = "TRUE"
toolScripts.afterPowerOn = "TRUE"
toolScripts.afterResume = "TRUE"
toolScripts.beforeSuspend = "TRUE"
toolScripts.beforePowerOff = "TRUE"
tools.syncTime = "FALSE"
uuid.bios = "42 19 27 a9 7c da 32 71-ad e8 96 86 1b f6 24 5f"
vc.uuid = "50 19 e8 13 cc 72 16 75-9b 4e aa 0c 9f 96 cf 92"
tools.guest.desktop.autolock = "FALSE"
nvram = "VMfromTemplate.nvram"
svga.present = "TRUE"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
hpet0.present = "TRUE"
sched.cpu.latencySensitivity = "normal"
cpuid.coresPerSocket = "2"
disk.EnableUUID = "TRUE"
numa.autosize.cookie = "20022"
numa.autosize.vcpu.maxPerVirtualNode = "2"
vm.genidX = "-1924103288559589988"
pciBridge0.pciSlotNumber = "17"
pciBridge4.pciSlotNumber = "21"
pciBridge5.pciSlotNumber = "22"
pciBridge6.pciSlotNumber = "23"
pciBridge7.pciSlotNumber = "24"
scsi0.pciSlotNumber = "160"
usb_xhci.pciSlotNumber = "224"
sata0.pciSlotNumber = "32"
scsi0.sasWWID = "50 05 05 69 7c da 32 70"
vmotion.checkpointFBSize = "4194304"
vmotion.checkpointSVGAPrimarySize = "8388608"
vmotion.svga.mobMaxSize = "8388608"
vmotion.svga.graphicsMemoryKB = "8192"
monitor.phys_bits_used = "45"
softPowerOff = "FALSE"
toolsInstallManager.lastInstallError = "0"
svga.guestBackedPrimaryAware = "TRUE"
tools.remindInstall = "FALSE"
toolsInstallManager.updateCounter = "1"
guestInfo.detailed.data = "architecture='X86' bitness='64' buildNumber='9600' distroName='Windows' distroVersion='6.3' familyName='Windows' kernelVersion='9600' prettyName='Windows Server R2 2012, 64-bit (Build 9600)'"
migrate.hostLog = "VMfromTemplate-6147937e.hlog"
sched.cpu.min = "0"
sched.cpu.shares = "normal"
sched.mem.min = "4096"
sched.mem.minSize = "4096"
sched.mem.shares = "normal"
sched.mem.pin = "TRUE"
migrate.encryptionMode = "opportunistic"
ftcpt.ftEncryptionMode = "ftEncryptionOpportunistic"
viv.moid = "8d8ddef6-fbe3-49d1-ae64-eb182620b7ad:vm-4002:3yFJj2obW8S4xMWLiRvAJ0+QgS436DyOBNDTxTCDT9M="
sched.swap.derivedName = "/vmfs/volumes/62c37937-1a51c290-8dce-6805ca2ed572/VMfromTemplate/VMfromTemplate-ec492be4.vswp"
uuid.location = "56 4d 4a 84 bd 09 0e d1-16 b7 8d a7 54 db c1 6e"
vm.genid = "-2928219441041373825"
scsi0:0.redo = ""
vmci0.id = "469115999"
cleanShutdown = "FALSE"
extendedConfigFile = "VMfromTemplate.vmxf"
ethernet0.virtualDev = "vmxnet3"
ethernet0.networkName = "Home Network"
ethernet0.addressType = "vpx"
ethernet0.generatedAddress = "00:50:56:99:7e:96"
ethernet0.uptCompatibility = "TRUE"
ethernet0.present = "TRUE"
ethernet0.pciSlotNumber = "192"
ethernet0.exposeLargeBAR = "TRUE"
pciPassthru0.allowedDevices = "0x10de:0x139b"
pciPassthru0.present = "TRUE"
pciPassthru0.pciSlotNumber = "256"
usb_xhci:4.present = "TRUE"
usb_xhci:4.deviceType = "hid"
usb_xhci:4.port = "4"
usb_xhci:4.parent = "-1"