Create Nova Scheduler IO Ops Weighter
Add a new nova scheduler weighter, sort the filter hosts according to host io ops number, aims to booting instances on light workload hosts. DocImpact: Adds io_ops_weight_multiplier to [DEFAULT] group of nova.conf and an new default schedule weigher. Change-Id: Ib3c9184f10b2ebe6b1230365a51b5542dffd447c Implements: blueprint io-ops-weightchanges/59/103859/22
parent
ad84585d75
commit
fb559a34f9
@ -0,0 +1,51 @@
|
||||
# Copyright (c) 2014 OpenStack Foundation
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
"""
|
||||
Io Ops Weigher. Weigh hosts by their io ops number.
|
||||
|
||||
The default is to preferably choose light workload compute hosts. If you prefer
|
||||
choosing heavy workload compute hosts, you can set 'io_ops_weight_multiplier'
|
||||
option to a positive number and the weighing has the opposite effect of the
|
||||
default.
|
||||
"""
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
from nova.scheduler import weights
|
||||
|
||||
io_ops_weight_opts = [
|
||||
cfg.FloatOpt('io_ops_weight_multiplier',
|
||||
default=-1.0,
|
||||
help='Multiplier used for weighing host io ops. Negative '
|
||||
'numbers mean a preference to choose light workload '
|
||||
'compute hosts.'),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(io_ops_weight_opts)
|
||||
|
||||
|
||||
class IoOpsWeigher(weights.BaseHostWeigher):
|
||||
minval = 0
|
||||
|
||||
def weight_multiplier(self):
|
||||
"""Override the weight multiplier."""
|
||||
return CONF.io_ops_weight_multiplier
|
||||
|
||||
def _weigh_object(self, host_state, weight_properties):
|
||||
"""Higher weights win. We want to choose light workload host
|
||||
to be the default.
|
||||
"""
|
||||
return host_state.num_io_ops
|
Loading…
Reference in New Issue