lsmem(1) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | ENVIRONMENT | AUTHORS | SEE ALSO | REPORTING BUGS | AVAILABILITY

LSMEM(1)                      User Commands                      LSMEM(1)

NAME         top

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

SYNOPSIS         top

       lsmem [options]

DESCRIPTION         top

       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         top

       -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         top

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

AUTHORS         top

       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         top

       chmem(8)

REPORTING BUGS         top

       For bug reports, use the issue tracker
       <https://github.com/util-linux/util-linux/issues>.

AVAILABILITY         top

       The lsmem command is part of the util-linux package which can be
       downloaded from Linux Kernel Archive
       <https://www.kernel.org/pub/linux/utils/util-linux/>. This page is
       part of the util-linux (a random collection of Linux utilities)
       project. Information about the project can be found at 
       ⟨https://www.kernel.org/pub/linux/utils/util-linux/⟩. If you have a
       bug report for this manual page, send it to
       util-linux@vger.kernel.org. This page was obtained from the
       project's upstream Git repository
       ⟨git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git⟩ on
       2026-01-16. (At that time, the date of the most recent commit that
       was found in the repository was 2026-01-14.) If you discover any
       rendering problems in this HTML version of the page, or you
       believe there is a better or more up-to-date source for the page,
       or you have corrections or improvements to the information in this
       COLOPHON (which is not part of the original manual page), send a
       mail to man-pages@man7.org

util-linux 2.42-start-1036-e... 2025-12-04                       LSMEM(1)

Pages that refer to this page: chmem(8)