なんでもノート

t0m00m0tのノート。

CPUトポロジーを見てみた

目的

RHEL公式ドキュメントPerformance Tuning Guideを読んでいたら、CPUのトポロジーを出力するコマンドlstopoが出てきた。実際に使ってみた。

CPUのトポロジーを見る方法

Performance Tuning Guideでは3つ紹介されていた。

  1. numactl
  2. lscpu
  3. 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

f:id:t0m00m0t:20180307225606p:plain

トポロジーをざっと眺めるのにいい。ハードウェアの設計書って「CPUは型番hogehoge / キャッシュxxx /・・・」とか文字で残すだけなので、lstopoを貼っつけた方がまだましだな。