Configuring host-level memory usage limits
Configure the memory usage limit for all processes created by PEM (for Windows) and the sub-PEM (for Linux®), and descendant processes on each compute host, so that the total memory (virtual memory for Windows, and physical memory for Linux) consumed by these processes does not exceed the total memory of the host.
Before you begin
There are no prerequisites for configuring host-memory usage limits on Windows hosts. However, if you are using Linux, note these requirements:
- When IBM® Spectrum Symphony is installed in simplified Workload Execution Mode (WEM), do not run the egosetsudoers.sh script; otherwise, when the sum of the memory usage of the processes in the host-level cgroup reaches its memory limit, the cgroup will only prevent memory allocation and not kill those processes.
- Memory and swap accounting must be enabled in the Linux kernel.
- Linux control groups (cgroups) must be installed on the compute host (see Control groups (cgroups) for host-level memory usage limits on Linux).
- Linux swap partitions must not be enabled on the host.
Procedure
The memory usage limit is set at the host level; therefore, you can configure different usage limits on each compute host.
What to do next
- Submit application workload.
- Verify that the host-level memory usage limit you set is
working, and note:
- For Windows, if the sum of the memory usage of PEM's child processes reaches the memory usage limit, the system will not allocate memory. Monitored processes are not terminated.
- For Linux, if the sum of the memory usage of the sub-PEM
and its child processes reaches the memory usage limit, some monitored processes are terminated by
the out-of-memory killer of the host-level cgroup. Check the /var/log/messages
log to see which processes were terminated:
grep -i 'killed process' /var/log/messages
If a process is terminated, application error handling might place the compute host in the blocked host list (see Host blocking).