Good morning to everyone!
Even if this looks like my very first message, I've been using (and I'm still using) ProxMox since version 1.5 and it is still my preferred virtualization platform.
I'm trying to set up a sort of very private cloud dedicated to HPC; I know that HPC and virtualization are still very very experimental but I find working with virtual machines much easier than setting up a cluster management system as WareWulf or Perceus also because I need to run several distros on this cluster.
The cluster is composed by three computational nodes: the last acquired node is a 4x AMD Opteron 6272 (64 cores), 256GB RAM, Mellanox ConnectX-3 InfiniBand card, and some disks; the previous two nodes are 4x AMD Opteron 6172 (48 cores per node), 256GB RAM, Mellanox ConnectX-2 InfiniBand card.
As of now, I'm only doing tests on the 64 cores node because the other nodes are in production.
I successfully setup ProxMox 3.2 on the node and I succeeded with "normal" PCI passthrough and I tested InifiniBand connection from the VM (CentOS 6.5 with latest Mellanox OFED drivers).
Unfortunately, using standard PCI passthrough, only one VM can access the InfiniBand card; however, Mellanox ConnectX-3 cards support SR-IOV and I succeeded in activating it so that I can see 16 Virtual cards:
Now I'm really stuck on starting the virtual machine; setting the option
in /etc/pve/nodes/proxmox/qemu-server/100.conf
does not work and raises this error:
I suppose that pci-assign only works with physical devices because it works like a charm if I specify 04:00.0 (the whole card) as PCI address.
I'm looking at vfio-pci, but I'm not able to find much documentation and almost everything is libvirt related.
Does anybody know how to proceed?
Thanks in advance for any help.
Ciao,
Roberto
Even if this looks like my very first message, I've been using (and I'm still using) ProxMox since version 1.5 and it is still my preferred virtualization platform.
I'm trying to set up a sort of very private cloud dedicated to HPC; I know that HPC and virtualization are still very very experimental but I find working with virtual machines much easier than setting up a cluster management system as WareWulf or Perceus also because I need to run several distros on this cluster.
The cluster is composed by three computational nodes: the last acquired node is a 4x AMD Opteron 6272 (64 cores), 256GB RAM, Mellanox ConnectX-3 InfiniBand card, and some disks; the previous two nodes are 4x AMD Opteron 6172 (48 cores per node), 256GB RAM, Mellanox ConnectX-2 InfiniBand card.
As of now, I'm only doing tests on the 64 cores node because the other nodes are in production.
I successfully setup ProxMox 3.2 on the node and I succeeded with "normal" PCI passthrough and I tested InifiniBand connection from the VM (CentOS 6.5 with latest Mellanox OFED drivers).
Unfortunately, using standard PCI passthrough, only one VM can access the InfiniBand card; however, Mellanox ConnectX-3 cards support SR-IOV and I succeeded in activating it so that I can see 16 Virtual cards:
Code:
04:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]
04:00.1 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:00.2 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:00.3 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:00.4 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:00.5 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:00.6 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:00.7 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:01.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:01.1 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:01.2 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:01.3 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:01.4 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:01.5 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:01.6 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:01.7 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
04:02.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3 Virtual Function]
Now I'm really stuck on starting the virtual machine; setting the option
Code:
hostpci0: 04:00.1
in /etc/pve/nodes/proxmox/qemu-server/100.conf
does not work and raises this error:
Code:
kvm: -device pci-assign,host=04:00.1,id=hostpci0,bus=pci.0,addr=0x10: Failed to assign device "hostpci0" : Invalid argument
kvm: -device pci-assign,host=04:00.1,id=hostpci0,bus=pci.0,addr=0x10: Device initialization failed.
kvm: -device pci-assign,host=04:00.1,id=hostpci0,bus=pci.0,addr=0x10: Device 'kvm-pci-assign' could not be initialized
TASK ERROR: start failed: command '/usr/bin/kvm -id 100 -chardev 'socket,id=qmp,path=/var/run/qemu-server/100.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -vnc unix:/var/run/qemu-server/100.vnc,x509,password -pidfile /var/run/qemu-server/100.pid -daemonize -name TestHPC001 -smp 'sockets=2,cores=16' -nodefaults -boot 'menu=on' -vga cirrus -cpu kvm64,+lahf_lm,+x2apic,+sep -k it -m 51200 -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'pci-assign,host=04:00.1,id=hostpci0,bus=pci.0,addr=0x10' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -drive 'file=/mnt/pve/ISO_su_Microserver/template/iso/CentOS-6.5-x86_64-bin-DVD1.iso,if=none,id=drive-ide2,media=cdrom,aio=native' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' -drive 'file=/mnt/pve/NFS_su_Microserver/images/100/vm-100-disk-1.qcow2,if=none,id=drive-virtio0,format=qcow2,aio=native,cache=none' -device 'virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,bootindex=100' -netdev 'type=tap,id=net0,ifname=tap100i0,script=/var/lib/qemu-server/pve-bridge,vhost=on' -device 'virtio-net-pci,mac=C6:04:03:41:7F:A1,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300'' failed: got timeout
I suppose that pci-assign only works with physical devices because it works like a charm if I specify 04:00.0 (the whole card) as PCI address.
I'm looking at vfio-pci, but I'm not able to find much documentation and almost everything is libvirt related.
Does anybody know how to proceed?
Thanks in advance for any help.
Ciao,
Roberto