Memory management in modern computing systems is sophisticated and complex. This topic provides a high-level view of how memory is organized in a mordern OS.

Shared memory

Any process can reserve the memory used for sharing with multiple processes. A process that reserves 1 GiB (gibibyte) of memory for shared use reduces the total amount of memory available to the rest of the system, including the OS, by 1 GiB. For example, if a machine has 16 GiB and the process reserves 1 GiB for shared memory, then the machine must manage all its operations with the remaining 15 GiB.

The memory is used by any process that is accessing the database using the shared memory, if the database server is running on the same machine.

All the OS processes that wish to access the shared memory must first attach to the shared memory segments and then co-ordinate access with each other using an agreed upon locking mechanism. On Unix OS, this shared memory appears as SHR in the top report.

For the following reasons, you should ignore the amount of shared memory an OS process is accessing:
  • The memory is shared among multiple processes.
  • The amount of shared memory is established by the process reserving the memory and not by the PAS for OpenEdge agent.

Swap

The OS manages memory in chunks called pages, which are typically 4k or 8k in size.

When the total amount of memory in use by all the processes running on the machine approaches the limit of the physical memory available on the machine, the OS identifies the least-recently used pages of memory and writes their contents to swap. This action frees up the physical memory of the swapped pages for use by another process or even the same process.

A page fault is raised when the original owner of the swapped page references the memory in that page, which is then restored with the swapped pages. The OS uses a combination of dedicated swap RAM and disk to manage the swap needs of the machine.

If the PAS for OpenEdge agent has a lot of memory in swap, it means the following:
  • The machine, including all the processes, is using more physical memory than is physically available.
  • The PAS for OpenEdge agent process has memory allocated to it, which has not been used in a while, thus appearing as a candidate for swap.
To address these issues, you must consider the following:
  • Increase the physical memory on your machine.
  • Decrease the amount of memory in use by the application.
  • Take other actions like Using operating system commands (explained in the next section) and Memory leaks. You can also read Memory fragmentation and heap to understand how the OS allocates memory to a process in all sizes.

Unix operating system commands

On the Unix OS, executing the ABL OS-COMMAND, INPUT-THROUGH, or OUTPUT-THROUGH statements trigger the fork () and exec (). This trigger creates a new child process, bearing a memory footprint copy of the current PAS for OpenEdge agent process; often, these are small processes, but they end up having a large footprint. This new child process puts memory pressure on the machine as long it is active. Wherever possible, it is recommended to eliminate, consolidate, and minimize the use of OS-COMMAND, INPUT-THROUGH, and OUTPUT-THROUGH statements in the PAS for OpenEdge application.
Note: OS-COMMAND in Microsoft Windows does not consume the memory in the same way it is consumed in Unix OS.