地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

Linux CPUキャッシュ

LinuxでのCPU階層キャッシュ

CPUのキャッシュは階層構造。 L1、L2はコアごとに、L3は1CPUで共有のキャッシュメモリ それぞれのサイズを取得するTIPS

結論

$ LANG=C lscpu | grep "^L[1-3]"
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K

で、見れる。

L1が二つに分かれてるのは知らなかった。 調べていくと

dはdata cache = データをキャッシュするためのキャッシュ iはinstruction cache = プロセッサによって実行される命令をキャッシュするためのキャッシュ

を表しているらしい。

さらに詳細を見るならgetconfコマンドが良さそう。(SIZE以外の見方はよくわからない。。) L4用のレコードもあるがL4まで詰むようなサーバはないのが少し残念。 インテル系のCPUだと結構なハイエンドだと積んでるみたい。

$ getconf -a | grep CACHE
LEVEL1_ICACHE_SIZE                 32768
LEVEL1_ICACHE_ASSOC                8
LEVEL1_ICACHE_LINESIZE             64
LEVEL1_DCACHE_SIZE                 32768
LEVEL1_DCACHE_ASSOC                8
LEVEL1_DCACHE_LINESIZE             64
LEVEL2_CACHE_SIZE                  262144
LEVEL2_CACHE_ASSOC                 8
LEVEL2_CACHE_LINESIZE              64
LEVEL3_CACHE_SIZE                  3145728
LEVEL3_CACHE_ASSOC                 12
LEVEL3_CACHE_LINESIZE              64
LEVEL4_CACHE_SIZE                  0
LEVEL4_CACHE_ASSOC                 0
LEVEL4_CACHE_LINESIZE              0