rcapd Configuration
You use the rcapadm command to configure the resource capping daemon. You can
perform the following actions:
Set the threshold value for cap enforcement
Set intervals for the operations performed by rcapd
Enable or disable resource capping
Display the current status of the configured resource capping daemon
To configure the daemon, you must have superuser privileges or have the Process
Management profile in your list of profiles. The System Administrator role includes the
Process Management profile.
Configuration changes can be incorporated into rcapd according to the configuration interval (see
rcapd Operation Intervals) or on demand by sending a SIGHUP (see the kill(1) man page).
If used without arguments, rcapadm displays the current status of the resource capping
daemon if it has been configured.
The following subsections discuss cap enforcement, cap values, and rcapd operation intervals.
Using the Resource Capping Daemon on a System With Zones Installed
You can control resident set size (RSS) usage of a zone by
setting the capped-memory resource when you configure the zone. For more information, see
Physical Memory Control and the capped-memory Resource. You can run rcapd in a zone, including the global zone, to
enforce memory caps on projects in that zone.
If you are using rcapd on a zone to regulate physical memory consumption
by processes running in projects that have resource caps defined, you must configure
the daemon in those zones.
When choosing memory caps for applications in different zones, you generally do not
have to consider that the applications reside in different zones. The exception is
per-zone services. Per-zone services consume memory. This memory consumption must be considered when
determining the amount of physical memory for a system, as well as memory
caps.
Note - You cannot run rcapd in an lx branded zone. However, you can use
the daemon from the global zone to cap memory in the branded zone.
Memory Cap Enforcement Threshold
The memory cap enforcement threshold is the percentage of physical memory utilization on the system that
triggers cap enforcement. When the system exceeds this utilization, caps are enforced. The
physical memory used by applications and the kernel is included in this percentage.
The percentage of utilization determines the way in which memory caps are enforced.
To enforce caps, memory can be paged out from project workloads.
Memory can be paged out to reduce the size of the portion of memory that is over its cap for a given workload.
Memory can be paged out to reduce the proportion of physical memory used that is over the memory cap enforcement threshold on the system.
A workload is permitted to use physical memory up to its cap.
A workload can use additional memory as long as the system's memory utilization
stays below the memory cap enforcement threshold.
To set the value for cap enforcement, see How to Set the Memory Cap Enforcement Threshold.
Determining Cap Values
If a project cap is set too low, there might not be
enough memory for the workload to proceed effectively under normal conditions. The paging
that occurs because the workload requires more memory has a negative effect on system
performance.
Projects that have caps set too high can consume available physical memory before
their caps are exceeded. In this case, physical memory is effectively managed by
the kernel and not by rcapd.
In determining caps on projects, consider these factors.
- Impact on I/O system
The daemon can attempt to reduce a project workload's physical memory usage whenever the sampled usage exceeds the project's cap. During cap enforcement, the swap devices and other devices that contain files that the workload has mapped are used. The performance of the swap devices is a critical factor in determining the performance of a workload that routinely exceeds its cap. The execution of the workload is similar to running it on a machine with the same amount of physical memory as the workload's cap.
- Impact on CPU usage
The daemon's CPU usage varies with the number of processes in the project workloads it is capping and the sizes of the workloads' address spaces.
A small portion of the daemon's CPU time is spent sampling the usage of each workload. Adding processes to workloads increases the time spent sampling usage.
Another portion of the daemon's CPU time is spent enforcing caps when they are exceeded. The time spent is proportional to the amount of virtual memory involved. CPU time spent increases or decreases in response to corresponding changes in the total size of a workload's address space. This information is reported in the vm column of rcapstat output. See Monitoring Resource Utilization With rcapstat and the rcapstat(1) man page for more information.
- Reporting on shared memory
The rcapd daemon reports the RSS of pages of memory that are shared with other processes or mapped multiple times within the same process as a reasonably accurate estimate. If processes in different projects share the same memory, then that memory will be counted towards the RSS total for all projects sharing the memory.
The estimate is usable with workloads such as databases, which utilize shared memory extensively. For database workloads, you can also sample a project's regular usage to determine a suitable initial cap value by using output from the -J or -Z options of the prstat command. For more information, see the prstat(1M) man page.
rcapd Operation Intervals
You can tune the intervals for the periodic operations performed by rcapd.
All intervals are specified in seconds. The rcapd operations and their default interval
values are described in the following table.
Operation |
Default Interval Value in Seconds |
Description |
scan |
15 |
Number of
seconds between scans for processes that have joined or left a project workload.
Minimum value is 1 second. |
sample |
5 |
Number of seconds between samplings of resident set
size and subsequent cap enforcements. Minimum value is 1 second. |
report |
5 |
Number of seconds
between updates to paging statistics. If set to 0, statistics are not
updated, and output from rcapstat is not current. |
config |
60 |
Number of seconds between reconfigurations. In
a reconfiguration event, rcapadm reads the configuration file for updates, and scans
the project database for new or revised project caps. Sending a SIGHUP
to rcapd causes an immediate reconfiguration. |
To tune intervals, see How to Set Operation Intervals.
Determining rcapd Scan Intervals
The scan interval controls how often rcapd looks for new processes. On
systems with many processes running, the scan through the list takes more time,
so it might be preferable to lengthen the interval in order to reduce
the overall CPU time spent. However, the scan interval also represents the minimum
amount of time that a process must exist to be attributed to a
capped workload. If there are workloads that run many short-lived processes, rcapd might
not attribute the processes to a workload if the scan interval is lengthened.
Determining Sample Intervals
The sample interval configured with rcapadm is the shortest amount of time
rcapd waits between sampling a workload's usage and enforcing the cap if it
is exceeded. If you reduce this interval, rcapd will, under most conditions, enforce caps
more frequently, possibly resulting in increased I/O due to paging. However, a shorter
sample interval can also lessen the impact that a sudden increase in
a particular workload's physical memory usage might have on other workloads. The window
between samplings, in which the workload can consume memory unhindered and possibly take
memory from other capped workloads, is narrowed.
If the sample interval specified to rcapstat is shorter than the interval specified
to rcapd with rcapadm, the output for some intervals can be zero. This
situation occurs because rcapd does not update statistics more frequently than the
interval specified with rcapadm. The interval specified with rcapadm is independent of the
sampling interval used by rcapstat.