如何查看Linux内存使用情况?free和vmstat命令内存分析技巧

free 和 vmstat,对吧?之前用的时候我也很困惑。

免费,2 02 2 年我在上海,当时看服务器的时候,一直用free-h。
“可用”是关键。
后来我意识到它并不是真的闲着,而是 Linux 试图帮助你加速。
如果太小,太大的话,肯定不行。
我记得有一次只有1 G可用,几乎用满了。
我心里一惊,赶紧加了内存。

vmstat 更加动态。
我尝试使用 vmstat1 来实时查看变化。
如果swpd继续增加,则说明内存不足,swap正在使用。
我记得2 02 2 年我在北京,一个项目正在进行中。
当我查看 vmstat 时,so 总是大于 0,bo 也很大。
我知道记忆无法容纳它。
此时,您可能需要检查程序是否存在内存泄漏,或者干脆添加更多内存。

所以free看总体情况,vmstat看变化。
如果可用性较低,swpd 会增加并因此大于 0,则内存确实有限。
但有时如果 buff/cache 比率很高并且系统足够快,那么这不是问题并且 Linux 很聪明。

仅此而已。
我说的可能有点令人困惑,但都是事实。

Linux 下查看内存使用情况方法总结

在Linux下检查内存使用情况非常重要。
方法有很多种,选一种然后使用即可。

我们来谈谈/proc/meminfo。
该文件实时更新内存信息。
例如,它有多少总内存、有多少空闲、有多少用作缓存以及交换分区的状态。
只需 cat /proc/meminfo。
有MemTotal、MemFree、Buffers、Cached、SwapTotal和SwapFree等字段,非常详细。

或者使用上面的工具,可以显示内存、CPU、网络等颜色。
按内存排序,查看哪个进程消耗最多,还可以查看历史数据。
开始是 sudo 在顶部。

free命令速度更快,一看就明白。
数据也来自/proc/meminfo,默认为KB,您可以使用-h 来获取概览。
Total是总量,used/free是有多少正在使用/有多少是空闲,alted/buff/cache是​​共享内存和缓存,available是可以启动的内存。

GNOME 系统监视器具有图形界面,可以查看内存和 CPU 以及内存使用趋势图。
启动是 gnome-system-monitor。

htop是top的改进版本,具有彩色显示和可见的内存细节。
RES是进程实际占用的物理内存,SHR是共享内存的大小,VIRT是总虚拟内存。
开头是htop。

KDESystemMonitor 与 GNOMESystemMonitor 功能类似,用于 KDE 环境。
启动是ksysguard。

memstat 必须指定进程 ID 才能查看与该进程关联的可执行文件的内存使用情况。
例如,memstat -p 1 2 3 4 显示 ID 为 1 2 3 4 的进程。
输出包括可执行路径、数据段和共享库内存使用情况。

nmon是一个综合工具,可以查看内存和CPUIO,适合长期监控。
启动nmon,按m键查看内存详细信息。

PS还可以查看进程内存,只需按内存排序即可。
例如ps aux --sort=-rss,%MEM是内存使用百分比,VSZ是总虚拟内存,RSS是实际物理内存使用情况。

smem 根据 /proc 信息查看进程和用户内存,还可以生成图表。
例如, sudo smem --pie-name "pss" 将输出 PSS 和当前占用的物理内存。

top 是一个旧工具,可以按内存对进程进行排序。
从顶部开始,按 M 键排序,并在 RES 和 SHR 列中查看内存详细信息。

vmstat可以查看系统的一般信息,包括CPU、内存和IO,适合分析内存瓶颈。
例如vmstat -s,totalmemory为总内存,used memory为已使用内存,swapin/out为读/写交换分区。

不过,方法有很多种。
使用 free-h 进行快速分析,使用 htop 或 smem 进行深入分析,使用 nmon 或 atop 进行长期监控。

linux查看内存使用情况

说实话,我在 Linux 系统上工作了很多年,每个人都有自己看待内存使用情况的方式。
更不用说,方法有很多,并且每种方法都有精彩的用例。

让我们采取简单的方法。
例如,当我早上醒来时,我想快速知道系统有多少内存,我就写 free -h 。
这个命令非常实用。
GB 和 MB 等易于理解的单位直接提供给您,无需手动传输。
我有一个朋友,每天都对cat/proc/meminfo的结果感到困惑,说那一串数字伤了他的大脑。
平心而论,这个文件是很多设备的信息来源,但直接看它就有点反人类了。

说到变量跟踪,我经常使用上面的。
启动后,雷达、扫描内存、CPU等这些东西都是实时的。
最令人惊奇的是它具有颜色突出显示,可以立即指示哪个部分的负载最高,从而使您免于看着屏幕和等待。
然而,对于初学者来说,顶部可能有点吓人。
屏幕上跳跃的数字和颜色花了我一些时间来适应。

如果你想看看是什么秘密地消耗了内存,htop 应该是你的最佳选择。
该对象界面清爽,色彩丰富,可以直接使用笔记进行排序。
上次我的服务器内存不足时,我使用 htop 查找运行数据的脚本。
这变成了一场记忆混乱。
我很害怕,赶紧改了代码。
并不像上面的那样只是等待更新。
您可以主动选择您想看到的流程。

说到图形设备,我认为带有 GNOME 或 KDE 的显示器最适合老年人。
一位用户告诉我,他的祖母就是这样使用 Linux 的,他发现这张图非常有趣。
坦率地说,虽然命令行很酷,但如果实际由老年人使用,视觉效果要好得多。

像 ps aux --sort-rss 这样的组合非常适合技术极客。
我有一个客户,从事嵌入式开发。
他特别喜欢使用 ps 和 memstat 来分析内存,这样他就可以了解每个进程的详细信息。
令人惊讶的是,有时数据可以定期存储和趋势分析它是绘制图表的脚本。

像nmon和vmstat一样,我通常在调试阶段使用它们。
例如,如果系统突然变慢,请使用 vmstat -s 快速扫描内存和交换状态,并使用 nmon 查看长期变化。
我的一个朋友使用 nmon 来查找内存泄漏问题。
原来,某位司机正在倒车并下车。

最后,让我们谈谈我的名字。
我对这些东西没有太多的了解,但是我明白他在说什么,而且特别适合用户级的内存分析。
例如,如果有人打开了一个巨大的进程并占满了内存,您可以使用 sudosmem -p 清楚地看到它。
我尝试过一次,信息还算详细,但说实话,让我有点头晕。

简而言之,这些工具就像菜刀。
你用刀来切苹果,用斧头来砍木头。
如果你想快速概览,free -h 就足够了;如果需要实时跟踪,atop或htop更合适。
如果你想深入挖掘,ps 和 smem 才是真正的。
当谈到图形工具时,这一切都取决于个人品味 - 不管怎样,当我看图表太久时,我往往会感到畏缩。