- 1 lscpuコマンドとは?
- 2 検証環境
- 3 パッケージのインストール方法
- 4 オプション一覧
- 5 CPUに関する情報を表示する方法
- 6 CPUの状態を表示する方法
- 7 特定の情報を表示する方法(-p)
- 8 CPUのキャッシュの情報を表示する方法(-C)
- 9 CPUの情報をJSON形式で表示する方法(-J)
- 10 物理 ID を表示する代わりに論理 ID を表示する方法(-y)
- Y 参考図書
- Z 参考情報
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
Y 参考図書
TECHNICAL MASTER はじめてのAlmaLinux 9 & Rocky Linux 9 Linuxサーバエンジニア入門編
Z 参考情報
私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ