-
Notifications
You must be signed in to change notification settings - Fork 62
[network metrics] instance network interface schema #6414
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. It depends on https://code.illumos.org/c/illumos-gate/+/3630. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of viona device instance. - The number of the device instance matches the kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to vm objects (and vm objects shared), the latter to which we can use it as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, updating the `interface_id` appropriately, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. It depends on https://code.illumos.org/c/illumos-gate/+/3630. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of viona device instance. - The number of the device instance matches the kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to vm objects (and vm objects shared), the latter to which we can use it as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, updating the `interface_id` appropriately, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
bnaecker
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, thanks for renaming this. I think there's still a pretty big open question on the sled identifiers, see my comment. It applies to this and a few other schema too, so we should settle on something before the next release. Not necessarily this PR, if we want to put something on the board and drop it later.
efe2ba7 to
90dd028
Compare
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
|
@bnaecker Updated to remove those sled fields. |
bnaecker
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! Thanks for your patience while we sort out the sled-identifier issue!
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [ ] oxidecomputer/omicron#6414 - [ ] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [X] oxidecomputer/omicron#6414 - [X] https://code.illumos.org/c/illumos-gate/+/3630
5d31963 to
66afcaf
Compare
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [X] oxidecomputer/omicron#6414 - [X] https://code.illumos.org/c/illumos-gate/+/3630
66afcaf to
07bb3d1
Compare
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [X] oxidecomputer/omicron#6414 - [X] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [X] oxidecomputer/omicron#6414 - [X] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [X] oxidecomputer/omicron#6414 - [X] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [X] oxidecomputer/omicron#6414 - [X] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [X] oxidecomputer/omicron#6414 - [X] https://code.illumos.org/c/illumos-gate/+/3630
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `InterfaceIdentifiers`, which is passed through from Machine initialization to VM objects (and VM objects shared), the latter of which we can use as part of registering the oximeter producer. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which is tracked in `interface_ids`. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests Dependencies ------------ - [X] oxidecomputer/omicron#6414 - [X] https://code.illumos.org/c/illumos-gate/+/3630
Prep to update lock to account for changes in omicron: - [ ] oxidecomputer/omicron#6414 - [ ] and used in oxidecomputer/propolis#747
This is related to the ongoing work in [plumbing instance/guest metrics](oxidecomputer/propolis#742) through to an oximeter producer in propolis. Includes: - Rewriting the comment for `trait Target` in Oximeter to not being prepped for deprecation, as it does come in handy for custom needs - The main differentiating field among instance network information here is `interface_id`, which is exposed to propolis via the client's `NetworkInterfaceRequest`. We currently match the `nic.slot` to the `port.slot` to pass which of the requested nics `interface_id` uuids are part of the request.
500212c to
9bac9ba
Compare
|
@bnaecker @leftwo deps are properly aligned now (with oxidecomputer/crucible#1438 and oxidecomputer/propolis#747). |
leftwo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like you got the dance steps figured out here on how to get these changes
rolled across the three repos.
Prep to update lock to account for changes in omicron: - [x] oxidecomputer/omicron#6414 - [x] and used in oxidecomputer/propolis#747
Overview ======== This is related to the ongoing work in [plumbing instance/guest metrics](#742) through to an oximeter producer in propolis. Includes: * An update to `NetworkInterfaceRequest` to include an interface_id, which is part of the request on the [sled instance in Omicron](oxidecomputer/omicron#6414). * Within initialization, with concrete types, we create interface_ids mapping nic UUIDs => `minor` number of the device instance of viona. This is done as a Vec because it is limited in size (typically the MAX networks interfaces per VM). - The device instance number matches the Kstat we'll look for. - We track this mapping via a type alias `NetworkInterfaceIds` which is then passed to a `track_network_interfaces_kstats` function which is part of `initialize_network_devices` and adds the target to the kstat sampler. * A new stats module for collecting network_interface metrics. - In `to_samples` we generate multiple network interface targets based on vnics per instance, appropriately updating the `interface_id`, which comes from the network interface identifiers updated in network device initialization. * Move kstat_types out of virtual machine-specific stats and use its mocking for other stats tests * move stats.rs to stats/mod.rs Dependencies ------------ - [X] oxidecomputer/omicron#6414 - [X] https://code.illumos.org/c/illumos-gate/+/3630 Thanks to @pfmooney for exposing kstats directly through the viona (VirtIO-Net) driver as part of https://code.illumos.org/c/illumos-gate/+/3630. This work would be nothing without his!
|
Heads up — this merged PR updated the commits for Crucible and Propolis to commits that are on branches. We've had issues with that before, particularly since merged branches are squashed and then deleted in other repos. |
|
@iliana Yep. I have a new PR now setting up everything off commits from |
|
Ah I see. Thanks! |
This is related to the ongoing work in plumbing instance/guest metrics through to an oximeter producer in propolis.
Includes:
trait Targetin Oximeter to not being prepped for deprecation, as it does come in handy for custom needsinterface_id, which is exposed to propolis via the client'sNetworkInterfaceRequest. We currently match thenic.slotto theport.slotto pass which of the requested nicsinterface_iduuids are part of the request.Dependencies