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