Linux查看CPU Cache信息

Introduction

本文介紹了如何在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以後:

.├── index0│ ├── coherency_line_size│ ├── level│ ├── number_of_sets│ ├── physical_line_partition│ ├── shared_cpu_list│ ├── shared_cpu_map│ ├── size│ ├── type│ └── ways_of_associativity├── index1│ ├── coherency_line_size │ ├── level│ ├── number_of_sets│ ├── physical_line_partition│ ├── shared_cpu_list│ ├── shared_cpu_map│ ├── size│ ├── type│ └── ways_of_associativity├── index2│ ├── coherency_line_size...同上一個文件夾│ └── ways_of_associativity└── index3 ├── coherency_line_size...同上一個文件夾 └── ways_of_associativity

文件解釋

(知乎的編輯器,不管是複製還是直接markdown都不支持表格,建議參看原文Linux查看cache信息 - FindSpace)

文件表示內容表示內容(中)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

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,0000000f

表面上看是2進位,其實是16進位表示,每個bit表示一個cpu,1個數字可以表示4個cpu

截取0000000f的後4位,轉換為2進位表示

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

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

0-3

是0-3序號的cpu core。

組相連分析

針對L3的數據:

ways_of_associativity: 12

size: 6144K (Bytes)

coherency_line_size: 64 (Bytes)

number_of_sets: 8192

驗證:

64*12*8192/1024 = 6144 KByte

Reference

玩轉CPU Topology

如何查看CPU的cache大小

Linux/include/linux/cacheinfo.h

CPU體系架構-Cache

理解cache

知乎的編輯器支持有限,複製過來的表格格式丟失了,建議參看原文

原文地址: Linux查看cache信息 - FindSpace


推薦閱讀:

yum軟體版本過低如何解決?
搞定Linux Shell文本處理工具,看完這篇集錦就夠了
窮學生,求推薦一款價格便宜能較好學習嵌入式Linux的開發板?
網路編程(三):從libevent到事件通知機制
全棧工程師必備Linux 基礎

TAG:Linux | 缓存 | 中央处理器CPU |