Tuning standard installations

Use these guidelines to configure your installation to maximize its use of available system (CPU and RAM) resources.

PE is composed of multiple services on one or more infrastructure hosts. Each service has multiple settings that can be configured to maximize use of system resources and optimize performance. The default settings for each service are conservative, because the set of services sharing resources on each host varies depending on your infrastructure.

Optimized settings vary depending on the complexity and scale of your infrastructure. For example, you might need to allocate more memory per JRuby depending on the number of environments, or the number of agents and their run intervals.

Configure settings after an install or upgrade, or after making changes to infrastructure hosts, including changing the system resources of existing hosts, or adding new hosts, including compilers.

Master tuning

These are the default and recommended tuning settings for your master or high availability replica.

Tuning for 4 cores, 8 GB of RAM

Install type Puppet Server PuppetDB Console Orchestrator PostgreSQL CPU totals Memory totals
JRuby max active instances Java heap (MB) Reserved code cache (MB) Command processing threads Java heap (MB) Java heap (MB) Java heap (MB) Shared buffers (MB) Work memory (MB) Used Free Used (MB) Free (MB)
Default 3 2048 512 2 256 256 192 2048 4 5 -1 5312 2880
Recommended 2 1024 512 1 512 512 512 2048 4 3 1 5120 3072
With compilers 2 1024 512 2 1024 512 512 2048 4 4 0 5632 2560

Tuning for 8 cores, 16 GB of RAM

Install type Puppet Server PuppetDB Console Orchestrator PostgreSQL CPU totals Memory totals
JRuby max active instances Java heap (MB) Reserved code cache (MB) Command processing threads Java heap (MB) Java heap (MB) Java heap (MB) Shared buffers (MB) Work memory (MB) Used Free Used (MB) Free (MB)
Default 4 2048 1024 4 256 256 192 4096 4 8 0 7872 8512
Recommended 5 3840 1024 2 1024 768 768 4096 4 7 1 11520 4864
With compilers 2 1536 1024 4 3072 768 768 4096 4 6 2 11264 5120

Tuning 16 cores, 32 GB of RAM

Install type Puppet Server PuppetDB Console Orchestrator PostgreSQL CPU totals Memory totals
JRuby max active instances Java heap (MB) Reserved code cache (MB) Command processing threads Java heap (MB) Java heap (MB) Java heap (MB) Shared buffers (MB) Work memory (MB) Used Free Used (MB) Free (MB)
Default 4 2048 2048 8 256 256 192 4096 4 12 4 8896 23872
Recommended 11 11264 2048 4 2048 1024 1024 8192 4 15 1 25600 7168
With compilers 4 4096 2048 8 5120 1024 1024 8192 4 12 4 21504 11264

Compiler tuning

These are the default and recommended tuning settings for compilers.

Tuning 4 cores, 8 GB of RAM

Install type Puppet Server CPU totals Memory totals
JRuby max active instances Java heap (MB) Reserved code cache (MB) Used Free Used (MB) Free (MB)
Default 3 2048 512 3 1 2560 5632
Recommended 3 1536 512 3 1 2048 6144

Tuning 8 cores, 16 GB of RAM

Install type Puppet Server CPU totals Memory totals
JRuby max active instances Java heap (MB) Reserved code cache (MB) Used Free Used (MB) Free (MB)
Default 4 2048 1024 4 4 3072 13312
Recommended 7 5376 1024 7 1 6400 9984

Tuning 16 cores, 32 GB of RAM

Install type Puppet Server CPU totals Memory totals
JRuby max active instances Java heap (MB) Reserved code cache (MB) Used Free Used (MB) Free (MB)
Default 4 2048 2048 4 12 4096 28672
Recommended 15 15360 2048 15 1 17408 15360

Using the puppet infrastructure tune command

The puppet infrastructure tune command outputs optimized settings for PE services based on recommended guidelines.

When you run puppet infrastructure tune, it queries PuppetDB to identify infrastructure hosts and their processor and memory facts, and outputs settings in YAML format for use in Hiera. The command optimizes based on available system resources, not agent load or environment complexity.

The puppet infrastructure tune command is compatible with all PE configurations. The command must be run on your master as root.

You can add these options to the puppet infrastructure tune command:
  • --memory_per_jruby <MB> optimizes the Puppet Server service for environment complexity.
  • --current outputs currently specified settings for PE services in the console and in Hiera, and identifies duplicate settings found in both places.
    Tip: Specify settings in the console or Hiera, but not both. Console settings take precedence over Hiera settings

For more information about the tune command, run puppet infrastructure tune --help.