yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #25556
[Bug 1402658] [NEW] resource tracking is incorrect for ironic
Public bug reported:
Ironic nodes can only be assigned to a single instances. So resource
allocation is "all or nothing" - i.e. if an instance is spawned on a
node all the resources become unavailable no mater how much was stated
in the flavor used. The view of the resource tracker does not match this
behavior, leading to attempts to spawn instances that can not be
accommodated.
More specifically, when an instance is sent to a host manager to spawn,
the resource tracker for a target node will test to see if the node has
sufficient resources to accept the instance. This test checks to see if
the amount of resource available on the host (ram, disk, cpu, etc.) is
more than the amount requested. If the instance passes this test, the
resource tracker will deduct the amount of resource requested from the
amount that is available. This may leave a lesser amount still
available.
If there is a subsequent instance sent for that node, the resource
tracker will accept it if the amount of resource it requests is less
than the remaining amount available.
In ironic, spawning an instance will result in no resources left
available on that host. So the resource tracker has the wrong view of
how much resource is available at the node.
Note that the ironic driver is complemented by an ironic version of the
host manager at the scheduler that does do the right thing for ironic in
its consume method. However, its values are overridden by those
retrieved from the resource tracker, so it is overridden by the values
provided by the resource tracker.
Also, the get_available_resource() method on the ironic virt driver
returns the correct resource availability to the resource tracker, but
the resource tracker only uses the resource totals and recalculates the
availability, thus overriding the values from the driver as well.
Resource tracking can only work with ironic if the exact match filters
are used. In which case it works by coincidence. The resource tracker
resource consumption should be specialised to deal with ironic nodes
correctly.
** Affects: nova
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1402658
Title:
resource tracking is incorrect for ironic
Status in OpenStack Compute (Nova):
New
Bug description:
Ironic nodes can only be assigned to a single instances. So resource
allocation is "all or nothing" - i.e. if an instance is spawned on a
node all the resources become unavailable no mater how much was stated
in the flavor used. The view of the resource tracker does not match
this behavior, leading to attempts to spawn instances that can not be
accommodated.
More specifically, when an instance is sent to a host manager to
spawn, the resource tracker for a target node will test to see if the
node has sufficient resources to accept the instance. This test checks
to see if the amount of resource available on the host (ram, disk,
cpu, etc.) is more than the amount requested. If the instance passes
this test, the resource tracker will deduct the amount of resource
requested from the amount that is available. This may leave a lesser
amount still available.
If there is a subsequent instance sent for that node, the resource
tracker will accept it if the amount of resource it requests is less
than the remaining amount available.
In ironic, spawning an instance will result in no resources left
available on that host. So the resource tracker has the wrong view of
how much resource is available at the node.
Note that the ironic driver is complemented by an ironic version of
the host manager at the scheduler that does do the right thing for
ironic in its consume method. However, its values are overridden by
those retrieved from the resource tracker, so it is overridden by the
values provided by the resource tracker.
Also, the get_available_resource() method on the ironic virt driver
returns the correct resource availability to the resource tracker, but
the resource tracker only uses the resource totals and recalculates
the availability, thus overriding the values from the driver as well.
Resource tracking can only work with ironic if the exact match filters
are used. In which case it works by coincidence. The resource tracker
resource consumption should be specialised to deal with ironic nodes
correctly.
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1402658/+subscriptions
Follow ups
References