From c566db9934acb2077b859f841f03e717d8915eac Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Tue, 22 Sep 2015 10:31:43 -0700 Subject: [PATCH] Avoid needless list copy in 'scheduler_host_subset_size' case When 'scheduler_host_subset_size' is set to be greater or equal to 'len(weighed_hosts)' there is really no need to create a temporary list of the same size and then choose a random element from that list. Instead just select a random element from the original list, if the size is greater or equal, no need to make a copy. Change-Id: I1115f21d2bc5d77d13695e4e0708a9bd6915c5ec --- nova/scheduler/filter_scheduler.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/nova/scheduler/filter_scheduler.py b/nova/scheduler/filter_scheduler.py index ec986252f49f..87e4306ee66e 100644 --- a/nova/scheduler/filter_scheduler.py +++ b/nova/scheduler/filter_scheduler.py @@ -156,14 +156,12 @@ class FilterScheduler(driver.Scheduler): LOG.debug("Weighed %(hosts)s", {'hosts': weighed_hosts}) - scheduler_host_subset_size = CONF.scheduler_host_subset_size - if scheduler_host_subset_size > len(weighed_hosts): - scheduler_host_subset_size = len(weighed_hosts) - if scheduler_host_subset_size < 1: - scheduler_host_subset_size = 1 + scheduler_host_subset_size = max(1, + CONF.scheduler_host_subset_size) + if scheduler_host_subset_size < len(weighed_hosts): + weighed_hosts = weighed_hosts[0:scheduler_host_subset_size] + chosen_host = random.choice(weighed_hosts) - chosen_host = random.choice( - weighed_hosts[0:scheduler_host_subset_size]) LOG.debug("Selected host: %(host)s", {'host': chosen_host}) selected_hosts.append(chosen_host)