+1, if doing so, a related bug related bug may be solved as well: https://bugs.launchpad.net/nova/+bug/1323538
On Jun 3, 2014, at 21:29, Jay Pipes <jaypi...@gmail.com> wrote: > Hi Stackers, > > tl;dr > ===== > > Move CPU and RAM allocation ratio definition out of the Nova scheduler and > into the resource tracker. Remove the calculations for overcommit out of the > core_filter and ram_filter scheduler pieces. > > Details > ======= > > Currently, in the Nova code base, the thing that controls whether or not the > scheduler places an instance on a compute host that is already "full" (in > terms of memory or vCPU usage) is a pair of configuration options* called > cpu_allocation_ratio and ram_allocation_ratio. > > These configuration options are defined in, respectively, > nova/scheduler/filters/core_filter.py and > nova/scheduler/filters/ram_filter.py. > > Every time an instance is launched, the scheduler loops through a collection > of host state structures that contain resource consumption figures for each > compute node. For each compute host, the core_filter and ram_filter's > host_passes() method is called. In the host_passes() method, the host's > reported total amount of CPU or RAM is multiplied by this configuration > option, and the product is then subtracted from the reported used amount of > CPU or RAM. If the result is greater than or equal to the number of vCPUs > needed by the instance being launched, True is returned and the host > continues to be considered during scheduling decisions. > > I propose we move the definition of the allocation ratios out of the > scheduler entirely, as well as the calculation of the total amount of > resources each compute node contains. The resource tracker is the most > appropriate place to define these configuration options, as the resource > tracker is what is responsible for keeping track of total and used resource > amounts for all compute nodes. > > Benefits: > > * Allocation ratios determine the amount of resources that a compute node > advertises. The resource tracker is what determines the amount of resources > that each compute node has, and how much of a particular type of resource > have been used on a compute node. It therefore makes sense to put > calculations and definition of allocation ratios where they naturally belong. > * The scheduler currently needlessly re-calculates total resource amounts on > every call to the scheduler. This isn't necessary. The total resource amounts > don't change unless either a configuration option is changed on a compute > node (or host aggregate), and this calculation can be done more efficiently > once in the resource tracker. > * Move more logic out of the scheduler > * With the move to an extensible resource tracker, we can more easily evolve > to defining all resource-related options in the same place (instead of in > different filter files in the scheduler...) > > Thoughts? > > Best, > -jay > > * Host aggregates may also have a separate allocation ratio that overrides > any configuration setting that a particular host may have > > _______________________________________________ > OpenStack-dev mailing list > OpenStack-dev@lists.openstack.org > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
_______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev