add numtcpsock to the things used to size an instance

Change-Id: I04d688e2165c82cd29c4249407eeaf81f71df70d
This commit is contained in:
Daniel Salinas 2013-06-26 16:03:04 -05:00
parent b123580ca3
commit a48aa25441
3 changed files with 65 additions and 1 deletions

7
debian/changelog vendored
View File

@ -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)

View File

@ -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)

View File

@ -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):
"""