Merge "Fix config items in project"
This commit is contained in:
commit
1c2c083ef8
@ -1,22 +1,55 @@
|
|||||||
[DEFAULT]
|
[default]
|
||||||
|
# The name of the host running the global manager
|
||||||
|
global_manager_host = controller
|
||||||
|
|
||||||
# The directory, where log files will be created by the Neat services
|
# The port of the REST web service exposed by the global manager
|
||||||
log_directory = /var/log/neat
|
global_manager_port = 60080
|
||||||
|
|
||||||
# The level of emitted log messages:
|
# The time interval between subsequent invocations of the database
|
||||||
# 0 -- no logging
|
# cleaner in seconds
|
||||||
# 1 -- errors and warnings
|
db_cleaner_interval = 7200
|
||||||
# 2 -- errors, warnings, and information messages
|
|
||||||
# 3 -- errors, warnings, information messages, and debug messages
|
|
||||||
log_level = 3
|
|
||||||
|
|
||||||
|
# The directory used by the data collector to store the data on the
|
||||||
|
# resource usage by the VMs running on the host
|
||||||
|
local_data_directory = /var/lib/terracotta
|
||||||
|
|
||||||
|
# The threshold on the overall (all cores) utilization of the physical
|
||||||
|
# CPU of a host that can be allocated to VMs.
|
||||||
|
host_cpu_usable_by_vms = 1.0
|
||||||
|
|
||||||
|
# The number of the latest data values stored locally by the data
|
||||||
|
# collector and passed to the underload / overload detection and VM
|
||||||
|
# placement algorithms
|
||||||
|
data_collector_data_length = 100
|
||||||
|
|
||||||
|
# The network bandwidth in MB/s available for VM migration
|
||||||
|
network_migration_bandwidth = 10
|
||||||
|
|
||||||
|
[api]
|
||||||
|
# Terracotta API server host
|
||||||
|
host = 0.0.0.0
|
||||||
|
|
||||||
|
# Terracotta API server port
|
||||||
|
port = 9090
|
||||||
|
|
||||||
|
[pecan]
|
||||||
|
# Pecan root controller
|
||||||
|
root = terracotta.api.controllers.root.RootController
|
||||||
|
|
||||||
|
# A list of modules where pecan will search for applications.
|
||||||
|
modules = terracotta.api
|
||||||
|
|
||||||
|
# Enables the ability to display tracebacks in the
|
||||||
|
# browser and interactively debug during development.
|
||||||
|
debug = False
|
||||||
|
|
||||||
|
# Enables user authentication in pecan.
|
||||||
|
auth_enable = True
|
||||||
|
|
||||||
|
[global_manager]
|
||||||
# The directory, where the VM instance data are stored
|
# The directory, where the VM instance data are stored
|
||||||
vm_instance_directory = /var/lib/nova/instances
|
vm_instance_directory = /var/lib/nova/instances
|
||||||
|
|
||||||
# The host name and credentials for connecting to the MySQL database
|
|
||||||
# specified in the format supported by SQLAlchemy
|
|
||||||
sql_connection = mysql://neat:neatpassword@controller/neat
|
|
||||||
|
|
||||||
# The admin tenant name for authentication with Nova using Keystone
|
# The admin tenant name for authentication with Nova using Keystone
|
||||||
os_admin_tenant_name = admin
|
os_admin_tenant_name = admin
|
||||||
|
|
||||||
@ -32,46 +65,16 @@ os_auth_url = http://controller:5000/v2.0/
|
|||||||
# A coma-separated list of compute host names
|
# A coma-separated list of compute host names
|
||||||
compute_hosts = compute1, compute2, compute3, compute4
|
compute_hosts = compute1, compute2, compute3, compute4
|
||||||
|
|
||||||
# The name of the host running the global manager
|
|
||||||
global_manager_host = controller
|
|
||||||
|
|
||||||
# The port of the REST web service exposed by the global manager
|
|
||||||
global_manager_port = 60080
|
|
||||||
|
|
||||||
# The time interval between subsequent invocations of the database
|
|
||||||
# cleaner in seconds
|
|
||||||
db_cleaner_interval = 7200
|
|
||||||
|
|
||||||
# The directory used by the data collector to store the data on the
|
|
||||||
# resource usage by the VMs running on the host
|
|
||||||
local_data_directory = /var/lib/neat
|
|
||||||
|
|
||||||
# The time interval between subsequent invocations of the local
|
|
||||||
# manager in seconds
|
|
||||||
local_manager_interval = 300
|
|
||||||
|
|
||||||
# The threshold on the overall (all cores) utilization of the physical
|
|
||||||
# CPU of a host, above which the host is considered to be overloaded.
|
|
||||||
# This is used for logging host overloads into the database.
|
|
||||||
host_cpu_overload_threshold = 0.8
|
|
||||||
|
|
||||||
# The threshold on the overall (all cores) utilization of the physical
|
|
||||||
# CPU of a host that can be allocated to VMs.
|
|
||||||
host_cpu_usable_by_vms = 1.0
|
|
||||||
|
|
||||||
# The user name for connecting to the compute hosts to switch them
|
|
||||||
# into the sleep mode
|
|
||||||
compute_user = neat
|
|
||||||
|
|
||||||
# The password of the user account used for connecting to the compute
|
|
||||||
# hosts to switch them into the sleep mode
|
|
||||||
compute_password = neatpassword
|
|
||||||
|
|
||||||
# Whether to use block migration (includes disk migration)
|
# Whether to use block migration (includes disk migration)
|
||||||
block_migration = True
|
block_migration = True
|
||||||
|
|
||||||
# The network bandwidth in MB/s available for VM migration
|
# The user name for connecting to the compute hosts to switch them
|
||||||
network_migration_bandwidth = 10
|
# into the sleep mode
|
||||||
|
compute_user = terracotta
|
||||||
|
|
||||||
|
# The password of the user account used for connecting to the compute
|
||||||
|
# hosts to switch them into the sleep mode
|
||||||
|
compute_password = terracottapassword
|
||||||
|
|
||||||
# A shell command used to switch a host into the sleep mode, the
|
# A shell command used to switch a host into the sleep mode, the
|
||||||
# compute_user must have permissions to execute this command
|
# compute_user must have permissions to execute this command
|
||||||
@ -80,10 +83,23 @@ sleep_command = pm-suspend
|
|||||||
# The network interface to send a magic packet from using ether-wake
|
# The network interface to send a magic packet from using ether-wake
|
||||||
ether_wake_interface = eth0
|
ether_wake_interface = eth0
|
||||||
|
|
||||||
|
# The fully qualified name of a Python factory function that returns a
|
||||||
|
# function implementing a VM placement algorithm
|
||||||
|
algorithm_vm_placement_factory = terracotta.globals.vm_placement.bin_packing.best_fit_decreasing_factory
|
||||||
|
|
||||||
|
# A JSON encoded parameters, which will be parsed and passed to the
|
||||||
|
# specified VM placement algorithm factory
|
||||||
|
algorithm_vm_placement_parameters = {"cpu_threshold": 0.8, "ram_threshold": 0.95, "last_n_vm_cpu": 2}
|
||||||
|
|
||||||
|
[local_manager]
|
||||||
|
# The time interval between subsequent invocations of the local
|
||||||
|
# manager in seconds
|
||||||
|
local_manager_interval = 300
|
||||||
|
|
||||||
# The fully qualified name of a Python factory function that returns a
|
# The fully qualified name of a Python factory function that returns a
|
||||||
# function implementing an underload detection algorithm
|
# function implementing an underload detection algorithm
|
||||||
#algorithm_underload_detection_factory = neat.locals.underload.trivial.threshold_factory
|
#algorithm_underload_detection_factory = terracotta.locals.underload.trivial.threshold_factory
|
||||||
algorithm_underload_detection_factory = neat.locals.underload.trivial.last_n_average_threshold_factory
|
algorithm_underload_detection_factory = terracotta.locals.underload.trivial.last_n_average_threshold_factory
|
||||||
|
|
||||||
# A JSON encoded parameters, which will be parsed and passed to the
|
# A JSON encoded parameters, which will be parsed and passed to the
|
||||||
# specified underload detection algorithm factory
|
# specified underload detection algorithm factory
|
||||||
@ -92,11 +108,11 @@ algorithm_underload_detection_parameters = {"threshold": 0.5, "n": 2}
|
|||||||
|
|
||||||
# The fully qualified name of a Python factory function that returns a
|
# The fully qualified name of a Python factory function that returns a
|
||||||
# function implementing an overload detection algorithm
|
# function implementing an overload detection algorithm
|
||||||
#algorithm_overload_detection_factory = neat.locals.overload.trivial.threshold_factory
|
#algorithm_overload_detection_factory = terracotta.locals.overload.trivial.threshold_factory
|
||||||
algorithm_overload_detection_factory = neat.locals.overload.mhod.core.mhod_factory
|
algorithm_overload_detection_factory = terracotta.locals.overload.mhod.core.mhod_factory
|
||||||
#algorithm_overload_detection_factory = neat.locals.overload.trivial.last_n_average_threshold_factory
|
#algorithm_overload_detection_factory = terracotta.locals.overload.trivial.last_n_average_threshold_factory
|
||||||
#algorithm_overload_detection_factory = neat.locals.overload.statistics.loess_factory
|
#algorithm_overload_detection_factory = terracotta.locals.overload.statistics.loess_factory
|
||||||
#algorithm_overload_detection_factory = neat.locals.overload.otf.otf_factory
|
#algorithm_overload_detection_factory = terracotta.locals.overload.otf.otf_factory
|
||||||
|
|
||||||
# A JSON encoded parameters, which will be parsed and passed to the
|
# A JSON encoded parameters, which will be parsed and passed to the
|
||||||
# specified overload detection algorithm factory
|
# specified overload detection algorithm factory
|
||||||
@ -108,32 +124,25 @@ algorithm_overload_detection_parameters = {"state_config": [0.8], "otf": 0.1, "h
|
|||||||
|
|
||||||
# The fully qualified name of a Python factory function that returns a
|
# The fully qualified name of a Python factory function that returns a
|
||||||
# function implementing a VM selection algorithm
|
# function implementing a VM selection algorithm
|
||||||
#algorithm_vm_selection_factory = neat.locals.vm_selection.algorithms.minimum_migration_time_factory
|
#algorithm_vm_selection_factory = terracotta.locals.vm_selection.algorithms.minimum_migration_time_factory
|
||||||
algorithm_vm_selection_factory = neat.locals.vm_selection.algorithms.minimum_migration_time_max_cpu_factory
|
algorithm_vm_selection_factory = terracotta.locals.vm_selection.algorithms.minimum_migration_time_max_cpu_factory
|
||||||
|
|
||||||
# A JSON encoded parameters, which will be parsed and passed to the
|
# A JSON encoded parameters, which will be parsed and passed to the
|
||||||
# specified VM selection algorithm factory
|
# specified VM selection algorithm factory
|
||||||
#algorithm_vm_selection_parameters = {}
|
#algorithm_vm_selection_parameters = {}
|
||||||
algorithm_vm_selection_parameters = {"last_n": 2}
|
algorithm_vm_selection_parameters = {"last_n": 2}
|
||||||
|
|
||||||
# The fully qualified name of a Python factory function that returns a
|
|
||||||
# function implementing a VM placement algorithm
|
|
||||||
algorithm_vm_placement_factory = neat.globals.vm_placement.bin_packing.best_fit_decreasing_factory
|
|
||||||
|
|
||||||
# A JSON encoded parameters, which will be parsed and passed to the
|
|
||||||
# specified VM placement algorithm factory
|
|
||||||
algorithm_vm_placement_parameters = {"cpu_threshold": 0.8, "ram_threshold": 0.95, "last_n_vm_cpu": 2}
|
|
||||||
|
|
||||||
[global_manager]
|
|
||||||
|
|
||||||
[local_manager]
|
|
||||||
|
|
||||||
[collector]
|
[collector]
|
||||||
# The time interval between subsequent invocations of the data
|
# The time interval between subsequent invocations of the data
|
||||||
# collector in seconds
|
# collector in seconds
|
||||||
data_collector_interval = 300
|
data_collector_interval = 300
|
||||||
|
|
||||||
# The number of the latest data values stored locally by the data
|
# The threshold on the overall (all cores) utilization of the physical
|
||||||
# collector and passed to the underload / overload detection and VM
|
# CPU of a host, above which the host is considered to be overloaded.
|
||||||
# placement algorithms
|
# This is used for logging host overloads into the database.
|
||||||
data_collector_data_length = 100
|
host_cpu_overload_threshold = 0.8
|
||||||
|
|
||||||
|
[database]
|
||||||
|
# The host name and credentials for connecting to the MySQL database
|
||||||
|
# specified in the format supported by SQLAlchemy
|
||||||
|
sql_connection = mysql://terracotta:terracottapassword@controller/terracotta
|
@ -37,7 +37,7 @@ default_opts = [
|
|||||||
help='The port of the REST web service exposed by the global manager'),
|
help='The port of the REST web service exposed by the global manager'),
|
||||||
cfg.IntOpt('db_cleaner_interval', default=7200,
|
cfg.IntOpt('db_cleaner_interval', default=7200,
|
||||||
help='The time interval between subsequent invocations of the database'),
|
help='The time interval between subsequent invocations of the database'),
|
||||||
cfg.StrOpt('local_data_directory', default='/var/lib/neat',
|
cfg.StrOpt('local_data_directory', default='/var/lib/terracotta',
|
||||||
help='The directory used by the data collector to store the data on the'
|
help='The directory used by the data collector to store the data on the'
|
||||||
'resource usage by the VMs running on the host'),
|
'resource usage by the VMs running on the host'),
|
||||||
cfg.FloatOpt('host_cpu_usable_by_vms', default=1.0,
|
cfg.FloatOpt('host_cpu_usable_by_vms', default=1.0,
|
||||||
@ -47,8 +47,8 @@ default_opts = [
|
|||||||
help='The number of the latest data values stored locally '
|
help='The number of the latest data values stored locally '
|
||||||
'by the data collector and passed to the underload / '
|
'by the data collector and passed to the underload / '
|
||||||
'overload detection and VM placement algorithms'),
|
'overload detection and VM placement algorithms'),
|
||||||
cfg.IntOpt('network_migration_bandwidth', default=10,
|
cfg.FloatOpt('network_migration_bandwidth', default=10,
|
||||||
help='The network bandwidth in MB/s available for VM migration')
|
help='The network bandwidth in MB/s available for VM migration')
|
||||||
]
|
]
|
||||||
|
|
||||||
api_opts = [
|
api_opts = [
|
||||||
@ -97,10 +97,10 @@ global_manager_opts = [
|
|||||||
help='A coma-separated list of compute host names'),
|
help='A coma-separated list of compute host names'),
|
||||||
cfg.BoolOpt('block_migration', default=True,
|
cfg.BoolOpt('block_migration', default=True,
|
||||||
help='Whether to use block migration (includes disk migration)'),
|
help='Whether to use block migration (includes disk migration)'),
|
||||||
cfg.StrOpt('compute_user', default='neat',
|
cfg.StrOpt('compute_user', default='terracotta',
|
||||||
help='The user name for connecting to the compute hosts '
|
help='The user name for connecting to the compute hosts '
|
||||||
'to switch them into the sleep mode'),
|
'to switch them into the sleep mode'),
|
||||||
cfg.StrOpt('compute_password', default='neatpassword',
|
cfg.StrOpt('compute_password', default='terracottapassword',
|
||||||
help='The password of the user account used for connecting '
|
help='The password of the user account used for connecting '
|
||||||
'to the compute hosts to switch them into the sleep mode'),
|
'to the compute hosts to switch them into the sleep mode'),
|
||||||
cfg.StrOpt('sleep_command', default='pm-suspend',
|
cfg.StrOpt('sleep_command', default='pm-suspend',
|
||||||
@ -110,7 +110,7 @@ global_manager_opts = [
|
|||||||
help='The network interface to send a magic packet from '
|
help='The network interface to send a magic packet from '
|
||||||
'using ether-wake'),
|
'using ether-wake'),
|
||||||
cfg.StrOpt('algorithm_vm_placement_factory',
|
cfg.StrOpt('algorithm_vm_placement_factory',
|
||||||
default='neat.globals.vm_placement.bin_packing.best_fit_decreasing_factory',
|
default='terracotta.globals.vm_placement.bin_packing.best_fit_decreasing_factory',
|
||||||
help='The fully qualified name of a Python factory function that returns a'
|
help='The fully qualified name of a Python factory function that returns a'
|
||||||
'function implementing a VM placement algorithm'),
|
'function implementing a VM placement algorithm'),
|
||||||
cfg.DictOpt('algorithm_vm_placement_parameters',
|
cfg.DictOpt('algorithm_vm_placement_parameters',
|
||||||
@ -124,7 +124,7 @@ local_manager_opts = [
|
|||||||
help='The time interval between subsequent invocations '
|
help='The time interval between subsequent invocations '
|
||||||
'of the local manager in seconds'),
|
'of the local manager in seconds'),
|
||||||
cfg.StrOpt('algorithm_underload_detection_factory',
|
cfg.StrOpt('algorithm_underload_detection_factory',
|
||||||
default='neat.locals.underload.trivial.last_n_average_threshold_factory',
|
default='terracotta.locals.underload.trivial.last_n_average_threshold_factory',
|
||||||
help='The fully qualified name of a Python factory function that returns a'
|
help='The fully qualified name of a Python factory function that returns a'
|
||||||
'function implementing an underload detection algorithm'),
|
'function implementing an underload detection algorithm'),
|
||||||
cfg.DictOpt('algorithm_underload_detection_parameters',
|
cfg.DictOpt('algorithm_underload_detection_parameters',
|
||||||
@ -132,7 +132,7 @@ local_manager_opts = [
|
|||||||
help='A JSON encoded parameters, which will be parsed and passed to the'
|
help='A JSON encoded parameters, which will be parsed and passed to the'
|
||||||
'specified underload detection algorithm factory'),
|
'specified underload detection algorithm factory'),
|
||||||
cfg.StrOpt('algorithm_overload_detection_factory',
|
cfg.StrOpt('algorithm_overload_detection_factory',
|
||||||
default='neat.locals.overload.mhod.core.mhod_factory',
|
default='terracotta.locals.overload.mhod.core.mhod_factory',
|
||||||
help='The fully qualified name of a Python factory function that returns a'
|
help='The fully qualified name of a Python factory function that returns a'
|
||||||
'function implementing an overload detection algorithm'),
|
'function implementing an overload detection algorithm'),
|
||||||
cfg.DictOpt('algorithm_overload_detection_parameters',
|
cfg.DictOpt('algorithm_overload_detection_parameters',
|
||||||
@ -145,7 +145,7 @@ local_manager_opts = [
|
|||||||
help='A JSON encoded parameters, which will be parsed and passed to the'
|
help='A JSON encoded parameters, which will be parsed and passed to the'
|
||||||
'specified overload detection algorithm factory'),
|
'specified overload detection algorithm factory'),
|
||||||
cfg.StrOpt('algorithm_vm_selection_factory',
|
cfg.StrOpt('algorithm_vm_selection_factory',
|
||||||
default='neat.locals.vm_selection.algorithms.minimum_migration_time_max_cpu_factory',
|
default='terracotta.locals.vm_selection.algorithms.minimum_migration_time_max_cpu_factory',
|
||||||
help='The fully qualified name of a Python factory function that returns a'
|
help='The fully qualified name of a Python factory function that returns a'
|
||||||
'function implementing a VM selection algorithm'),
|
'function implementing a VM selection algorithm'),
|
||||||
cfg.DictOpt('algorithm_vm_selection_parameters',
|
cfg.DictOpt('algorithm_vm_selection_parameters',
|
||||||
@ -166,7 +166,7 @@ collector_opts = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
database_opts = [
|
database_opts = [
|
||||||
cfg.StrOpt('sql_connection', default='mysql://neat:neatpassword@controller/neat',
|
cfg.StrOpt('sql_connection', default='mysql://terracotta:terracottapassword@controller/terracotta',
|
||||||
help='The host name and credentials for connecting '
|
help='The host name and credentials for connecting '
|
||||||
'to the MySQL database specified in the format '
|
'to the MySQL database specified in the format '
|
||||||
'supported by SQLAlchemy')
|
'supported by SQLAlchemy')
|
||||||
|
@ -396,7 +396,7 @@ class GlobalManager(object):
|
|||||||
return self.state
|
return self.state
|
||||||
vms_cpu[vm] = self.state['db'].select_cpu_mhz_for_vm(
|
vms_cpu[vm] = self.state['db'].select_cpu_mhz_for_vm(
|
||||||
vm,
|
vm,
|
||||||
int(CONF.data_collector_data_length))
|
CONF.data_collector_data_length)
|
||||||
vms_ram = vms_ram_limit(self.state['nova'], vms_to_migrate)
|
vms_ram = vms_ram_limit(self.state['nova'], vms_to_migrate)
|
||||||
|
|
||||||
# Remove VMs that are not in vms_ram
|
# Remove VMs that are not in vms_ram
|
||||||
@ -413,10 +413,10 @@ class GlobalManager(object):
|
|||||||
if not vm in vms_ram:
|
if not vm in vms_ram:
|
||||||
del vms_cpu[vm]
|
del vms_cpu[vm]
|
||||||
|
|
||||||
time_step = int(CONF.data_collector_interval)
|
time_step = CONF.data_collector_interval
|
||||||
migration_time = common.calculate_migration_time(
|
migration_time = common.calculate_migration_time(
|
||||||
vms_ram,
|
vms_ram,
|
||||||
float(CONF.network_migration_bandwidth))
|
CONF.network_migration_bandwidth)
|
||||||
|
|
||||||
if 'vm_placement' not in self.state:
|
if 'vm_placement' not in self.state:
|
||||||
vm_placement_params = common.parse_parameters(
|
vm_placement_params = common.parse_parameters(
|
||||||
@ -462,7 +462,7 @@ class GlobalManager(object):
|
|||||||
self.state['nova'],
|
self.state['nova'],
|
||||||
CONF.vm_instance_directory,
|
CONF.vm_instance_directory,
|
||||||
placement,
|
placement,
|
||||||
bool(CONF.block_migration))
|
CONF.block_migration)
|
||||||
LOG.info('Completed underload VM migrations')
|
LOG.info('Completed underload VM migrations')
|
||||||
|
|
||||||
if hosts_to_deactivate:
|
if hosts_to_deactivate:
|
||||||
@ -548,7 +548,7 @@ class GlobalManager(object):
|
|||||||
return self.state
|
return self.state
|
||||||
vms_cpu[vm] = self.state['db'].select_cpu_mhz_for_vm(
|
vms_cpu[vm] = self.state['db'].select_cpu_mhz_for_vm(
|
||||||
vm,
|
vm,
|
||||||
int(CONF.data_collector_data_length))
|
CONF.data_collector_data_length)
|
||||||
vms_ram = vms_ram_limit(self.state['nova'], vms_to_migrate)
|
vms_ram = vms_ram_limit(self.state['nova'], vms_to_migrate)
|
||||||
|
|
||||||
# Remove VMs that are not in vms_ram
|
# Remove VMs that are not in vms_ram
|
||||||
@ -565,10 +565,10 @@ class GlobalManager(object):
|
|||||||
if not vm in vms_ram:
|
if not vm in vms_ram:
|
||||||
del vms_cpu[vm]
|
del vms_cpu[vm]
|
||||||
|
|
||||||
time_step = int(CONF.data_collector_interval)
|
time_step = CONF.data_collector_interval
|
||||||
migration_time = common.calculate_migration_time(
|
migration_time = common.calculate_migration_time(
|
||||||
vms_ram,
|
vms_ram,
|
||||||
float(CONF.network_migration_bandwidth))
|
CONF.network_migration_bandwidth)
|
||||||
|
|
||||||
if 'vm_placement' not in state:
|
if 'vm_placement' not in state:
|
||||||
vm_placement_params = common.parse_parameters(
|
vm_placement_params = common.parse_parameters(
|
||||||
@ -610,7 +610,7 @@ class GlobalManager(object):
|
|||||||
self.state['nova'],
|
self.state['nova'],
|
||||||
CONF.vm_instance_directory,
|
CONF.vm_instance_directory,
|
||||||
placement,
|
placement,
|
||||||
bool(CONF.block_migration))
|
CONF.block_migration)
|
||||||
LOG.info('Completed overload VM migrations')
|
LOG.info('Completed overload VM migrations')
|
||||||
LOG.info('Completed processing an overload request')
|
LOG.info('Completed processing an overload request')
|
||||||
return state
|
return state
|
||||||
|
@ -141,7 +141,7 @@ class Collector(periodic_task.PeriodicTasks):
|
|||||||
hostname = vir_connection.getHostname()
|
hostname = vir_connection.getHostname()
|
||||||
host_cpu_mhz, host_ram = self.get_host_characteristics(vir_connection)
|
host_cpu_mhz, host_ram = self.get_host_characteristics(vir_connection)
|
||||||
physical_cpus = common.physical_cpu_count(vir_connection)
|
physical_cpus = common.physical_cpu_count(vir_connection)
|
||||||
host_cpu_usable_by_vms = float(CONF.host_cpu_usable_by_vms)
|
host_cpu_usable_by_vms = CONF.host_cpu_usable_by_vms
|
||||||
|
|
||||||
db = db_utils.init_db()
|
db = db_utils.init_db()
|
||||||
db.update_host(hostname,
|
db.update_host(hostname,
|
||||||
@ -158,7 +158,7 @@ class Collector(periodic_task.PeriodicTasks):
|
|||||||
'vir_connection': vir_connection,
|
'vir_connection': vir_connection,
|
||||||
'hostname': hostname,
|
'hostname': hostname,
|
||||||
'host_cpu_overload_threshold':
|
'host_cpu_overload_threshold':
|
||||||
float(CONF.host_cpu_overload_threshold) * \
|
CONF.host_cpu_overload_threshold * \
|
||||||
host_cpu_usable_by_vms,
|
host_cpu_usable_by_vms,
|
||||||
'physical_cpus': physical_cpus,
|
'physical_cpus': physical_cpus,
|
||||||
'physical_cpu_mhz': host_cpu_mhz,
|
'physical_cpu_mhz': host_cpu_mhz,
|
||||||
@ -201,7 +201,7 @@ class Collector(periodic_task.PeriodicTasks):
|
|||||||
|
|
||||||
vm_path = common.build_local_vm_path(CONF.local_data_directory)
|
vm_path = common.build_local_vm_path(CONF.local_data_directory)
|
||||||
host_path = common.build_local_host_path(CONF.local_data_directory)
|
host_path = common.build_local_host_path(CONF.local_data_directory)
|
||||||
data_length = int(CONF.data_collector_data_length)
|
data_length = CONF.data_collector_data_length
|
||||||
vms_previous = self.get_previous_vms(vm_path)
|
vms_previous = self.get_previous_vms(vm_path)
|
||||||
vms_current = self.get_current_vms(state['vir_connection'])
|
vms_current = self.get_current_vms(state['vir_connection'])
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ class LocalManager(periodic_task.PeriodicTasks):
|
|||||||
|
|
||||||
physical_cpu_mhz_total = int(
|
physical_cpu_mhz_total = int(
|
||||||
common.physical_cpu_mhz_total(vir_connection) *
|
common.physical_cpu_mhz_total(vir_connection) *
|
||||||
float(CONF.host_cpu_usable_by_vms))
|
CONF.host_cpu_usable_by_vms)
|
||||||
return {'previous_time': 0.,
|
return {'previous_time': 0.,
|
||||||
'vir_connection': vir_connection,
|
'vir_connection': vir_connection,
|
||||||
'db': db_utils.init_db(),
|
'db': db_utils.init_db(),
|
||||||
@ -218,9 +218,9 @@ class LocalManager(periodic_task.PeriodicTasks):
|
|||||||
LOG.info('Skipped an iteration')
|
LOG.info('Skipped an iteration')
|
||||||
return
|
return
|
||||||
|
|
||||||
time_step = int(CONF.data_collector_interval)
|
time_step = CONF.data_collector_interval
|
||||||
migration_time = common.calculate_migration_time(
|
migration_time = common.calculate_migration_time(
|
||||||
vm_ram, float(CONF.network_migration_bandwidth))
|
vm_ram, CONF.network_migration_bandwidth)
|
||||||
|
|
||||||
if 'underload_detection' not in state:
|
if 'underload_detection' not in state:
|
||||||
underload_detection_params = common.parse_parameters(
|
underload_detection_params = common.parse_parameters(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user