[Openstack] Understanding nova-scheduler

Jonathan Proulx jon at jonproulx.com
Thu Jul 19 23:23:52 UTC 2012


I've been reading the essex docs on scheduling.  It seems the default
is to overcommit CPU resources and to schedule on the system with
highest available ram.  I would like to *not* overcommit CPU and to
fill a compute node before scheduling on a new node if I can (thinking
about powering down idle nodes if I can and waking on demand but
that's probably a way off).  Essentially reversing that default.  It
seems to me this config fragment in nova.conf should do it:

--scheduler_available_filters=nova.scheduler.filters.standard_filters
--scheduler_default_filters=AvailabilityZoneFilter,RamFilter,CoreFilter,ComputeFilter
--least_cost_functions=nova.scheduler.least_cost.compute_fill_first_cost_fn
--compute_fill_first_cost_fn_weight=1.0

(making some defaults explicit, adding CoreFilter, and changing cost
from -1.0 to 1.0)

I made those changes, restarted the nova-scheduler service and then
launched 100 t1.tiny instances.  I have several hundred available
vCPUs with 24 vCPU and 48G of ram per compute node so I expected to
get 24 instances using a total of 12G of ram per node across 5 nodes.
this is not what happened the first 93 instances landed on one node
(which then had committed all it's ram) with the next 7 on another
node.  Clearly the cost weighting is working (I have a couple nodes
with 96G of ram and the instances did not go there) but the CoreFilter
doesn't seem to be working.

Is there anything obviously wrong with my config?  If not is there a
way to check the runtime configuration to see if it thinks it's
applying the CoreFilter?

Thanks,
-Jon




More information about the Openstack mailing list