[openstack-dev] [Fuel] Task Based Deployment Is at Least Twice Faster

Bogdan Dobrelya bdobrelia at mirantis.com
Wed Feb 3 10:31:50 UTC 2016


On 02.02.2016 17:35, Alexey Shtokolov wrote:
> Hi Fuelers!
> 
> As you may be aware, since [0] Fuel has implemented a new orchestration
> engine [1]
> We switched the deployment paradigm from role-based (aka granular) to
> task-based and now Fuel can deploy all nodes simultaneously using
> cross-node dependencies between deployment tasks.

That is great news! Please do not forget about docs updates as well.
Those docs are always forgotten like poor orphans... I submitted a patch
[0] to MOS docs, please review and add more details, if possible, for
plugins impact as well.

[0] https://review.fuel-infra.org/#/c/16509/

> 
> This feature is experimental in Fuel 8.0 and will be enabled by default
> for Fuel 9.0
> 
> Allow me to show you the results. We made some benchmarks on our bare
> metal lab [2]
> 
> Case #1. 3 controllers + 7 computes w/ ceph. 
> Task-based deployment takes *~38* minutes vs *~1h15m* for granular (*~2*
> times faster)
> Here and below the deployment time is average time for 10 runs
> 
> Case #2. 3 controllers + 3 mongodb + 4 computes w/ ceph.
> Task-based deployment takes *~41* minutes vs *~1h32m* for granular
> (*~2.24* times faster)
> 
> 
> 
> Also we took measurements for Fuel CI test cases. Standard BVT (Master
> node + 3 controllers + 3 computes w/ ceph. All are in qemu VMs on one host)
> 
> Fuel CI slaves with *4 *cores *~1.1* times faster
> In case of 4 cores for 7 VMs they are fighting for CPU resources and it
> marginalizes the gain of task-based deployment
> 
> Fuel CI slaves with *6* cores *~1.6* times faster
> 
> Fuel CI slaves with *12* cores *~1.7* times faster

These are really outstanding results!
(tl;dr)
I believe the next step may be to leverage the "external install & svc
management" feature (example [1]) of the Liberty release (7.0.0) of
Puppet-Openstack (PO) modules. So we could use separate concurrent
cross-depends based tasks *within a single node* as well, like:
- task: install_all_packages - a singleton task for a node,
- task: [configure_x, for each x] - concurrent for a node,
- task: [manage_service_x, for each x] - some may be concurrent for a
node, while another shall be serialized.

So, one might use the "--tags" separator for concurrent puppet runs to
make things go even faster, for example:

# cat test.pp
notify
{"A": tag => "a" }
notify
{"B": tag => "b" }

# puppet apply test.pp
Notice: A
Notice: /Stage[main]/Main/Notify[A]/message: defined 'message' as 'A'
Notice: B
Notice: /Stage[main]/Main/Notify[B]/message: defined 'message' as 'B'

# puppet apply test.pp --tags a
Notice: A
Notice: /Stage[main]/Main/Notify[A]/message: defined 'message' as 'A'

# puppet apply test.pp --tags a & puppet apply test.pp --tags b
Notice: B
Notice: /Stage[main]/Main/Notify[B]/message: defined 'message' as 'B'
Notice: A
Notice: /Stage[main]/Main/Notify[A]/message: defined 'message' as 'A'

Which is supposed to be faster, although not for this example.

[1] https://review.openstack.org/#/c/216926/3/manifests/init.pp

> 
> You can see additional information and charts in the presentation [3].
> 
> [0]
> - http://lists.openstack.org/pipermail/openstack-dev/2015-December/082093.html
> [1]
> - https://specs.openstack.org/openstack/fuel-specs/specs/8.0/task-based-deployment-mvp.html
> [2] -  3 x HP ProLiant DL360p Gen8 (XeonE5 6 cores/64GB/SSD)  + 7 x HP
> ProLiant DL320p Gen8 (XeonE3 4 cores/8-16GB/HDD)
> [3] -
> https://docs.google.com/presentation/d/1jZCFZlXHs_VhjtVYS2VuWgdxge5Q6sOMLz4bRLuw7YE
> 
> ---
> WBR, Alexey Shtokolov
> 
> 
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 


-- 
Best regards,
Bogdan Dobrelya,
Irc #bogdando



More information about the OpenStack-dev mailing list