hana_shinのLinux技術ブログ

Linuxの技術情報を掲載しています。特にネットワークをメインに掲載していきます。

lscpuコマンドの使い方



1 lscpuコマンドとは?

lscpuコマンドは、CPUの数、スレッド数、コア数、ソケット数、およびNUMAノードなどの情報を表示するコマンドです。

2 検証環境

AlmaLinux版数は以下のとおりです。

[root@server ~]# cat /etc/redhat-release
AlmaLinux release 9.1 (Lime Lynx)

カーネル版数は以下のとおりです。

[root@server ~]# uname -r
5.14.0-162.6.1.el9_1.x86_64

3 パッケージのインストール方法

util-linuxパッケージをインストールします。

[root@server ~]# dnf -y install util-linux

lscpuコマンドの版数は以下のとおりです。

[root@server ~]# lscpu -V
lscpu from util-linux 2.37.4

4 オプション一覧

lscpuコマンドのオプション一覧は以下のとおりです。

[root@server ~]# lscpu -h

使い方:
 lscpu [オプション]

CPUアーキテクチャについての情報を表示します。

オプション:
 -a, --all               オンラインの CPU とオフラインの CPU を両方表示します (-e を指定した場合の既定値)
 -b, --online            オンラインの CPU のみを表示します (-p を指定した場合の既定値)
 -B, --bytes             print sizes in bytes rather than in human readable format
 -C, --caches[=<list>]   info about caches in extended readable format
 -c, --offline           オフラインの CPU のみを表示します
 -J, --json              use JSON for default or extended format
 -e, --extended[=<リスト>] 読みやすい拡張形式で表示します
 -p, --parse[=<list>]    プログラムなどで処理しやすい形式で表示します
 -s, --sysroot <dir>     指定したディレクトリをシステムルートとみなすようにします
 -x, --hex               CPU をリストではなく 16 進数のマスク形式で表示します
 -y, --physical          print physical instead of logical IDs
     --output-all        print all available columns for -e, -p or -C

 -h, --help              このヘルプを表示します
 -V, --version           バージョンを表示します

Available output columns for -e or -p:
-snip-

5 CPUに関する情報を表示する方法

lscpuコマンドを引数なしで実行すると、CPUに関する情報を表示することができます。

[root@server ~]# lscpu
アーキテクチャ:                        x86_64
  CPU 操作モード:                      32-bit, 64-bit
  Address sizes:                       45 bits physical, 48 bits virtual
  バイト順序:                          Little Endian
CPU:                                   4
  オンラインになっている CPU のリスト: 0-3
ベンダー ID:                           GenuineIntel
  BIOS Vendor ID:                      Red Hat
  モデル名:                            Intel Core Processor (Skylake, IBRS)
    BIOS Model name:                   RHEL 7.6.0 PC (i440FX + PIIX, 1996)
    CPU ファミリー:                    6
    モデル:                            94
    コアあたりのスレッド数:            1
    ソケットあたりのコア数:            1
    ソケット数:                        4
    ステッピング:                      3
    BogoMIPS:                          5616.01
    フラグ:                            fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mm
                                       x fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopolo
                                       gy cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic mov
                                       be popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dno
                                       wprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust
                                       bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsa
                                       ves arat umip md_clear arch_capabilities
Virtualization features:
  ハイパーバイザのベンダー:            KVM
  仮想化タイプ:                        完全仮想化
Caches (sum of all):
  L1d:                                 128 KiB (4 instances)
  L1i:                                 128 KiB (4 instances)
  L2:                                  16 MiB (4 instances)
  L3:                                  64 MiB (4 instances)
NUMA:
  NUMA ノード数:                       1
  NUMA ノード 0 CPU:                   0-3
Vulnerabilities:
  Itlb multihit:                       Not affected
  L1tf:                                Mitigation; PTE Inversion
  Mds:                                 Mitigation; Clear CPU buffers; SMT Host state unknown
  Meltdown:                            Mitigation; PTI
  Mmio stale data:                     Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
  Retbleed:                            Mitigation; IBRS
  Spec store bypass:                   Mitigation; Speculative Store Bypass disabled via prctl
  Spectre v1:                          Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:                          Mitigation; IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS Not affected
  Srbds:                               Unknown: Dependent on hypervisor status
  Tsx async abort:                     Not affected

6 CPUの状態を表示する方法

事前準備としてCPU0の状態をオフラインに変更しておきます。

CPU0の状態を確認します。CPU0はオンラインであることがわかります。

[root@server ~]# cat /sys/devices/system/cpu/cpu0/online
1

CPU0の状態をオフラインに変更します。

[root@server ~]# echo 0 > /sys/devices/system/cpu/cpu0/online

CPU0の状態を確認します。CPU0の状態がオフラインになったことがわかります。

[root@server ~]# cat /sys/devices/system/cpu/cpu0/online
0

6.1 オンライン/オフラインのCPUを表示する方法(-a)

-aはオンライン/オフラインのCPUを全て表示するオプションです。以下の例ではCPU0がオフライン、他のCPUはオンラインであことがわかります。

[root@server ~]# lscpu -ae
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
  0    -      -    - -                 no
  1    0      0    0 1:1:1:1          yes
  2    0      1    1 2:2:2:2          yes
  3    0      2    2 3:3:3:3          yes

6.2 オンラインのCPUを表示する方法(-b)

-bオプションは、オンラインのCPUのみを表示するオプションです。CPUの状態を確認すると、オンラインのCPU1、2、3が表示されていることが分かります。

[root@server ~]# lscpu -be
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
  1    0      0    0 1:1:1:1          yes
  2    0      1    1 2:2:2:2          yes
  3    0      2    2 3:3:3:3          yes

6.3 オフラインのCPUを表示する方法(-c)

-cオプションは、オフラインのCPUを表示するためのオプションです。CPUの状態を確認すると、オフラインのCPU0が表示されていることが分かります。

[root@server ~]# lscpu -ce
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
  0    -      -    - -                 no

CPU0の状態をオンラインに戻します。

[root@server ~]# echo 1 > /sys/devices/system/cpu/cpu0/online

CPUの状態を確認します。CPU0がオンラインになったことがわかります。

[root@server ~]# lscpu -ae
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
  0    0      0    0 0:0:0:0          yes
  1    0      1    1 1:1:1:1          yes
  2    0      2    2 2:2:2:2          yes
  3    0      3    3 3:3:3:3          yes

7 特定の情報を表示する方法(-p)

-pは指定したCPUの情報を表示するオプションです。指定できる情報として以下のものがあります。

Available output columns for -e or -p:
      BOGOMIPS  crude measurement of CPU speed
           CPU  論理 CPU 番号
          CORE  論理コア番号
        SOCKET  論理ソケット番号
       CLUSTER  logical cluster number
          NODE  論理 NUMA ノード番号
          BOOK  論理ブック番号
        DRAWER  logical drawer number
         CACHE  CPU 間でどのようにキャッシュが共有されるかの表示
  POLARIZATION  仮想ハードウェア上での CPU ディスパッチモード
       ADDRESS  CPU の物理アドレス
    CONFIGURED  ハイパーバイザが CPU を割り当てたかどうかの表示
        ONLINE  Linux が CPU を利用しているかどうかの表示
           MHZ  shows the currently MHz of the CPU
        MAXMHZ  CPU の最大 MHz を表示します
        MINMHZ  CPU の最小 MHz を表示します

論理CPUを表示してみます。

[root@server ~]# lscpu -p=CPU
# The following is the parsable format, which can be fed to other
# programs. Each different item in every column has an unique ID
# starting usually from zero.
# CPU
0
1
2
3

次に、CPUの論理番号とクロック数を表示してみます。

[root@server ~]# lscpu -p=CPU,MHZ
# The following is the parsable format, which can be fed to other
# programs. Each different item in every column has an unique ID
# starting usually from zero.
# CPU,Mhz
0,2808.006
1,2808.006
2,2808.006
3,2808.006

8 CPUのキャッシュの情報を表示する方法(-C)

-CはCPUのキャッシュ情報を表示するオプションです。

[root@server ~]# lscpu -C
NAME ONE-SIZE ALL-SIZE WAYS TYPE        LEVEL  SETS PHY-LINE COHERENCY-SIZE
L1d       32K     128K    8 Data            1    64        1             64
L1i       32K     128K    8 Instruction     1    64        1             64
L2         4M      16M   16 Unified         2  4096        1             64
L3        16M      64M   16 Unified         3 16384        1             64

-Cに指定できるオプションは以下のとおりです。

Available output columns for -C:
      ALL-SIZE  size of all system caches
         LEVEL  cache level
          NAME  cache name
      ONE-SIZE  size of one cache
          TYPE  キャッシュタイプ
          WAYS  ways of associativity
  ALLOC-POLICY  allocation policy
  WRITE-POLICY  write policy
      PHY-LINE  number of physical cache line per cache t
          SETS  number of sets in the cache; set lines has the same cache index
 COHERENCY-SIZE  minimum amount of data in bytes transferred from memory to cache

キャッシュの名前とタイプを表示してみます。

[root@server ~]# lscpu -C=NAME,TYPE
NAME TYPE
L1d  Data
L1i  Instruction
L2   Unified
L3   Unified

9 CPUの情報をJSON形式で表示する方法(-J)

-JはCPUの情報をJSON形式で表示するオプションです。

[root@server ~]# lscpu -J
{
   "lscpu": [
      {
         "field": "アーキテクチャ:",
         "data": "x86_64",
-snip-

10 物理 ID を表示する代わりに論理 ID を表示する方法(-y)

[root@server ~]# lscpu -y
アーキテクチャ:                        x86_64
  CPU 操作モード:                      32-bit, 64-bit
  Address sizes:                       45 bits physical, 48 bits virtual
  バイト順序:                          Little Endian
CPU:                                   4
  オンラインになっている CPU のリスト: 0-3
ベンダー ID:                           GenuineIntel
  BIOS Vendor ID:                      Red Hat
  モデル名:                            Intel Core Processor (Skylake, IBRS)
    BIOS Model name:                   RHEL 7.6.0 PC (i440FX + PIIX, 1996)
    CPU ファミリー:                    6
    モデル:                            94
    コアあたりのスレッド数:            1
    ソケットあたりのコア数:            1
    ソケット数:                        4
    ステッピング:                      3
    BogoMIPS:                          5616.00
    フラグ:                            fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2
                                        ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pc
                                       lmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f1
                                       6c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stib
                                       p fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xget
                                       bv1 xsaves arat umip md_clear arch_capabilities
Virtualization features:
  ハイパーバイザのベンダー:            KVM
  仮想化タイプ:                        完全仮想化
Caches (sum of all):
  L1d:                                 128 KiB (4 instances)
  L1i:                                 128 KiB (4 instances)
  L2:                                  16 MiB (4 instances)
  L3:                                  64 MiB (4 instances)
NUMA:
  NUMA ノード数:                       1
  NUMA ノード 0 CPU:                   0-3
Vulnerabilities:
  Itlb multihit:                       Not affected
  L1tf:                                Mitigation; PTE Inversion
  Mds:                                 Mitigation; Clear CPU buffers; SMT Host state unknown
  Meltdown:                            Mitigation; PTI
  Mmio stale data:                     Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
  Retbleed:                            Mitigation; IBRS
  Spec store bypass:                   Mitigation; Speculative Store Bypass disabled via prctl
  Spectre v1:                          Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:                          Mitigation; IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS Not affected
  Srbds:                               Unknown: Dependent on hypervisor status
  Tsx async abort:                     Not affected

Z 参考情報

私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ