CPUトポロジーを見てみた
目的
RHEL公式ドキュメントPerformance Tuning Guideを読んでいたら、CPUのトポロジーを出力するコマンドlstopo
が出てきた。実際に使ってみた。
CPUのトポロジーを見る方法
Performance Tuning Guideでは3つ紹介されていた。
- numactl
- lscpu
- lstopo
numactl
NUMA。いわゆるNon-Uniform Memory Access。ヌマ。複数CPUで近いメモリにデータを置きましょう、という考え方のハードウェアアーキテクチャ。numactl
自体はNUMAの情報のみ出力してくれる。
事前準備
numactl
パッケージが必要。
# yum install numactl
例
$ numactl --hardware available: 1 nodes (0) node 0 cpus: 0 node 0 size: 1023 MB node 0 free: 594 MB node distances: node 0 0: 10
我が家のVMは1CPUなので、何も面白くないですね・・・
lscpu
CPU数、コア数、スレッド数(Hyper-Threading)、キャッシュなどのCPUの基本情報を出力してくれる。
例
$ lscpu アーキテクチャ: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 コアあたりのスレッド数:1 ソケットあたりのコア数:1 Socket(s): 1 NUMAノード: 1 ベンダーID: GenuineIntel CPUファミリー: 6 モデル: 69 Model name: Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz ステッピング: 1 CPU MHz: 2599.998 BogoMIPS: 5199.99 ハイパーバイザーベンダー:KVM 仮想化タイプ: 完全仮想化 L1d キャッシュ: 32K L1i キャッシュ: 32K L2 キャッシュ: 256K L3 キャッシュ: 3072K NUMAノード 0 CPU: 0 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm avx2
あんま打つことなさそう。CPU型番を設計書見ずに知りたいときにいいかな。
lstopo
CPUのトポロジーに特化して出力。テキストだけではなく絵で表現することも可能。オプション次第でPDFなどにも出力できる。
前準備
hwloc
パッケージとhwloc-gui
パッケージが必要。
# yum install hwloc hwloc-gui
例(テキスト)
$ lstopo Machine (992MB) Package L#0 + L3 L#0 (3072KB) + L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 + PU L#0 (P#0) HostBridge L#0 PCI 8086:7111 Block(Removable Media Device) L#0 "sr0" PCI 80ee:beef GPU L#1 "card0" GPU L#2 "controlD64" PCI 8086:100e Net L#3 "enp0s3" PCI 8086:2829 Block(Disk) L#4 "sda"
例(絵)
$ lstopo --of ascii
トポロジーをざっと眺めるのにいい。ハードウェアの設計書って「CPUは型番hogehoge / キャッシュxxx /・・・」とか文字で残すだけなので、lstopo
を貼っつけた方がまだましだな。