I agree to TechTarget’s Terms of Use, Privacy Policy, and the transfer of my information to the United States for processing to provide me with relevant information as described in our Privacy Policy.

Please check the box if you want to proceed.

I agree to my information being processed by TechTarget and its Partners to contact me via phone, email, or other means regarding information relevant to my professional interests. I may unsubscribe at any time.

Please check the box if you want to proceed.

By submitting my Email address I confirm that I have read and accepted the Terms of Use and Declaration of Consent.

types and how processes share them will help you optimize Linux memory usage.

More tips on Linux administration

Unlike Windows, where memory swap can slow programs down, Linux memory swap is advantageous, thanks to the way in which Linux analyzes processes' allocated memory page use. The Linux kernel runs a Least Recently Used algorithm to determine which memory pages need to be in RAM and which do not. In some cases, letting the Linux kernel swap faster can improve memory performance.

A program's process normally requests more virtual memory than it actually needs. In Linux's top program, requested virtual memory appears in the VIRT and resident memory (RSS) columns. When the process begins to do something with its allocated memory pages, the pages move to RAM, appearing as RSS. Monitoring Linux kernel memory usage allows administrators to keep only those memory pages that are needed frequently. Less frequently accessed pages can either be discarded by the kernel or swapped.

Processes on the Linux server use anonymous memory, which is related to code, as well as data-related file memory. Anonymous memory must always be directly available, so if there is pressure on the memory resources, pages that are marked as anonymous memory should be swapped.

Data memory is a different story. When a process reads data from a disk, it stays in the cache, allowing the process to serve data quickly the next time the data are requested. Under memory pressure, the kernel can simply discard data memory. There is no performance benefit of moving unused file memory to swap, so discarding it is a better choice.

The Linux kernel distinguishes between active and inactive memory when it determines which memory to discard or swap. If inactive memory hasn't been used recently, there is no harm in moving inactive memory to swap or discarding it. The /proc/meminfo file shows the difference between active memory and inactive memory for anonymous and file memory (see example 1).

Example 1. The difference between active memory and inactive memory from the Linux kernel.

[root@IAD ~]# less /proc/meminfo

MemTotal: 7971636 kB

MemFree: 2653648 kB

Buffers: 250868 kB

Cached: 2974052 kB

SwapCached: 0 kB

Active: 2530380 kB

Inactive: 2323604 kB

Active(anon): 1633532 kB

Inactive(anon): 125712 kB

Active(file): 896848 kB

Inactive(file): 2197892 kB

Unevictable: 0 kB

Mlocked: 0 kB

SwapTotal: 10059772 kB

SwapFree: 10059772 kB

Dirty: 132 kB

Writeback: 0 kB

AnonPages: 1629052 kB

Mapped: 162396 kB

Shmem: 130192 kB

Slab: 296332 kB

SReclaimable: 233344 kB

SUnreclaim: 62988 kB

In this example, there is a lot of active anonymous memory, but only little inactive anonymous memory. If the system is under memory pressure, the kernel can move its 125 MB of inactive anonymous memory to swap. It shouldn't swap any of the 1.6 GB of memory that has been flagged as active page memory, because that will degrade performance as memory pages constantly have to be moved between RAM and disk. If the amount of swap used is larger than the amount of inactive (anonymous) memory, you should add more RAM to optimize Linux memory usage.

For ideal Linux memory usage, the amount of swap that is actually used should not be more than the amount of inactive (anonymous) memory pages. The amount of active (file) memory is the amount of cached memory the kernel requires. Anything more than that won't improve server performance.

Inactive file memory is flagged to be discarded when the kernel requires more memory. Since the Linux kernel doesn't have anything better to do with it, inactive file memory is kept in cache. If the data is discarded, it does no harm.

Start the conversation

0 comments

Register

I agree to TechTarget’s Terms of Use, Privacy Policy, and the transfer of my information to the United States for processing to provide me with relevant information as described in our Privacy Policy.

Please check the box if you want to proceed.

I agree to my information being processed by TechTarget and its Partners to contact me via phone, email, or other means regarding information relevant to my professional interests. I may unsubscribe at any time.