# lscpu - display information about the CPU architecture - man(1) - [phpMan]

> **TLDR:** Display information about the CPU architecture.
>
- Display information about all CPUs:
  `lscpu`
- Display information in a table:
  `lscpu {{-e|--extended}}`
- Display only information about online CPUs in a table:
  `lscpu {{-e|--extended}} {{-b|--online}}`
- Display only information about offline CPUs in a table:
  `lscpu {{-e|--extended}} {{-c|--offline}}`
- Display details about CPU caches:
  `lscpu {{-C|--caches}}`
- Display information in JSON format:
  `lscpu {{-J|--json}}`

*Source: tldr-pages*

---

[_LSCPU_(1)](https://www.chedong.com/phpMan.php/man/LSCPU/1/markdown)                                    User Commands                                   [_LSCPU_(1)](https://www.chedong.com/phpMan.php/man/LSCPU/1/markdown)

## NAME
       lscpu - display information about the CPU architecture

## SYNOPSIS
       **lscpu **[options]

## DESCRIPTION
       **lscpu **gathers CPU architecture information from _sysfs_, _/proc/cpuinfo_ and any applicable
       architecture-specific libraries (e.g. **librtas **on Powerpc). The command output can be
       optimized for parsing or for easy readability by humans. The information includes, for
       example, the number of CPUs, threads, cores, sockets, and Non-Uniform Memory Access (NUMA)
       nodes. There is also information about the CPU caches and cache sharing, family, model,
       bogoMIPS, byte order, and stepping.

       The default output formatting on terminal is subject to change and maybe optimized for better
       readability. The output for non-terminals (e.g., pipes) is never affected by this
       optimization and it is always in "Field: data\n" format. Use for example "**lscpu | less**" to
       see the default output without optimizations.

       In virtualized environments, the CPU architecture information displayed reflects the
       configuration of the guest operating system which is typically different from the physical
       (host) system. On architectures that support retrieving physical topology information, **lscpu**
       also displays the number of physical sockets, chips, cores in the host system.

       Options that result in an output table have a _list_ argument. Use this argument to customize
       the command output. Specify a comma-separated list of column labels to limit the output table
       to only the specified columns, arranged in the specified order. See **COLUMNS **for a list of
       valid column labels. The column labels are not case sensitive.

       Not all columns are supported on all architectures. If an unsupported column is specified,
       **lscpu **prints the column but does not provide any data for it.

       The cache sizes are reported as summary from all CPUs. The versions before v2.34 reported
       per-core sizes, but this output was confusing due to complicated CPUs topology and the way
       how caches are shared between CPUs. For more details about caches see **--cache**. Since version
       v2.37 **lscpu **follows cache IDs as provided by Linux kernel and it does not always start from
       zero.

## OPTIONS
### -a --all
           Include lines for online and offline CPUs in the output (default for **-e**). This option may
           only be specified together with option **-e **or **-p**.

### -B --bytes
           Print the sizes in bytes rather than in a human-readable format.

           By default, the unit, sizes are expressed in, is byte, and unit prefixes are in power of
           2^10 (1024). Abbreviations of symbols are exhibited truncated in order to reach a better
           readability, by exhibiting alone the first letter of them; examples: "1 KiB" and "1 MiB"
           are respectively exhibited as "1 K" and "1 M", then omitting on purpose the mention "iB",
           which is part of these abbreviations.

### -b --online
           Limit the output to online CPUs (default for **-p**). This option may only be specified
           together with option **-e **or **-p**.

### -C --caches
           Display details about CPU caches. For details about available information see **--help**
           output.

           If the _list_ argument is omitted, all columns for which data is available are included in
           the command output.

           When specifying the _list_ argument, the string of option, equal sign (=), and _list_ must
           not contain any blanks or other whitespace. Examples: **-C=NAME,ONE-SIZE **or
           **--caches=NAME,ONE-SIZE**.

           The default list of columns may be extended if list is specified in the format +list
           (e.g., **lscpu -C=+ALLOC-POLICY**).

### -c --offline
           Limit the output to offline CPUs. This option may only be specified together with option
           **-e **or **-p**.

       **--hierarchic**[=_when_]
           Use subsections in summary output. For backward compatibility, the default is to use
           subsections only when output on a terminal and flattened output on a non-terminal. The
           optional argument _when_ can be **never**, **always **or **auto**. If the _when_ argument is omitted, it
           defaults to "always".

### -e --extended
           Display the CPU information in human-readable format.

           If the _list_ argument is omitted, the default columns are included in the command output.
           The default output is subject to change.

           When specifying the _list_ argument, the string of option, equal sign (=), and _list_ must
           not contain any blanks or other whitespace. Examples: '**-e=cpu,node**' or
           '**--extended=cpu,node**'.

           The default list of columns may be extended if list is specified in the format +list
           (e.g., lscpu -e=+MHZ).

### -J --json
           Use JSON output format for the default summary or extended output (see **--extended**). For
           backward compatibility, JSON output follows the default summary behavior for
           non-terminals (e.g., pipes) where subsections are missing. See also **--hierarchic**.

### -p --parse
           Optimize the command output for easy parsing.

           If the _list_ argument is omitted, the command output is compatible with earlier versions
           of **lscpu**. In this compatible format, two commas are used to separate CPU cache columns.
           If no CPU caches are identified the cache column is omitted. If the _list_ argument is
           used, cache columns are separated with a colon (:).

           When specifying the _list_ argument, the string of option, equal sign (=), and _list_ must
           not contain any blanks or other whitespace. Examples: '**-p=cpu,node**' or
           '**--parse=cpu,node**'.

           The default list of columns may be extended if list is specified in the format +list
           (e.g., lscpu -p=+MHZ).

### -s --sysroot _
           Gather CPU data for a Linux instance other than the instance from which the **lscpu **command
           is issued. The specified _directory_ is the system root of the Linux instance to be
           inspected.

### -x --hex
           Use hexadecimal masks for CPU sets (for example "ff"). The default is to print the sets
           in list format (for example 0,1). Note that before version 2.30 the mask has been printed
           with 0x prefix.

### -y --physical
           Display physical IDs for all columns with topology elements (core, socket, etc.). Other
           than logical IDs, which are assigned by **lscpu**, physical IDs are platform-specific values
           that are provided by the kernel. Physical IDs are not necessarily unique and they might
           not be arranged sequentially. If the kernel could not retrieve a physical ID for an
           element **lscpu **prints the dash (-) character.

           The CPU logical numbers are not affected by this option.

### --output-all
           Output all available columns. This option must be combined with either **--extended**,
           **--parse **or **--caches**.

## BUGS
       The basic overview of CPU models is based on heuristics, taking into account differences such
       as CPU model names and implementer IDs. In some (unusual) cases, CPUs may differentiate in
       flags or BogoMIPS, but these differences are ignored in the lscpu overview.

       Sometimes in Xen Dom0 the kernel reports wrong data.

       On virtual hardware the number of cores per socket, etc. can be wrong.

## AUTHORS
       Cai Qian <<qcai@redhat.com>>, Karel Zak <<kzak@redhat.com>>, Heiko Carstens
       <<heiko.carstens@de.ibm.com>>

## SEE ALSO
       [**chcpu**(8)](https://www.chedong.com/phpMan.php/man/chcpu/8/markdown)

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

## AVAILABILITY
       The **lscpu **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/>>.

util-linux 2.39.3                            2026-03-06                                     [_LSCPU_(1)](https://www.chedong.com/phpMan.php/man/LSCPU/1/markdown)
