# lscpu

## 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 a terminal is subject to change
           and may be 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 produce an output table accept an optional _list_
           argument. This _list_ is a comma-separated series of column labels
           to limit the table to only the specified columns, arranged in the
           specified order. Use **--help** to see a list of valid column labels.
           The labels are case insensitive. 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 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, ....
    
           **-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**[**=**_list_]
               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 option string plus the
               equal sign (=) plus the _list_ may not contain any 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**.
    
           **-e** , **--extended**[**=**_list_]
               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 option string plus the
               equal sign (=) plus the _list_ may not contain any 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).
    
           **--hierarchic**[**=**_when_]
               Use subsections in summary output. For backward compatibility,
               the default is to use subsections only when output on a
               terminal, and to use 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**.
    
           **-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**.
    
           **--output-all**
               Output all available columns. This option must be combined
               with either **--extended** , **--parse** , or **--caches**.
    
           **-p** , **--parse**[**=**_list_]
               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 option string plus the
               equal sign (=) plus the _list_ may not contain any whitespace.
               Examples: **-p=cpu,online,mhz** or **--parse=cpu,online,mhz**.
    
               The default list of columns may be extended if list is
               specified in the format +list (e.g., lscpu -p=+MHZ).
    
           **-r** , **--raw**
               Produce output in its raw format. This option is only
               applicable for the **--extended** , **--parse** , and **--caches** outputs.
    
           **-s** , **--sysroot** _directory_
               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.
    
           **-h** , **--help**
               Display help text and exit.
    
           **-V** , **--version**
               Display version and exit.
    


## 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.
    


## 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/>. 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
           2025-08-11. (At that time, the date of the most recent commit that
           was found in the repository was 2025-08-05.) 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-521-ec46  2025-08-09                       _LSCPU_(1)
    


* * *