This page lets you control how much CPU, memory, and disk I/O a virtual server
owner can use. Limits apply to the Unix user that owns this virtual server and
all sub-servers, so they affect SSH logins, cron jobs, scripts, and most
server-side processes that run as that user. Virtualmin provides two types of
limits: user-based limits that use systemd user slices (cgroups v2) to cap total
usage across all processes, and process-based limits that use
limits.conf to restrict each individual process.
The available user-based limit types are:
- CPUQuota and CPUWeight to cap CPU use and/or set CPU
priority compared to other users.
- MemoryMax to set a hard memory ceiling for all processes combined,
and MemoryHigh to start throttling memory use before the hard
limit.
- MemorySwapMax to limit how much swap (disk-backed memory) the
user’s processes can use.
- TasksMax to cap the total number of processes and threads.
- IOReadBandwidthMax / IOWriteBandwidthMax to cap disk
bandwidth, and IOReadIOPSMax / IOWriteIOPSMax to cap I/O
operations per second. These limits apply per block device.
- IOWeight to set disk I/O priority compared to other users.
The available process-based limit types are:
- Maximum number of processes: prevents starting more processes than allowed
for the user.
- Maximum size per process: kills any single process that exceeds the limit,
but does not cap total memory across all processes.
- Maximum CPU time per process: kills any process whose CPU time exceeds the
limit.