fuel-web/nailgun/nailgun
Alexander Kislitsky f3c440f769 Distributed serialization implementation
Distributed serialization is implemented with python distributed
library. We have scheduler for jobs management and workers for
jobs processing. Scheduler is started on the master node as well
as set of workers on it. Also workers are started on all nodes.
In the cluster settings we can select the type of serialization
and nodes statuses that allows serialization on it. By default
nodes with status 'ready' are excluded from the workers list.

For data serialization we are using only nodes from the cluster
where serialization is performing.

Before the computation fresh nailgun code is sent to the workers
as zip file and it will be imported for job execution. So we always
have fresh nailgun code on the workers.

In one job we are processing chunks of tasks on the workers. This
approach significantly boosts performance. The tasks chunk size
is defined as settings.LCM_DS_TASKS_PER_JOB parameter.

For limiting memory consumption on the master node we use parameter
settings.LCM_DS_NODE_LOAD_COEFF for calculation max number of jobs
in the processing queue.

Synthetic tests of distributed serialization for 500 nodes with
nubmer of ifaces >= 5 performed on 40 cores (4 different machines)
took 6-7 minutes on average.

Change-Id: Id8ff8fada2f1ab036775fc01c78d91befdda9ea2
Implements: blueprint distributed-serialization
2017-03-24 11:11:39 +00:00
..
api Merge "Add limit, offset, order in collection GET" into stable/newton 2017-02-27 09:05:41 +00:00
assassin Files with no code must be left completely empty 2017-01-25 07:26:00 +00:00
db remove vmware 2017-02-22 15:03:27 +00:00
errors Empty fields processed correctly in plugin adapters 2016-09-28 15:26:34 +03:00
expression Add exceptions hierarchy 2016-04-14 17:41:25 +03:00
extensions Add dhcp params to network_metadata 2017-03-14 10:19:52 +00:00
fake_keystone Add fake Keystone V3 API handlers 2016-10-01 18:08:40 +00:00
fixtures Distributed serialization implementation 2017-03-24 11:11:39 +00:00
fsm Files with no code must be left completely empty 2017-01-25 07:26:00 +00:00
fuyaql Fixed fuyaql after spliting common and node part of deployment info 2016-09-23 13:41:32 +03:00
lcm Distributed serialization implementation 2017-03-24 11:11:39 +00:00
middleware Files with no code must be left completely empty 2017-01-25 07:26:00 +00:00
objects Merge "Add limit, offset, order in collection GET" into stable/newton 2017-02-27 09:05:41 +00:00
orchestrator Distributed serialization implementation 2017-03-24 11:11:39 +00:00
plugins remove vmware 2017-02-22 15:03:27 +00:00
policy Change CPU distribution 2016-06-06 18:36:27 +03:00
rpc Fix naming of reset tasks and message duplication 2017-01-13 13:20:13 +04:00
statistics Distributed serialization implementation 2017-03-24 11:11:39 +00:00
task remove vmware 2017-02-22 15:03:27 +00:00
test Distributed serialization implementation 2017-03-24 11:11:39 +00:00
transactions Merge "Transactions manager uses custom node serialization" into stable/newton 2017-01-31 17:08:17 +00:00
utils remove vmware 2017-02-22 15:03:27 +00:00
volumes Files with no code must be left completely empty 2017-01-25 07:26:00 +00:00
webui Files with no code must be left completely empty 2017-01-25 07:26:00 +00:00
yaql_ext Implemented support for graph metadata 2016-08-23 11:11:13 +03:00
__init__.py Files with no code must be left completely empty 2017-01-25 07:26:00 +00:00
app.py Read-only mode for Fuel API was added 2016-05-25 18:39:40 +03:00
autoapidoc.py Swap deprecated oslo namespaces 2015-07-23 23:33:58 +03:00
consts.py Distributed serialization implementation 2017-03-24 11:11:39 +00:00
logger.py Add logging setup for receiverd and assassind 2016-01-28 18:54:34 +02:00
notifier.py Notification object - preparing for pagination 2014-04-04 15:25:31 +04:00
settings.py Distributed serialization implementation 2017-03-24 11:11:39 +00:00
settings.yaml Distributed serialization implementation 2017-03-24 11:11:39 +00:00
unit_test.py All flake8 warnings fixed, except for H302 (should be ignored) 2013-08-30 18:08:53 +04:00
urls.py Add fake Keystone 2014-07-11 14:47:58 +02:00
wsgi.py Explicit WSGI application and fixed static in dev 2014-03-24 15:04:55 +04:00