在Linux下查看分析内存使用情况

0    404    2

Tags:

👉 本文共约15118个字,系统预计阅读时间或需57分钟。

简介

在 Linux 中,内存使用分析对于确保系统有足够的资源来运行其进程非常重要。有几种工具可以帮助分析 Linux 中的内存使用情况,包括 top、free、vmstat 和 smem。

更详细的内存分析工具之一是 smem,它可以提供有关每个进程和每个用户的内存使用情况的信息。使用 smem 的一些优势包括能够查看进程的大小比例、共享库的大小比例以及所有其他映射的大小比例。

/proc/meminfo 是 Linux 操作系统中的一个文件,提供有关系统内存使用情况的信息。它包含几个字段,提供有关系统内存使用情况的信息,包括 MemFree(表示可供使用的空闲内存量)和 MemAvailable(表示可供系统使用的内存量)。要确定 Linux 系统的内存可用性,建议查看 MemAvailable,因为它可以更准确地反映系统的内存使用情况。

在Linux操作系统中,OOM(Out of Memory)Killer是一种在系统内存不足时自动杀死进程的机制。当系统的可用内存和交换空间耗尽时,将触发 OOM Killer。然后,OOM Killer 根据进程的内存使用情况和进程的优先级等各种因素选择要杀死的进程。

总之,分析 Linux 中的内存使用情况对于确保系统有足够的资源来运行其进程非常重要。有多种工具可用于分析内存使用情况,包括 top、free、vmstat 和 smem。其中,smem 是一个更详细的内存分析工具,它提供有关每个进程和每个用户的内存使用情况的信息。要确定 Linux 系统的内存可用性,建议查看 /proc/meminfo 文件中的 MemAvailable 字段。OOM Killer 是 Linux 操作系统中的一种机制,可在系统内存不足时自动杀死进程。

Linux内存总览图

在Linux下查看分析内存使用情况

该图很好的描述了OS内存的使用和分配等详细信息。

linux系统下查看某个进程内存使用量

内存查看命令

常用的工具来分析 Linux 内存使用情况是 freetop

free 命令显示的是系统的内存使用情况,包括交换区和物理内存。

top 命令提供实时的系统进程和资源监控信息,也能查看内存使用情况。

此外,还有 htop 这样的交互式命令行工具,它比 top 更加友好和易于使用。

如果想要更详细的分析 Linux 内存使用情况,还可以使用以下工具:

1.vmstat:报告虚拟内存状态。

2.sar:系统分析报告工具,可以报告内存和交换区使用情况。

3.smem:一个分析进程内存使用情况的工具。

4.pmap:一个报告进程内存映射的工具。

5./proc/meminfo:报告内存的统计信息,通过读取该文件可以获取系统的内存使用情况。

以上工具都可以帮助更详细地了解 Linux 的内存使用情况,选择使用哪个工具取决于你的具体需求。

介绍

Linux下查看某一个进程所占用的内存,首先可以通过ps命令找到进程id,比如 ps -ef | grep kafka 可以看到kafka这个程序的进程id

  在Linux下查看分析内存使用情况

  可以看到是2913,现在可以使用如下命令查看内存:

在Linux下查看分析内存使用情况

  这样可以动态实时的看到CPU和内存的占用率,然后按q键回到命令行

这里通过top -p 2913也可以简单计算占用内存的大小:

7401952 KB * 0.127 = 940047.904 KB = 918MB 约等于RES列943236KB

在top命令中,

按 P 表示按cpu排序,默认也是按cpu排序

按M 表示按占用内存排序

top -u www 只显示www用户的进程

也可直接使用ps命令查看: ps -aux | grep kafka

  在Linux下查看分析内存使用情况

  第一个标注的地方是CPU和内存占用率,第6列的943100是物理内存使用量,单位是k,此时kafka大约占用920M内存

  还可以查看进程的status文件: cat /proc/2913/status

  在Linux下查看分析内存使用情况

  VmRSS对应的值就是物理内存占用,大约为920M和刚才一致

  另外还可以通过 top 命令动态查看内存占用

  通过: ps aux | sort -k4,4nr | head -n 10 查看内存占用前10名的程序

一些指标解释

top的结果

PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称

ps的结果

1)USER: 行程拥有者
2)PID: 进程的ID
3)%CPU: 占用的 CPU 使用率
4)%MEM: 占用的记忆体使用率
5)VSZ: 占用的虚拟记忆体大小
6)RSS: 占用的记忆体大小
7)TTY: 终端的次要装置号码 (minor device number of tty)
8)STAT: 该行程的状态:
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内
9)START: 行程开始时间
10)TIME: 执行的时间
11)COMMAND:所执行的指令

cat /proc/2913/status的结果:

VmSize: 虚拟内存大小。 整个进程使用虚拟内存大小,是VmLib, VmExe, VmData, 和 VmStk的总和。占所有虚拟内存分配(文件映射,共享内存,堆内存,任何内存)的份额,并且几乎在每次分配新内存时都会增长。几乎,因为如果在数据段中用新的堆内存分配代替了释放的旧分配,则不会分配新的虚拟内存。每当释放虚拟分配时,它都会减少。VmPeak跟踪的最大值VmSize-只能随时间增加。
VmLck: 虚拟内存锁。进程当前使用的并且加锁的虚拟内存总数
VmRSS: 虚拟内存驻留集合大小。这是驻留在物理内存的一部分。它没有交换到硬盘。它包括代码,数据和栈。随着访问内存的增加而增加,随着将页面调出到交换设备的次数减少。
VmData: 虚拟内存数据。堆使用的虚拟内存。随着使用堆的数据段部分而增长。由于当前的堆分配器会保留释放的内存,以防将来的分配需要它,它几乎永远不会收缩。
VmStk: 虚拟内存栈。栈使用的虚拟内存
VmExe: 可执行的虚拟内存,可执行的和静态链接库所使用的虚拟内存
VmLib: 虚拟内存库,动态链接库所使用的虚拟内存

VmPeak代表当前进程运行过程中占用内存的峰值.
VmSize代表虚拟内存总大小
VmLck代表进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘.
VmHWM是程序得到分配到物理内存的峰值.
VmRSS是程序现在使用的物理内存.
VmData:表示进程数据段的大小.
VmStk:表示进程堆栈段的大小.
VmExe:表示进程代码的大小.
VmLib:表示进程所使用LIB库的大小.
VmPTE:占用的页表的大小.
VmSwap:进程占用Swap的大小.
Threads:表示当前进程组的线程数量.
SigPnd:屏蔽位,存储了该线程的待处理信号,等同于线程的PENDING信号.
ShnPnd:屏蔽位,存储了该线程组的待处理信号.等同于进程组的PENDING信号.
SigBlk:存放被阻塞的信号,等同于BLOCKED信号.
SigIgn:存放被忽略的信号,等同于IGNORED信号.
SigCgt:存放捕获的信号,等同于CAUGHT信号.
CapEff:当一个进程要进行某个特权操作时,操作系统会检查cap_effective的对应位是否有效,而不再是检查进程的有效UID是否为0.
CapPrm:表示进程能够使用的能力,在cap_permitted中可以包含cap_effective中没有的能力,这些能力是被进程自己临时放弃的,也可以说cap_effective是cap_permitted的一个子集.
CapInh:表示能够被当前进程执行的程序继承的能力.
CapBnd:是系统的边界能力,我们无法改变它.
Cpus_allowed:3指出该进程可以使用CPU的亲和性掩码,因为我们指定为两块CPU,所以这里就是3,如果该进程指定为4个CPU(如果有话),这里就是F(1111).
Cpus_allowed_list:0-1指出该进程可以使用CPU的列表,这里是0-1.
voluntary_ctxt_switches表示进程主动切换的次数.
nonvoluntary_ctxt_switches表示进程被动切换的次数.

查看Linux系统内存常用命令

free(推荐)

free命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。参考:https://www.xmmup.com/linux-free-minglingxiafreeheavailablequbie.html

The free command is a quick and easy way to get an overview of memory usage gleaned from /proc/meminfo. It shows a snapshot of total/free physical memory and swap space of the system, as well as used/free buffer space in the kernel.

在Linux下查看分析内存使用情况

1. free 命令语法:

free 命令选项:

2. free 命令实例

v3.2.8

在Linux下查看分析内存使用情况

v3.3.10

在Linux下查看分析内存使用情况

下面先解释一下输出的内容:

内容含义
Mem行(第二行)是内存的使用情况
Swap行(第三行)是交换空间的使用情况
total总可用物理内存。一般是总物理内存除去一些预留的和操作系统本身的内存占用,是操作系统可以支配的内存大小。这个在v3.2.8和v3.3.10一样。这个值是/proc/meminfo中MemTotal的值。
used列显示已经被使用的物理内存和交换空间。在v3.2.8,这个值是(total - free)得出来的。可以说是系统已经被系统分配,但是实际并不一定正在被真正的使用,其空间可以被回收再分配的。在v3.3.10,这个值是(total - free - cache - buffers)得出来的,是真正目前正在被使用的内存。
free系统还未使用的物理内存。这个值是/proc/meminfo中MemFree的值
shared共享内存的空间。这个值是/proc/meminfo中Shmem的值
buff/cache列显示被 buffer 和 cache 使用的物理内存大小
availablev3.3.10中的项。看起来这个值是可以使用的内存,不过(available + used) < total,也就是available < (free + cache + buffers)。而在v3.2.8中(free + cache + buffers)是一般认为的可用内存,既然在新版本中有这个available数据,应该是更准确的吧。毕竟并不是所有的未使用的内存就一定是可用的。这个值是取的/proc/meminfo中MemAvailable的值,如果meminfo中没有这个值,会依据meminfo中的Active(file),Inactive(file),MemFree,SReclaimable等值计算一个。
-/+ buffers/cachev3.2.8有这一行,v3.3.10 没有。其中,used 这一项是(used - buffers - cached)的值,即(total - free - buffers - cached)的值,是真正在使用的内存的值。free 这一项是(free + buffers + cached)的值,是真正未使用的内存的值。个人觉得有 -/+ buffers/cache,这一栏看的挺习惯。。不过新版本v3.3.10的used更明确。相信有不少人和我一样,刚看到v3.2.8里面的used占了这么多内存的时候,有点摸不着头脑。

/proc/meminfo(推荐)

查看RAM使用情况最简单的方法是通过 /proc/meminfo。这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示。/proc/meminfo列出了所有你想了解的内存的使用情况。

进程的内存使用信息也可以通过 /proc/<pid>/statm/proc/<pid>/status 来查看。

The simpliest method to check RAM usage is via /proc/meminfo. This dynamically updated virtual file is actually the source of information displayed by many other memory related tools such as free, top and ps tools. From the amount of available/free physical memory to the amount of buffer waiting to be or being written back to disk, /proc/meminfo has everything you want to know about system memory usage. Process-specific memory information is also available from /proc/<pid>/statm and /proc/<pid>/status

用途:用于从/proc文件系统中提取与内存相关的信息。这些文件包含有 系统和内核的内部信息。其实 free 命令中的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观。

1. 查看方法:

2. 实例及信息解释

  1. 注意这个文件显示的单位是kB而不是KB,1kB=1000B,但是实际上应该是KB,1KB=1024B
  2. 还可以使用命令 less /proc/meminfo 直接读取该文件。通过使用 less 命令,可以在长长的输出中向上和向下滚动,找到你需要的内容。

从中我们可以很清晰明了的看出内存中的各种指标情况,例如 MemFree的空闲内存和SwapFree中的交换内存。

ps_mem(推荐)

同一类进程占用,每个进程占用

在Linux下查看分析内存使用情况

smem(推荐)

更多请参考:https://www.xmmup.com/linuxneicunzhuangtaijiancegongjuzhismemmingling.html

smem命令允许你统计基于/proc信息的不同进程和用户的内存使用情况。内存使用情况的分析可以导出图表(如条形图和饼图)。

smem 是一个命令行工具,它用于分析进程的内存使用情况。它通过读取系统的内存使用统计信息,然后为每个进程生成一个报告,报告的内容包括该进程使用的物理内存和共享内存。

与其他内存分析工具相比,smem 的优点在于:

1.它分析进程内存使用情况,而不是系统内存使用情况。

2.它报告每个进程占用的内存量,包括物理内存和共享内存。

3.它可以为每个进程生成详细的内存使用报告,方便比较不同进程的内存使用情况。

通过使用 smem,你可以了解每个进程对系统内存的使用情况,并且可以识别那些进程占用了大量的内存。这可以帮助你优化系统的内存使用情况,并且避免内存不足的问题。

安装:

运行 smem:在终端中输入 smem 命令,即可生成内存使用报告:

在上面的例子中,smem 生成了一个内存使用报告,报告中包括了每个进程的内存使用量(单位为 KB)以及对应的命令。

以上例子展示了 smem 的基本用法,你还可以使用 smem 的各种选项来生成更详细的报告。更多细节可以通过 man smem 命令获得。

The smem command allows you to measure physical memory usage by different processes and users based on information available from /proc. It utilizes proportional set size (PSS) metric to accurately quantify effective memory usage of Linux processes. Memory usage analysis can be exported to graphical charts such as bar and pie graphs.

在Linux下查看分析内存使用情况

top(推荐)

top命令提供了实时的运行中的程序的资源使用统计。你可以根据内存的使用和大小来进行排序。

The top command offers a real-time view of running processes, along with various process-specific resource usage statistics. Memory related information includes %MEM (memory utilization percentage), VIRT (total amount of virtual memory used), SWAP (amount of swapped-out virtual memory), CODE (amount of physical memory allocated for code execution), DATA (amount of physical memory allocated to non-executable data), RES (total amount of physical memory used; CODE+DATA), and SHR (amount of memory potentially shared with other processes). You can sort the process list based on memory usage or size.

在Linux下查看分析内存使用情况

例如,这里的chrome进程,RES列是808796

用途:用于打印系统中的CPU和内存使用情况。输出结果中,可以很清晰的看出已用和可用内存的资源情况。top 最好的地方之一就是发现可能已经失控的服务的进程 ID 号(PID)。有了这些 PID,你可以对有问题的任务进行故障排除(或 kill)。

语法

参数说明:

举例

在Linux下查看分析内存使用情况第一行,任务队列信息,同 uptime 命令的执行结果

系统时间:02:19:10 运行时间:up 2:26 min, 当前登录用户:1 user 负载均衡(uptime) load average: 0.00, 0.06, 0.07 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

第二行,Tasks — 任务(进程)

总进程:229 total, 运行:1 running, 休眠:163 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie

第三行,cpu状态信息

0.7%us【user space】— 用户空间占用CPU的百分比。1.0%sy【sysctl】— 内核空间占用CPU的百分比。0.0%ni【】— 改变过优先级的进程占用CPU的百分比 97.9%id【idolt】— 空闲CPU百分比 0.3%wa【wait】— IO等待占用CPU的百分比 0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比 0.0%si【Software Interrupts】— 软中断占用CPU的百分比

第四行,内存状态

2017504 total, 653616 free, 1154200 used, 209688 buff/cache【缓存的内存量】

第五行,swap交换分区信息

998396 total, 771068 free, 227328 used. 635608 avail Mem

第七行以下:各进程(任务)的状态监控

PID — 进程id USER — 进程所有者 PR — 进程优先级 NI — nice值。负值表示高优先级,正值表示低优先级 VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR — 共享内存大小,单位kb S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 %CPU — 上次更新到现在的CPU时间占用百分比 %MEM — 进程使用的物理内存百分比 TIME+ — 进程使用的CPU时间总计,单位1/100秒 COMMAND — 进程名称(命令名/命令行)

常用实例

  • 显示进程信息

  • 显示完整命令

  • 以批处理模式显示程序信息

  • 以累积模式显示程序信息

  • 设置信息更新次数

//表示更新两次后终止更新显示

  • 设置信息更新时间

//表示更新周期为3秒

  • 显示指定的进程信息

//显示进程号为139的进程信息,CPU、内存占用率等

  • 显示更新十次后退出

vmstat

vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。参考:https://www.xmmup.com/linux-vmstatmingling.html

The vmstat command-line utility displays instantaneous and average statistics of various system activities covering CPU, memory, interrupts, and disk I/O. As for memory information, the command shows not only physical memory usage (e.g., tota/used memory and buffer/cache memory), but also virtual memory statistics (e.g., memory paged in/out, swapped in/out).

在Linux下查看分析内存使用情况

vmstat命令是最常见的Linux/Unix监控工具,用于查看系统的内存存储信息,是一个报告虚拟内存统计信息的小工具,属于sysstat包。

vmstat 命令报告包括:进程、内存、分页、阻塞 IO、中断、磁盘、CPU

可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。

这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。

1. 命令格式:

2. 举例

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:

2表示每个两秒采集一次服务器状态,1表示只采集一次。

实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如:在Linux下查看分析内存使用情况这表示vmstat每2秒采集数据,按下ctrl + c结束程序,这里采集了3次数据我就结束了程序。

类别项目含义说明
Procs**(进程)**r等待执行的任务数展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
B等待IO的进程数量
Memory(**内存**)swpd正在使用虚拟的内存大小,单位k
free空闲内存大小
buff已用的buff大小,对块设备的读写进行缓冲
cache已用的cache大小,文件系统的cache
inact非活跃内存大小,即被标明可回收的内存,区别于free和active具体含义见:概念补充(当使用-a选项时显示)
active活跃的内存大小具体含义见:概念补充(当使用-a选项时显示)
Swapsi每秒从交换区写入内存的大小(单位:kb/s)
so每秒从内存写到交换区的大小
IObi每秒读取的块数(读磁盘)块设备每秒接收的块数量,单位是block,这里的块设备是指系统上所有的磁盘和其他块设备,现在的Linux版本块的大小为1024bytes
bo每秒写入的块数(写磁盘)块设备每秒发送的块数量,单位是block
systemin每秒中断数,包括时钟中断这两个值越大,会看到由内核消耗的cpu时间sy会越多 秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目
cs每秒上下文切换数
CPU**(以百分比表示)**us用户进程执行消耗cpu时间(user time)us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了
sy系统进程消耗cpu时间(system time)sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足
Id空闲时间(包括IO等待时间)一般来说 us+sy+id=100
wa等待IO时间wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

3. 常见问题处理

常见问题及解决方法

  1. 如果r经常大于4,且id经常少于40,表示cpu的负荷很重。
  2. 如果pi,po长期不等于0,表示内存不足。
  3. 如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。
  • 1.如果在processes中运行的序列(process r)是连续的大于在系统中的CPU的个数表示系统现在运行比较慢,有多数的进程等待CPU。
  • 2.如果r的输出数大于系统中可用CPU个数的4倍的话,则系统面临着CPU短缺的问题,或者是CPU的速率过低,系统中有多数的进程在等待CPU,造成系统中进程运行过慢。
  • 3.如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us)系统则面临着CPU资源的短缺。

当发生以上问题的时候请先调整应用程序对CPU的占用情况.使得应用程序能够更有效的使用CPU.同时可以考虑增加更多的CPU. 关于CPU的使用情况还可以结合mpstat, ps aux top prstat –a等等一些相应的命令来综合考虑关于具体的CPU的使用情况,和那些进程在占用大量的CPU时间.一般情况下,应用程序的问题会比较大一些.比如一些sql语句不合理等等都会造成这样的现象.

4. 内存问题现象:

内存的瓶颈是由scan rate (sr)来决定的.scan rate是通过每秒的始终算法来进行页扫描的.如果scan rate(sr)连续的大于每秒200页则表示可能存在内存缺陷.同样的如果page项中的pi和po这两栏表示每秒页面的调入的页数和每秒调出的页数.如果该值经常为非零值,也有可能存在内存的瓶颈,当然,如果个别的时候不为0的话,属于正常的页面调度这个是虚拟内存的主要原理.

解决办法:

  • 1.调节applications & servers使得对内存和cache的使用更加有效.
  • 2.增加系统的内存.
  • 3.Implement priority paging in s in pre solaris 8 versions by adding line "set priority paging=1" in /etc/system. Remove this line if upgrading from Solaris 7 to 8 & retaining old /etc/system file.

关于内存的使用情况还可以结ps aux top prstat –a等等一些相应的命令来综合考虑关于具体的内存的使用情况,和那些进程在占用大量的内存.

一般情况下,如果内存的占用率比较高,但是,CPU的占用很低的时候,可以考虑是有很多的应用程序占用了内存没有释放,但是,并没有占用CPU时间,可以考虑应用程序,对于未占用CPU时间和一些后台的程序,释放内存的占用。

r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。

这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。

top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

5. 常见性能问题分析

IO/CPU/men连锁反应

内存不足

io瓶颈

CPU瓶颈:load,vmstat中r列

查看指定进程的内存

通过/proc/procid/status查看进程内存

pmap

RSS :占用的物理内存 113612KB

atop

atop命令是一个终端环境的监控命令。它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注。

The atop command is an ncurses-based interactive system and process monitor for terminal environments. It shows a dynamically-updated summary of system resources (CPU, memory, network, I/O, kernel), with colorized warnings in case of high system load. It also offers a top-like view of processes (or users) along with their resource usage, so that system admin can tell which processes or users are responsible for system load. Reported memory statistics include total/free memory, cached/buffer memory and committed virtual memory.

在Linux下查看分析内存使用情况

htop

htop命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。列表可以水平及垂直滚动。

The htop command is an ncurses-based interactive processor viewer which shows per-process memory usage in real time. It can report resident memory size (RSS), total program size in memory, library size, shared page size, and dirty page size for all running processes. You can scroll the (sorted) list of processes horizontally or vertically.

在Linux下查看分析内存使用情况

htop 它类似于 top 命令,但可以让你在垂直和水平方向上滚动,所以你可以看到系统上运行的所有进程,以及他们完整的命令行。

可以不用输入进程的 PID 就可以对此进程进行相关的操作 (killing, renicing)。

htop快照:在Linux下查看分析内存使用情况可以使用快捷键

第1行-第4行:显示CPU当前的运行负载,有几核就有几行,我的是1核

Mem:显示内存的使用情况,3887M大概是3.8G,此时的Mem不包含buffers和cached的内存,所以和free -m会不同Swp:显示交换空间的使用情况,交换空间是当内存不够和其中有一些长期不用的数据时,ubuntu会把这些暂时放到交换空间中

其他信息可以参考top命令说明。

PS:如果你终端没安装 htop,先通过指令来安装。sudo apt-get update sudo apt install htop

memstat

memstat是一个有效识别 executable(s), process(es) and shared libraries使用虚拟内存情况的命令。给定一个进程ID,memstat可以列出这个进程相关的可执行文件、数据和共享库。

The memstat utility is useful to identify which executable(s), process(es) and shared libraries are consuming virtual memory. Given a process ID, memstat identifies how much virtual memory is used by the process' associated executable, data, and shared libraries.

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
在Linux下查看分析内存使用情况后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章
验证码:
请关注本站微信公众号,回复“小麦苗博客”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部