From 03d02fe8b7fd9b11efb2b71750ea5049b1d056fe Mon Sep 17 00:00:00 2001 From: anjastrunk <119566837+anjastrunk@users.noreply.github.com> Date: Fri, 3 Nov 2023 16:35:15 +0100 Subject: [PATCH] Forbid using CPU generation without CPU vendor (#364) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Forbid using CPU generation without CPU vendor * Remove additional empty line * Fix extension format description using the test script as guide * Minor addendum * Provide more details regarding the CPU architecture extension Signed-off-by: Anja Strunk Signed-off-by: Matthias Büchse Co-authored-by: Matthias Büchse Co-authored-by: Kurt Garloff --- Standards/scs-0100-v3-flavor-naming.md | 54 +++++++++++++++++++------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/Standards/scs-0100-v3-flavor-naming.md b/Standards/scs-0100-v3-flavor-naming.md index 4d4447ac7..6bf3d0a75 100644 --- a/Standards/scs-0100-v3-flavor-naming.md +++ b/Standards/scs-0100-v3-flavor-naming.md @@ -301,7 +301,7 @@ Note that machines (hypervisors) can be part of more than one host aggregate. The extensions have the format: -\[`_`hyp\]\[`_hwv`\]\[`_`\[arch\[N\]\[`h`\]\[`_`\[`G/g`\]X\[N\]\[`-`M\[`h`\]\]\]\[`_ib`\] +\[`_`hyp\]\[`_hwv`\]\[`_`arch\[N\]\[`h`\]\]\[`_`\[`G/g`\]X\[N\]\[`-`M\]\[`h`\]\]\[`_ib`\] Remember that letters are case-sensitive. In case you wonder: Feature indicators are capitalized, modifiers are lower case. @@ -309,7 +309,9 @@ In case you wonder: Feature indicators are capitalized, modifiers are lower case ### [OPTIONAL] Hypervisor -The _default Hypervisor_ is assumed to be `KVM`. Clouds, that offer different hypervisors +Format: `_`hyp + +The _default Hypervisor_ is assumed to be `KVM`. Clouds that offer different hypervisors or Bare Metal Systems should indicate the Hypervisor according to the following table: | hyp | Meaning | @@ -328,6 +330,8 @@ or Bare Metal Systems should indicate the Hypervisor according to the following ### [OPTIONAL] Hardware virtualization / Nested virtualization +Format: `_hwv` + If the instances that are created with this flavor support hardware-accelerated virtualization, this can be reflected with the `_hwv` flag (after the optional Hypervisor flag). On x86, this means that in the instance, the CPU flag vmx (intel) @@ -348,18 +352,28 @@ capabilities. Flavors may over-deliver ...) ### [OPTIONAL] CPU Architecture Details -Arch details provide more details on the specific CPU: +Format: `_`arch\[N\]\[`h`\] -- Vendor -- Generation -- Frequency +This extension provides more details on the specific CPU: + +- vendor/architecture (arch) +- generation (N) +- frequency (h) #### Generation and Vendor -The generations are vendor specific and can be left out. -Not specifying arch means that we have a generic CPU (**x86-64**). -The letters `i`, `z`, `a` and `r` specify the vendors Intel, -AMD (`z` like in Zen), ARM v8+, RISC-V. +The options for arch are as follows: + +| Letter | vendor/architecture | Corresponding image architecture | +| ------- | -------------------- | --------------------------------- | +| (none) | Generic x86-64 | `x86_64` | +| `i` | Intel x86-64 | `x86_64` | +| `z` | AMD/Zen x86-64 | `x86_64` | +| `a` | ARM v8+ | `aarch64` | +| `r` | RISC-V | (not yet listed in Glance) | + +The generation is vendor specific and can be left out, but it can only be specified in +conjunction with a vendor. At present, these values are possible: | Generation | i (Intel x86-64) | z (AMD x86-64) |  a (AArch64) | r (RISC-V) | | ---------- | ---------------- | -------------- | ------------------ | ---------- | @@ -397,8 +411,15 @@ out when generating the name for comparison. In other words: 0 has a meaning of ### [OPTIONAL] GPU support -`_G`X\[N\]\[`-`M\[`h`\]\] indicates a Pass-Through GPU from vendor X of gen N with M compute units / SMs / EUs exposed. -`_g`X\[N\]\[`-`M\[`h`\]\] indicates a vGPU from vendor X of gen N with M compute units / SMs / EUs assigned. +Format: `_`\[`G/g`\]X\[N\]\[`-`M\]\[`h`\] + +This extension provides more details on the specific GPU: + +- pass-through (`G`) vs. virtual GPU (`g`) +- vendor (X) +- generation (N) +- no. of compute units / SMs / EUs (M) that are exposed (for pass-through) or assigned +- high-performance indicator (`h`) Note that the vendor letter X is mandatory, generation and compute units are optional. @@ -409,7 +430,8 @@ Note that the vendor letter X is mandatory, generation and compute units are opt | I | Intel | For nVidia, the generation N can be f=Fermi, k=Kepler, m=Maxwell, p=Pascal, v=Volta, t=turing, a=Ampere, l=Ada Lovelace, ..., -for AMD GCN-x=0.x, RDNA1=1, RDNA2=2, RDNA3=3, for intel Gen9=0.9, Xe(12.1)=1, ... +for AMD GCN-x=0.x, RDNA1=1, RDNA2=2, RDNA3=3, +for Intel Gen9=0.9, Xe(12.1)=1, ... (Note: This may need further work to properly reflect what's out there.) The optional `h` suffix to the compute unit count indicates high-performance (e.g. high freq or special @@ -418,11 +440,13 @@ high bandwidth gfx memory such as HBM); ### [OPTIONAL] Infiniband -`_ib` indicates Infiniband networking. +Format: `_ib` + +This extension indicates Infiniband networking. More extensions may be forthcoming and appended in a later revision of this spec. -Extensions need to be specified in the above mentioned order. +Extensions need to be specified in the above-mentioned order. ### Naming options advice