Linux查看cache信息

Introduction

原文: Linux查看cache信息 - FindHao

本文介紹了如何在linux下查看cache的信息,並進行簡單的分析。

unix設計哲學

一切皆文件

Linux也很好的繼承了這個理念。

cpu cache

我的cpu:

Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz

cpu文件

文件夾/sys/devices/system/cpu就是對cpu的文件映射。進入以後,隨便進一個cpu核,可以看到cache文件夾,tree以後:

.n├── index0n│ ├── coherency_line_sizen│ ├── leveln│ ├── number_of_setsn│ ├── physical_line_partitionn│ ├── shared_cpu_listn│ ├── shared_cpu_mapn│ ├── sizen│ ├── typen│ └── ways_of_associativityn├── index1n│ ├── coherency_line_size n│ ├── leveln│ ├── number_of_setsn│ ├── physical_line_partitionn│ ├── shared_cpu_listn│ ├── shared_cpu_mapn│ ├── sizen│ ├── typen│ └── ways_of_associativityn├── index2n│ ├── coherency_line_sizen...同上一個文件夾n│ └── ways_of_associativityn└── index3n ├── coherency_line_sizen...同上一個文件夾n └── ways_of_associativityn

文件解釋

文件表示內容表示內容(中)coherency_line_sizesize of each cache line usually representing the minimum amount of data that gets transferred from memorycache line大小(有的地方叫cache block)levelrepresents the hierarchy in the multi-level cachecache屬於第幾層number_of_setstotal number of sets, a set is a collection of cache lines sharing the same indexcache set的數量physical_line_partitionnumber of physical cache lines sharing the same cachetag一個tag對應幾個cache line(竟然還可以對應多個???看來了解的還不夠全面)sizeTotal size of the cache總大小typetype of the cache – data, inst or unifiedcache的類型:數據、指令、統一,一般商用cpu只有L1劃分了指令cache和數據cacheways_of_associativitynumber of ways in which a particular memory block can be placed in the cache幾路組相連shared_cpu_listshared_cpu_map

(由於知乎編寫格式原因,表格無法顯示,請查看原文Linux查看cache信息 - FindHao)

shared_cpu_list && shared_cpu_map

解釋一下L3 的shared_cpu_map內容的格式:

00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000fn

表面上看是2進位,其實是16進位表示,每個bit表示一個cpu,1個數字可以表示4個cpun截取0000000f的後4位,轉換為2進位表示

CPUid15-4忽略32100x000f的二進位表示…1111

這就表示L3是四個cpu共享的,cat shared_cpu_list:

0-3n

是0-3序號的cpu core。

組相連分析

針對L3的數據:nways_of_associativity: 12nsize: 6144K (Bytes)ncoherency_line_size: 64 (Bytes)nnumber_of_sets: 8192

驗證:

64*12*8192/1024 = 6144 KByten

Reference

玩轉CPU Topology

如何查看CPU的cache大小

Linux/include/linux/cacheinfo.h

CPU體系架構-Cache

理解cache


推薦閱讀:

HTTP 緩存機制一二三
緩存級數是否有上限?
在校學生一枚,面對高性能伺服器開發、分散式系統、緩存系統等等。該如何最快最好的提升自己的技術水平呢?
1G緩存的機械硬碟,拷貝文件是否只是前幾秒快一些?
如何設計網站的緩存?

TAG:Linux | 缓存 | 计算机体系架构 |