add numtcpsock to the things used to size an instance
Change-Id: I04d688e2165c82cd29c4249407eeaf81f71df70d
This commit is contained in:
parent
b123580ca3
commit
a48aa25441
|
@ -1,3 +1,10 @@
|
|||
openvz-nova-driver (1.3-01) precise; urgency=low
|
||||
|
||||
* Added setting numtcpsock to instance sizing
|
||||
|
||||
-- Daniel Salinas <imsplitbit@gmail.com> Wed, 26 June 2013 16:08:03 -0500
|
||||
|
||||
|
||||
openvz-nova-driver (1.1-02) precise; urgency=low
|
||||
|
||||
* Released for known working distributions. (Closes: #XXXXXX)
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
# under the License.
|
||||
|
||||
import base64
|
||||
import json
|
||||
import mox
|
||||
from nova.compute import manager
|
||||
from nova.compute import power_state
|
||||
|
@ -395,6 +396,36 @@ class OpenVzDriverTestCase(test.TestCase):
|
|||
manager.ComputeVirtAPI(None), False)
|
||||
ovz_conn._set_numfiles(fakes.INSTANCE, max_fd)
|
||||
|
||||
def test_set_numtcpsock(self):
|
||||
instance_meta = ovz_utils.format_system_metadata(
|
||||
fakes.INSTANCE['system_metadata'])
|
||||
numtcpsock = json.loads(
|
||||
CONF.ovz_numtcpsock_map
|
||||
)[str(instance_meta['instance_type_memory_mb'])]
|
||||
self.mox.StubOutWithMock(openvz_conn.ovz_utils, 'execute')
|
||||
openvz_conn.ovz_utils.execute(
|
||||
'vzctl', 'set', fakes.INSTANCE['id'], '--save', '--numtcpsock',
|
||||
numtcpsock, run_as_root=True).AndReturn(('', ''))
|
||||
self.mox.ReplayAll()
|
||||
ovz_conn = openvz_conn.OpenVzDriver(
|
||||
manager.ComputeVirtAPI(None), False)
|
||||
ovz_conn._set_numtcpsock(
|
||||
fakes.INSTANCE, instance_meta['instance_type_memory_mb'])
|
||||
|
||||
def test_set_numtcpsock_no_flag(self):
|
||||
instance_meta = ovz_utils.format_system_metadata(
|
||||
fakes.INSTANCE['system_metadata'])
|
||||
self.mox.StubOutWithMock(openvz_conn.ovz_utils, 'execute')
|
||||
openvz_conn.ovz_utils.execute(
|
||||
'vzctl', 'set', fakes.INSTANCE['id'], '--save', '--numtcpsock',
|
||||
CONF.ovz_numtcpsock_default, run_as_root=True).AndReturn(('', ''))
|
||||
self.mox.ReplayAll()
|
||||
ovz_conn = openvz_conn.OpenVzDriver(
|
||||
manager.ComputeVirtAPI(None), False)
|
||||
ovz_conn._set_numtcpsock(
|
||||
fakes.INSTANCE,
|
||||
(instance_meta['instance_type_memory_mb'] + 1))
|
||||
|
||||
def test_set_instance_size_with_instance_type_id(self):
|
||||
instance_memory_bytes = ((int(fakes.INSTANCETYPE['memory_mb'])
|
||||
* 1024) * 1024)
|
||||
|
|
|
@ -169,13 +169,20 @@ openvz_conn_opts = [
|
|||
cfg.IntOpt('ovz_rsync_iterations',
|
||||
default=1,
|
||||
help='Number of times to rsync a container when migrating'),
|
||||
cfg.IntOpt('ovz_numtcpsock_default',
|
||||
default=2000,
|
||||
help='Default number of tcp sockets to give each container'),
|
||||
cfg.FloatOpt('ovz_disk_space_oversub_percent',
|
||||
default=1.10,
|
||||
help='Local disk over subscription percentage'),
|
||||
cfg.FloatOpt('ovz_cpulimit_overcommit_multiplier',
|
||||
default=1.0,
|
||||
help='Multiplier for cpulimit to facilitate over '
|
||||
'committing cpu resources')
|
||||
'committing cpu resources'),
|
||||
cfg.DictOpt('ovz_numtcpsock_map',
|
||||
default={"8192": 3000, "1024": 2000, "4096": 2000,
|
||||
"2048": 2000, "16384": 4000, "512": 2000},
|
||||
help='Mapped values for flavors based on memory allocation'),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
@ -813,6 +820,25 @@ class OpenVzDriver(driver.ComputeDriver):
|
|||
'--numfile', max_file_descriptors,
|
||||
run_as_root=True)
|
||||
|
||||
def _set_numtcpsock(self, instance, memory_mb):
|
||||
"""
|
||||
Run the commnand:
|
||||
|
||||
vzctl set <ctid> --save --numtcpsock <number>
|
||||
|
||||
:param instance:
|
||||
:return:
|
||||
"""
|
||||
try:
|
||||
tcp_sockets = CONF.ovz_numtcpsock_map[str(memory_mb)]
|
||||
except (ValueError, TypeError, KeyError, cfg.NoSuchOptError):
|
||||
LOG.error(_('There was no acceptable tcpsocket number found '
|
||||
'defaulting to %s') % CONF.ovz_numtcpsock_default)
|
||||
tcp_sockets = CONF.ovz_numtcpsock_default
|
||||
|
||||
ovz_utils.execute('vzctl', 'set', instance['id'], '--save',
|
||||
'--numtcpsock', tcp_sockets, run_as_root=True)
|
||||
|
||||
def _set_instance_size(self, instance, network_info=None,
|
||||
is_migration=False):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue