linux查看CPU高速缓存(cache)信息

摘要:
四、程序内容在cache中的存储方式上图来自于深入理解计算机系统,接着我们上面的分析:cpu0的一级高速缓存中有64组,则s=log2=6,即“组索引“位为6位,同理“块偏移”b=6位,则以我的64位系统为例,”标记位“t=64-s-b=64-6-6=52位。同时我们可以进一步分析,根据上图DRAM地址与高速缓存地址的映射关系,可知:第一个64bytes在第0组,第二个64bytes在第1组,第64个64bytes在第63组,直到第65个64bytes才用回到第0组与第一个64bytes竞争高速缓存,

一、Linux下查看CPU Cache级数,每级大小

dmesg | grep cache

实例结果如下:

linux查看CPU高速缓存(cache)信息第1张

二、查看Cache的关联方式

/sys/devices/system/cpu/中查看相应的文件夹

如查看cpu0 的一级缓存中的有多少组,

$ cat /sys/devices/system/cpu/cpu0/cache/index0/number_of_sets
$64

如查看cpu0的一级缓存中一组中的行数

$cat /sys/devices/system/cpu/cpu0/cache/index0/ways_of_associativity
$8

三、查看cache_line的大小

上面以本人电脑的cpu一级缓存为例知道了cpu0的一级缓存的大小:32k,其包含64个(sets)组,每组有8(ways),则可以算出每一个way(cache_line)的大小 cache_line = 32*1024/(64*8)=64 bytes。当然我们也可以通过以下命令查出cache_line的大小

$ cat /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size

或者

$ cat /proc/cpuinfo

processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz
stepping : 3
cpu MHz : 3497.664
cache size : 8192 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt aes xsave avx lahf_lm abm ida arat tpr_shadow vnmi flexpriority ept vpid
bogomips : 6995.32
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual

知道了cpu的cache 信息,在编写高效程序时将所有帮助。

四、程序内容在cache中的存储方式

linux查看CPU高速缓存(cache)信息第2张

上图来自于深入理解计算机系统,接着我们上面的分析:cpu0的一级高速缓存中有64组,则s =log2(64)=6,即“组索引“位为6位,同理“块偏移” b=6位,则以我的64位系统为例,”标记位“t = 64 - s -b =64-6 -6=52 位。

同时我们可以进一步分析,根据上图DRAM地址与高速缓存地址的映射关系,可知:第一个64bytes在第0组,第二个64bytes在第1组,第64个64bytes在第63组,直到第65个64bytes才用回到第0组与第一个64bytes竞争高速缓存,

免责声明:文章转载自《linux查看CPU高速缓存(cache)信息》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue--axios发送请求(转)创建WebAPI文档的3个简单步骤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

BarTender安装常见问题集结

很多人在安装BarTender时,会出现各种安装程序信息警告提示,导致软件无法继续安装下去,那么针对这些Bartender安装问题我们要怎么正确解决呢?下面,小编将BarTender安装失败常见问题,给大家整合了一下,有需要的小伙伴可参考后对症下药。 BarTender未检测到IIS 问题分析: 安装BarTender时,同样选择了配套程序的安装,而PC...

Linux为普通用户挂载磁盘

问题 都知道mount/umount命令需要root权限 有时候希望将U盘挂载文件夹的所有者设为普通用户方便读写 解决 gnome 使用gnome的系统内置gio mount 挂载 $ gio mount -d /dev/sdb1 Mounted /dev/sdb1 at /media/ubuntu/5459-2B27 卸载 $ gio mount -u...

微信公众号如何使用域名直接调试本地开发环境代码的方案

 微信公众号,必须通过域名才能进行访问。很多人调试时,都是把代码打包放到服务器上来调试,发现问题本地修改,再次上传调试,这样效率非常低。 我们通过这样操作可以实现本地的直接调试: 首先公众号里设置好域名,验证域名所有者。 我们假设,域名为:http://wechat.hz300.com,npm run dev开启的本地代码调试服务为:http://loca...

linux sed 批量替换字符串

比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules` 解释一下:-i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 这个命令组合很强大,要注意备份文件。(1)...

linux下安装nginx(编译安装)及反向代理及负载均衡

首先卸载掉之前用yum命令下载的nginx yum remove nginx 安装nginx需要的依赖库 yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel re...

Linux解决安装包无法找到问题Unable to locate package rar

1:问题 在默认安装的Linux中有时候会找不到需要安装的软件包,那就需要更新了 例如在执行apt-get install xx的时候就报错了 E: Unable to locate package rar root@alyking:/usr/local/ucomsite# sudo apt-get install rarReading package l...