linux系统下top命令进行内存监控

今天进行压力测试,测试进行了两波后,发现使用top命令监控系统性能,mem中used很高:

一段时间甚至接近total

很疑惑到底为什么,开始怀疑是内存泄露,但是服务已经全部杀掉后used仍然保持很高。

查询了下linux下使用top命令进行监控的详细解释,网上对这个的解释很多很详细,实际上并非服务内存泄露的原因,而是linux内核对于内存的管理造成的:

1. linux中内核对于已经使用了的内存,当期被服务或应用释放掉后,未必会将其放在free中,而是可能将其放在buffers和cached中

2. top中显示的men中 used  free 实际上都是内核角度的内存分配情况  也就是虽然used 使用很高 但是实际上服务或者应用是可以使用buffers和cached的内存的

当top中看到的free不多了的时候,内核会从buffers和cached中吐一部分出来支援free

3. 可以使用 free -m 命令进行进一步的查看:

linux系统下top命令进行内存监控_第1张图片

图中可见:

buffer/cache 中的used 实际上才是实际被使用的内存大小,而其下的free  31360 是实际服务/应用可用的内存,mem与top中的mem是一样的,也就是mem中的free+buffers+cached才是buffer/cache中的 free

后续压测中也验证了这一点,当mem中free较多时,优先使用free的实际物理内存,buffers和cached基本不变,当free快要耗尽时,buffers和cached变小,free会增加一些。

当然,如果buffers和cached也耗尽了,系统就会使用swap虚拟内存。

 

综上,linux系统下进行top检测内存的使用情况,不能完全看mem中的used 和 free  还是需要结合 free -m  和实际的应用进行具体分析。

你可能感兴趣的:(linux系统学习)