[BOLT-1186] Improve Bolt startup time on Windows redux Created: 2019/03/19  Updated: 2019/04/11  Resolved: 2019/04/02

Status: Resolved
Project: Puppet Task Runner
Component/s: performance, Windows
Affects Version/s: BOLT 1.14.0
Fix Version/s: BOLT 1.16.0

Type: Improvement Priority: Normal
Reporter: Ethan Brown Assignee: Cas Donoghue
Resolution: Fixed Votes: 0
Labels: docs_reviewed
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
is blocked by BOLT-1119 Improve Bolt startup time on Windows ... Resolved
relates to BOLT-1208 SPIKE - Determine next area for Windo... Closed
relates to BOLT-1224 SPIKE - Investigate lighter weight co... Closed
Team: Bolt
Sprint: Bolt Kanban
People Involved:
Ethan Brown
Release Notes: Not Needed
QA Risk Assessment: Needs Assessment


A number of improvements to Bolt gem code loading were made as part of BOLT-1119, reducing the effective startup time on Windows. The goal of this ticket is to further improve performance to reach approximately a 1.5 second (in a controlled environment) runtime for bolt --help


The additional performance improvements / refactors that were not yet made include:

  • Deferring the load of PAL and restructuring how concurrent libraries load
  • Loading transport configs loads the entirety of the transport - this is unnecessary
  • Separate Windows analytics client that uses BITs / doesn't rely on concurrent
  • Getting a processor count using something other than concurrent (maybe inline the WMI call for Windows / use Concurrent library otherwise?)
  •  A better way to disable logging plugins than monkey patching


Comment by Ethan Brown [ 2019/04/02 ]

Merged to master in https://github.com/puppetlabs/bolt/commit/c298b2b53ad0249387f2b91cd373bcb45c46f221

Comment by Kevin Reeuwijk [ 2019/04/04 ]

running Bolt 1.15 on my Windows server at home:

  • bolt command run "echo hello" --nodes localhost --> 6.28 seconds
  • bolt --> 5.07 seconds

so it got a bit faster, but I’d still call it slow. For comparison on my Mac:

  • bolt command run "echo hello" --nodes localhost --> 2.17 seconds
  • bolt --> 2.33 seconds

Basically it’s twice as slow on Windows. We could blame Windows Defender as it doubles the runtime, but the problem is that Ansible is lightning fast on Windows...

Generated at Sat Dec 14 02:42:36 PST 2019 using JIRA 7.7.1#77002-sha1:e75ca93d5574d9409c0630b81c894d9065296414.