nova/contrib/profile_caching_scheduler.sh
John Garbutt 1b24bfbd73 Add a caching scheduler driver
This adds a new scheduler driver, CachingScheduler

It currently subclasses the filter scheduler and only adds caching of
calls to host_manager.get_all_host_states.

It relies on there being a small number of schedulers, ideally one,
calls to consume_from_instance within the filter scheduler to update the
current cached list of hosts, and a low rate of deletes.

It introduces the new config value:
scheduler_driver_task_period

The periodic task it controls is used by the caching scheduler to fetch
an updated copy of host_manager.get_all_host_states.

If your value for service_down_time is much smaller than
scheduler_driver_task_period, there will be issues with hosts appearing
to be dead, just because the list of hosts is being cached. Correct
configuration of those two values can avoid this issue.

DocImpact
Part of blueprint caching-scheduler
Change-Id: I2eb873ce8024a576e597205e2d52b5d5e8aee97a
2014-02-26 13:53:07 +00:00

41 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2014 Rackspace Hosting
# 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.
#
# This runs a unit test that uses pycallgraph
# to profile the select_destinations call
# in the CachingScheduler
#
# For this script to work please run:
# python setup.py develop
# pip install -r requirements.txt
# pip install -r test-requirements.txt
# pip install pycallgraph
# export EVENTLET_NO_GREENDNS='yes'
#
BASEDIR=$(dirname $0)
TEST=$BASEDIR/../nova/tests/scheduler/test_caching_scheduler.py
echo
echo "Running this unit test file as a python script:"
echo $TEST
python $TEST
RESULTDIR=$(pwd)
echo
echo "For profiler result see: "
echo $RESULTDIR/scheduler.png
echo