Problem
On instances with very large amounts of RAM (e.g., c5.metal with 192 GB), the swap profile attempts to create a swap file proportional to RAM size (~377 GB). This fails when the root volume is too small to accommodate it.
Observed on
- Instance type:
c5.metal (192 GB RAM)
- Root volume: 30 GB
- The root filesystem filled to 100%
Error
Notice: /Stage[main]/Profile::Swap/Exec[create_swap_file]/returns: fallocate: fallocate failed: No space left on device
Error: '/usr/bin/fallocate -l 404804878336 /swapfile' returned 1 instead of one of [0]
Error: /Stage[main]/Profile::Swap/Exec[create_swap_file]/returns: change from 'notrun' to ['0'] failed
Impact
- Root filesystem fills to 100%, potentially breaking other services
- Puppet run fails with dependency errors downstream of swap creation
Suggested Fix
Cap the swap file size to a reasonable maximum (e.g., 4-8 GB) or skip swap creation entirely when available RAM exceeds a threshold. On a 192 GB instance, swap is unnecessary.
For example:
- If RAM > 32 GB, cap swap at 4 GB (or skip entirely)
- Or cap swap at
min(2 * RAM, available_disk_space * 0.5)
Problem
On instances with very large amounts of RAM (e.g.,
c5.metalwith 192 GB), the swap profile attempts to create a swap file proportional to RAM size (~377 GB). This fails when the root volume is too small to accommodate it.Observed on
c5.metal(192 GB RAM)Error
Impact
Suggested Fix
Cap the swap file size to a reasonable maximum (e.g., 4-8 GB) or skip swap creation entirely when available RAM exceeds a threshold. On a 192 GB instance, swap is unnecessary.
For example:
min(2 * RAM, available_disk_space * 0.5)