首页 > 其他分享 >服务监控-来发眼里的cpu是什么样的

服务监控-来发眼里的cpu是什么样的

时间:2023-03-07 23:44:16浏览次数:58  
标签:缓存 top cache 本质 监控 使用率 来发 cpu

cpu

服务监控系列文章

服务监控系列视频

作为开发对cpu相关的疑问

1,在多核cpu上,为什么会有并发安全问题?
2,线上cpu使用率过高,该怎么办呢?
3,你知道如何提高使用率,达到让程序加速的目的吗?

概念模型

image.png

mmu是将虚拟地址转换为物理地址的一个硬件设备。
tlb 是对页表的一个快速缓存。

概念

cpu工作的本质

cpu工作的本质是为了计算,计算的本质是加减乘除,其中位运算逻辑是通过算术逻辑单元去完成。
控制逻辑单元是负责程序指令的存取,分析,以及执行。
寄存器和cpu一级二级三级缓存本质都是为了存储,存储的东西有可能是数据,有可能是指令。

cache line

cpu读取内存每次会预读一块数据,而这一块数据就是cache line,是cpu cache的最小的单位,在64位操作系统里,一个cache line 就能存64个字节。

从cpu结构看待并发加锁问题

由于cpu一,二级缓存的存在,在多cpu下,如何保证一条数据能安全的被多个cpu更新呢。加lock。

golang lock的本质

1,cpu会给总线加上总线锁,此时能让其他cpu不能对内存进行读写。加锁cpu的读写操作会直接写入到主存里。
2,会让其他cpu对该内存地址的缓存行失效。
所以解锁之后,其他cpu会重新从主存拿最新的数据,这样就保证了数据的并发安全。

程序变慢的本质,如何加速程序运行

cpu没有做事情或者cpu忙于做事情。

cpu 没有做事情

突增的流量不一定会导致cpu忙碌,但是可能会导致cpu利用率增加。如果突增的流量在做io密集型的任务,则可能导致系统过多的处于阻塞状态,等到线程变为就绪状态直到运行时,可能会造成接口响应时间过长。

解决办法

让cpu处于忙碌状态,提高cpu利用率,如果是在频繁的做接口调用,可做接口的内存缓存,消除掉网络调用带来的阻塞。

cpu 忙于做事情

cpu过于忙于做事情,判断是否是代码bug导致,不是代码bug而是由于流量导致,则需要分配更多的cpu。

线上cpu使用率过高,我该怎么办

从整体上把握系统cpu情况

cpu使用率

top 
%Cpu(s): 27.4 us,  3.7 sy,  0.0 ni, 68.7 id,  0.1 wa,  0.0 hi,  0.2 si,  0.0 st
us 用户态程序占用cpu  
sy 内核占用cpu 
id 空闲cpu
wa 等待cpu执行耗时
hi 硬中断耗时
si 软中断耗时

cpu 饱和度

top load average: 2.14, 2.54, 2.59

从进程角度看cpu

top 后输入大写P 可按cpu使用率大小排序,找到最消耗cpu的进程。

找到进程里最消耗cpu的代码段

golang pprof 工具可以看cpu消耗情况。

image.png

标签:缓存,top,cache,本质,监控,使用率,来发,cpu
From: https://www.cnblogs.com/hobbybear/p/17190242.html

相关文章