I am experimenting with the Placement API in a devstack VM (commit a928853692, June 25 2019), consisting of 16 vCPUs.
Using the Placement API, I have successfully changed the default allocation_ratio of the VCPU class from the default value (16.0) to 1.0.
$ openstack resource provider inventory set --resource VCPU:allocation_ratio=1.0 --resource VCPU:total=16 e79d839a-71e9-4b13-bc21-6633bd44d8b4
+----------------+------------------+------------+----------+-----------+----------+-------+
| resource_class | allocation_ratio | max_unit | reserved | step_size | min_unit | total |
+----------------+------------------+------------+----------+-----------+----------+-------+
| VCPU | 1.0 | 2147483647 | 0 | 1 | 1 | 16 |
+----------------+------------------+------------+----------+-----------+----------+-------+
After that, I will attempt to "overcommit" the 16 VCPUs. For this purpose I create a new flavor with 7 VCPUs, and try to launch 3 instances of it. As expected, the 3rd launch will fail.
$ openstack flavor create many.vcpus --id auto --ram 256 --disk 1 --vcpus 7
$ openstack server create --image cirros-0.4.0-x86_64-disk --flavor many.vcpus foo1
# OK, now using 7 VCPUS
$ openstack server create --image cirros-0.4.0-x86_64-disk --flavor many.vcpus foo2
# OK, now using 14 VCPUS
$ openstack server create --image cirros-0.4.0-x86_64-disk --flavor many.vcpus foo3
# FAILS
Quota exceeded for cores: Requested 7, but already used 14 of 20 cores (HTTP 403) (Request-ID: req-de145340-8f53-46db-a838-5fd9019baaf5)
(As a side note, openstack incorrectly reports a total of 20 cores available)
Now, if I change the allocation_ratio to 2.0, just to be able to accommodate the 3rd instance, my new request fails with the same response as before.
$ openstack resource provider inventory set --resource VCPU:allocation_ratio=2.0 --resource VCPU:total=16 e79d839a-71e9-4b13-bc21-6633bd44d8b4
+----------------+------------------+------------+----------+-----------+----------+-------+
| resource_class | allocation_ratio | max_unit | reserved | step_size | min_unit | total |
+----------------+------------------+------------+----------+-----------+----------+-------+
| VCPU | 2.0 | 2147483647 | 0 | 1 | 1 | 16 |
+----------------+------------------+------------+----------+-----------+----------+-------+
$ openstack server create --image cirros-0.4.0-x86_64-disk --flavor many.vcpus foo3
Quota exceeded for cores: Requested 7, but already used 14 of 20 cores (HTTP 403) (Request-ID: req-9efeabd9-f881-4fd0-8dad-85ae08fc306a)
Is this behavior expected?