cpu缓存问题

为什么有cpu缓存?

  为了解决CPU运算速度与内存读写速度不匹配的矛盾,就出现了CPU缓存。

       CPU的运算速度要比内存读写速度快很多,这样会使CPU花费很长的时间等待数据的到来或把数据写入到内存中。

cpu的三级缓存:L1>L2>L3

  就像数据库缓存一样,获取数据时首先会在最快的缓存中找数据,如果缓存没有命中(Cache miss) 则往下一级找, 直到三级缓存都找不到时,那只有向内存要数据了。一次次地未命中,代表取数据消耗的时间越长

 

 

(一)查看方法:

方式1:

$ lscpu

L1d cache: 32K <span style="white-space:pre"> </span>(一级数据缓存)
L1i cache: 32K <span style="white-space:pre"> </span><span style="font-family: Arial, Helvetica, sans-serif;">(一级指令缓存)</span>
L2 cache: 256K <span style="white-space:pre"> </span>(二级缓存)
L3 cache: 8192K<span style="white-space:pre"> </span>(三级缓存)

方式2:

$ cat /proc/cpuinfo
cache size : 3072 KB

 那么cpu、内存、缓存的区别是什么:

缓存cache,也叫高速缓存器

它存在于内存和cpu之间

cache:分为:L1,L2,L3

CPU可以从内存、cache和硬盘中读取数据,cache最快、内存次之、硬盘最慢。

读取速度:

  cache(L1>L2>L3)>内存>磁盘

 

 

1.linux查看占用cpu最高的进程

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

或者top (然后按下M,注意这里是大写)

 

2.linux查看占用内存最高的进程

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

或者top (然后按下P,注意这里是大写)

 

3.这里还有个问题。就是我们新买的服务器可能买的是4G内存,但是进到服务器内部看free是达不到4096的:

这是因为系统的内核以及bios是会占用部分内存资源的,另外系统启动有些必备进程例如systemd也会占用内存,当然造成内外内存大小不一致的主要原因还是内核和bios的问题:

 

这里使用以下命令去查看自己实例的正确指标:

sudo dmidecode -t memory | grep Size: | grep -v "No Module Installed"

 

free 读取的是/proc/meminfo的内容

posted @ 2021-10-26 14:48  西门一盏灯  阅读(346)  评论(0)    收藏  举报
1