LSMEM(1)

NAME
lsmem - list the ranges of available memory with their online status

SYNOPSIS

lsmem [options]

DESCRIPTION

The lsmem command lists the ranges of available memory with their online status. The listed memory blocks correspond to the memory block representation in sysfs. The command also shows the memory block size and the amount of memory in online and offline state.

The default output is compatible with original implementation from s390-tools, but it’s strongly recommended to avoid using default outputs in your scripts. Always explicitly define expected columns by using the --output option together with a columns list in environments where a stable output is required.

The lsmem command lists a new memory range always when the current memory block distinguish from the previous block by some output column. This default behavior is possible to override by the --split option (e.g., lsmem --split=ZONES). The special word "none" may be used to ignore all differences between memory blocks and to create as large as possible continuous ranges. The opposite semantic is --all to list individual memory blocks.

Note that some output columns may provide inaccurate information if a split policy forces lsmem to ignore differences in some attributes. For example if you merge removable and non-removable memory blocks to the one range than all the range will be marked as non-removable on lsmem output.

The supported columns are RANGE, SIZE, STATE, REMOVABLE, BLOCK, NODE, ZONES, CONFIGURED, MEMMAP-ON-MEMORY. RANGE The start and end physical address of the memory range.

SIZE
    The size of the memory range, representing the total amount of memory in that range.

STATE
    The current online status of the memory range. Common states include online, offline or transitional states.

BLOCK
    The specific memory block number.

NODE
    The NUMA (Non-Uniform Memory Access) node to which the memory block belongs.

ZONES
    The memory zones to which the blocks belongs, such as DMA, Normal, Movable.

CONFIGURED
    The configuration state of a memory block. Refer to chmem for details on configuring or deconfiguring memory blocks.

MEMMAP-ON-MEMORY
    The memmap-on-memory state of the memory block at configuration time. This setting indicates where memory hotplug stores its internal metadata (the struct pages array or memmap). If MEMMAP-ON-MEMORY is set to 1, the metadata is allocated directly from the newly added hotplugged memory, enabling hot-add operations even when the system is under high memory pressure. If set to 0, the memmap metadata is allocated from existing system memory.

Possible BLOCK, CONFIGURED, STATE, MEMMAP-ON-MEMORY states
BLOCK | STATE | CONFIGURED | MEMMAP-ON-MEMORY | Description
0 | online | yes | yes/no | The memory is configured with memmap-on-memory set to (1 or 0) and memory is currently online.
1 | offline | yes | yes/no | The memory is configured, but memory is offline.
2 | offline | no | yes/no | The memory is offline and deconfigured.

Not all columns are supported on all systems. If an unsupported column is specified, lsmem prints the column but does not provide any data for it. Additionally, lsmem may skip columns like CONFIGURED or MEMMAP-ON-MEMORY if these states are not relevant to the system’s architecture.

Use the --help option to see the columns description.

Memmap on memory parameter output displays the globally enabled memmap-on-memory setting for memory_hotplug. This is typically set on the kernel command line via memory_hotplug.memmap_on_memory.

OPTIONS

-a, --all
    List each individual memory block, instead of combining memory blocks with similar attributes.

-b, --bytes
    Print sizes in bytes rather than in human-readable form.

    By default, sizes are shown in units that are powers of 1024 bytes. The formal abbreviations for these units (KiB, MiB, GiB, ...) are further shortened to just their first letter: K, M, G, ....

-J, --json
    Use JSON output format.

-n, --noheadings
    Do not print a header line.

-o, --output list
    Specify which output columns to print. Use --help to obtain a list of all supported columns. To extend the default list of columns specify list in the format +list. For example, lsmem -o +NODE.

--output-all
    Output all available columns.

-P, --pairs
    Produce output in the form of key="value" pairs. All potentially unsafe value characters are hex-escaped (\x<code>).

-r, --raw
    Produce output in raw format. All potentially unsafe characters are hex-escaped (\x<code>).

-S, --split list
    Specify which columns are used to split memory blocks to ranges. The supported columns are STATE, REMOVABLE, NODE, ZONES, CONFIGURED, MEMMAP-ON-MEMORY or "none". The other columns are silently ignored. For more details see DESCRIPTION above.

-s, --sysroot directory
    Gather memory data for a Linux instance other than the instance from which the lsmem command is issued. The specified directory is the system root of the Linux instance to be inspected.

--summary[=when]
    This option controls summary lines output. The optional argument when can be never, always or only. If the when argument is omitted, it defaults to "only". The summary output is suppressed for --raw, --pairs and --json.

-h, --help
    Display help text and exit.

-V, --version
    Display version and exit.

ENVIRONMENT

LSMEM_COLUMNS=
    Specifies a comma-separated list of output columns to print. All columns listed in --help can be used.

AUTHORS

lsmem was originally written by Gerald Schaefer for s390-tools in Perl. The C version for util-linux was written by Clemens von Mann, Heiko Carstens and Karel Zak.

SEE ALSO

chmem(8)

REPORTING BUGS

For bug reports, use the

AVAILABILITY

The lsmem command is part of the util-linux package which can be downloaded from