[Kimchi-devel] [PATCH v4] Auto Topology for Guest Templates

Aline Manera alinefm at linux.vnet.ibm.com
Mon Nov 17 18:58:51 UTC 2014


On 11/12/2014 09:00 PM, Christy Perez wrote:
> This is another rework of how this flow should work, after more thought and
> discussion with Aline.
>
> This new flow removes the 'auto-topology' element from the API and makes it so that
> users can enter varying information without being dinged for not doing exactly the
> right thing (e.g. vcpus != sockets * cores * threads).
>
> It also works in a way that doesn't require the UI to have access to the kimchi Model objects (as I misremembered for the previous patches).
>
> 1. UI calls GET host/cpuinfo
>
>      curl -k -u user  -H 'Content-Type: application/json' \
>           -H 'Accept: application/json'  https://localhost:8001/host/cpuinfo
>      
>      {
>        "cores":2,
>        "threading_enabled":true,
>        "sockets":1,
>        "threads_per_core":2
>      }
>
> 2. UI displays appropriate title and checkboxes
>      - If host arch is Power:
>          - Display a menu labled SMT, with up to four check-boxes.
>            The check-boxes will be labeled SMT1, SMT2, SMT4, and SMT8.
>            The max SMT value displayed will be dependant upon
>            threads_per_core from above. The default checkbox should be the
>            greatest SMT value (e.g. SMT8).

>          - Display the same box for CPUs as before. This value may change
>            when the backend template creation is done, so if there's any way
>            to pop up "Here are the values of your new template," kind of message,
>            that would be nice. Otherwise, we'll just make it clear in the doc
>            that the vCPUs value entered is not guaranteed.

I don't like this approach. As an user I like to inform the CPU number 
and be sure it will be in use.

Maybe we could change the way we display it to user.
I checked on virt-manager and it allows user informs the 3 values: 
sockets, threads and cores.

The values of threads are the SMTX values. So we can display them as a 
combo box according to /host/cpu_info response.
The other 2 values could be collected as an input box. And the CPU will 
be themultiplication of those values.

So on UI we could have a new tab on Edit Template named "Processor".

In the first view we will have:

CPU number: [______________]

[ ] Manually inform CPU topology

Once the "Manually inform CPU topology" is selected, the expand to show 
3 new fields and make the "CPU number" field disabled.

Sockets:  [______________]
Cores :    [______________]
Threads:  [______________]   => this is a combo box with the SMTX 
options (only the numbers)

On values changes in those 3 fields the "CPU number" is updated to 
display sockets * cores * threads

And with this approach we don't need to differ x86 from ppc.

>      - Else:
>          - Display a menu labeled Hyper-Threading, with only a checkbox labeled
>              HT.
>            Note: The same comments for vCPUS as above apply here. The number
>              maybe need to change based on the CPU capabilities.
>
> 3. UI calls POST template with threads value set to '0' (x86) or SMTX (Power)
>     Note that vcpus is still optional, so no change in how that's handled needs
>     to be done.
>
> $ curl -k -u user -X POST -H 'Content-Type: application/json' -H 'Accept: application/json'  https://localhost:8001/templates -d'{"name": "test_auto_topo", "cdrom": "/home/iso-pool/Fedora-Live-Desktop-x86_64-20-1.iso", "cpu_info": {"topology": {"threads":0}}}'
>
> {
>    "cpus":1,
>    "cpu_info":{
>      "topology":{
>        "cores":1,
>        "threads":1,
>        "sockets":1
>      }
>    },
>    "graphics":{
>      "type":"vnc",
>      "listen":"127.0.0.1"
>    },
>    "cdrom":"/home/iso-pool/Fedora-Live-Desktop-x86_64-20-1.iso",
>    "networks":[
>      "default"
>    ],
>    "icon":"images/icon-fedora.png",
>    "os_distro":"fedora",
>    "name":"test_auto_topo",
>    "disks":[
>      {
>        "index":0,
>        "size":10
>      }
>    ],
>    "invalid":{},
>    "os_version":"20",
>    "storagepool":"/storagepools/default",
>    "memory":1024,
>    "folder":[]
> }
>
> Regards,
>
> - Christy
>
> Christy Perez (1):
>    Parts to allow  Kimchi to configure the cpu topology.
>
>   docs/API.md                   |  28 +++++++
>   src/kimchi/API.json           |  11 +--
>   src/kimchi/control/cpuinfo.py |  37 +++++++++
>   src/kimchi/control/host.py    |   2 +
>   src/kimchi/i18n.py            |   3 +-
>   src/kimchi/model/cpuinfo.py   | 172 ++++++++++++++++++++++++++++++++++++++++++
>   src/kimchi/model/host.py      |   1 +
>   src/kimchi/model/templates.py |  25 ++++--
>   8 files changed, 263 insertions(+), 16 deletions(-)
>   create mode 100644 src/kimchi/control/cpuinfo.py
>   create mode 100644 src/kimchi/model/cpuinfo.py
>




More information about the Kimchi-devel mailing list