exec overhead on Windows

asked 2015-09-03 15:49:42 -0500

WhatsChrisDoing gravatar image

We're at the beginning of a Puppet Enterprise adoption primarily managing Windows servers. Much of what we're configuring/managing is done through exec's. We've hit a wall in terms of impact on the VM during a Puppet run.

Each PowerShell execution seems to have a base overhead of about 1 second. Creating and destroying all of the PowerShell environments creates an extreme CPU load on the machine for the entire Puppet run.

With 1365 unchanged resources here is the timing for an example run

Config Retrieval 39.58 seconds Dism 0.00 seconds Exec 871.44 seconds File 0.80 seconds Filebucket 0.00 seconds Group 0.02 seconds Package 7.38 seconds Pe Anchor 0.00 seconds Reboot 0.00 seconds Registry Key 0.00 seconds Registry Value 0.02 seconds Schedule 0.00 seconds Scheduled Task 0.02 seconds Service 0.02 seconds Total 919.25 seconds

High CPU usage for 15 minutes and a new Puppet run every 30 minutes isn't practical.

Most of the exec are IIS setup. There are 100 sites on the VM. We're thought of abandoning the IIS module from the forge and writing one exec that does a complex check and would setup everything. That alone might halve the run time but the code wouldn't be as readable.

Do we have any other options?

edit retag flag offensive close merge delete


Which IIS module are you using?

Iristyle gravatar imageIristyle ( 2015-09-03 17:59:15 -0500 )edit

The approved IIS module off of the forge with some custom extensions. The basic issue is that a Powershell based exec the minimum time is just over a second for each of the onlyif and the actual command.

WhatsChrisDoing gravatar imageWhatsChrisDoing ( 2015-09-03 18:28:42 -0500 )edit