[Kimchi-devel] Host Device Passthrough UI Task Discussion

Zhou Zheng Sheng zhshzhou at linux.vnet.ibm.com
Mon Jul 21 09:28:16 UTC 2014


on 2014/07/21 16:25, Yu Xin Huo worte:
> 1. generally, how many devices will be available?
> 2. the already attached devices will always be a subset of available
> host devices, right?
> 3. please add support to add multiple devices in one request?
> 
> The API design does not match current API style related to vm, please
> change it for consistency.
> 'devices' is just an attribute along with other vm attributes, should
> not take a separate url.
> Refer to API.md for current vm API design and follow it.
> change attribute name 'hostdevs' to 'devices', at vm level, it is just
> devices of the vm.

I'm following existing vm/AAA/storages/BBB and vm/AAA/ifaces/DDD style.
I think it's different with other simple attributes since the
passthrough devices form a collection.

Regard for the naming, the reason I didn't use "devices", is because
it's a general term. A device can be a cd rom, a disk, an NIC, a video
card. As you can see, if I use "devices", it's overlapped with many
existing sub-resources and attributes of the VM. I have to do a big
refactor to re-arrange the existing devices, and this topic is debatable
because we already treat every kind of devices specially.

You can consider passthrough devices are a kind of very different
devices. A passthrough network card is very different to a emulated
network card. The passthrough devices also share some common attributes
and features, so we want to manage them together.

> 
> On 7/16/2014 2:33 PM, Zhou Zheng Sheng wrote:
>> Hi,
>>
>> As in Kimchi 1.3 TODO list
>> (https://github.com/kimchi-project/kimchi/wiki/Todo-1.3), there is a
>> task of passthrough support. It is to enable Kimchi to assign hos
>> devices directly to a VM, thus greately improve VM performance.
>> Currently we support assigning PCI device, USB device and SCSI LUN. For
>> example, we can assign an NIC to VM to improve guest network throughput,
>> or passthrough a USB camera to enable the guest OS to record video.
>>
>> The back-end patch also handles PCI device grouping (attach and detach
>> all devices in the same iommu group together) and provides some other
>> useful features. Since the due day is near, I think we can come up with
>> an easy and simple UI for 1.3, and mark this feature as experimental.
>> Then we improve it in future releases. So in this release we may only
>> expose PCI devices to user and don't mention the iommu grouping logic.
>>
>> For this version I think we may provide the following operations to the
>> user.
>>
>> In the VM edit window, initially, the user sees a list of PCI devices
>> already assigned to the VM. This maps to GET vms/VM_NAME/hostdevs.
>>
>> In edit mode, the user can detach device. This maps to DELETE
>> vms/VM_NAME/hostdevs/DEVICE_NAME.
>>
>> The user can also select device to attach to VM from a list. The listing
>> of eligible devices is mapped to GET
>> host/devices?_passthrough=true&_cap=pci.
>>
>> To attach a device, just POST a dict containing only the device name to
>> vms/VM_NAME/hostdevs.
>>
>> I think these operations forms a basic interaction to enable user to
>> consume this feature. It may be feasible to finish them before the due
>> day.
>>
> 
> 


-- 
Zhou Zheng Sheng / 周征晟
E-mail: zhshzhou at linux.vnet.ibm.com
Telephone: 86-10-82454397




More information about the Kimchi-devel mailing list