feat(dra): separate scheduling for USB 2.0 (High-Speed) and USB 3.0 (SuperSpeed) over USBIP#2045
Open
yaroslavborbat wants to merge 1 commit intomainfrom
Open
feat(dra): separate scheduling for USB 2.0 (High-Speed) and USB 3.0 (SuperSpeed) over USBIP#2045yaroslavborbat wants to merge 1 commit intomainfrom
yaroslavborbat wants to merge 1 commit intomainfrom
Conversation
f93cb5b to
4c89068
Compare
00b4388 to
769ea8e
Compare
Member
Author
Signed-off-by: Yaroslav Borbat <yaroslav.borbat@flant.com>
769ea8e to
bfdeea0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
USB devices (including flash drives) can be passed into workloads via USBIP: a device is physically attached to one node while being used in a pod on another. The Linux USBIP vhci driver exposes two hub types: High-Speed (HS) for USB 2.0 and SuperSpeed (SS) for USB 3.0, with ports split evenly between them. Previously, scheduling required free ports on both hubs for a node to be considered available, so a node was only suitable when it had capacity on HS and SS at the same time.
This change separates scheduling by speed: some devices need only USB 2.0 (HS), others only USB 3.0 (SS). Nodes are now labeled and selected per hub type, so workloads can be scheduled based on the actual speed requirement of the device.
Node labels
virtualization.deckhouse.io/usb-gateway-high-speed— node has free ports on the HS (USB 2.0) hub.virtualization.deckhouse.io/usb-gateway-super-speed— node has free ports on the SS (USB 3.0) hub.Node annotations
usb.virtualization.deckhouse.io/usbip-high-speed-hub-used-ports— number of used HS hub ports.usb.virtualization.deckhouse.io/usbip-super-speed-hub-used-ports— number of used SS hub ports.Scheduling
NodeSelectoris built from device speed — SuperSpeed (and above) devices target nodes withusb-gateway-super-speed, High-Speed and below target nodes withusb-gateway-high-speed.anyNode = hsAvailable || ssAvailable), and the appropriate HS/SS label is set.USBIP
Why do we need it, and what problem does it solve?
Checklist
Changelog entries