[Linux]常用性能分析命令

一、Linux 内存分析工具——free命令

        当服务器内存吃紧的时候,free命令是我们最常使用的内存分析工具。free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。

 1.命令格式

free [参数]

 可选参数:

参数 含义
-b 以Byte为单位显示内存使用情况
-k 以KB为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-g 以GB为单位显示内存使用情况
-h 根据内存大小自动选择合适的单位显示
-o 不显示缓冲区调节列
-s <间隔秒数> 持续观察内存使用状况
-c <显示次数>   和-s配合使用
-t 显示内存总和列
-V 显示版本信息

2.输出参数说明

下面列举一个常用的命令格式:

显示所有的内存信息,每隔两秒显示一次,一共显示两次

free -h -s 2 -c 2

输出显示如下:

[Linux]常用性能分析命令_第1张图片

Men表示具体的物理内存,从多个维度统计了物理内存的情况,每个维度的含义如下:

参数 含义
total 总计物理内存的大小
used 已使用的物理内存的大小
free 可用物理内存大小
shared 多个进程共享的内存总额
buffers 写入磁盘内存缓冲区的大小(经常进行磁盘IO的效率比较低,所以先将要写入磁盘的文件进行一定数量的缓冲,等缓冲数据到达一定大小是一次性写进磁盘,提升效率)
cached 从磁盘中读取内容的缓存大小(原理差不多)
available 估计有多少内存可用于启动新程序,不包括swap
-buffers/cache 表示被程序实实在在吃掉的内存
+buffers/cache 表示应用程序还可以可以申请的内存总数

上图中最后一行是swap分区的使用情况,swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件,所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时(所谓的吃紧,应该是指当释放了Cache和Buffer的内存,内存还是不够用),Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。 关于设置swap分区以及相关问题方法总结,可参考解决

[Linux]设置swap分区以及相关问题解决方法总结https://blog.csdn.net/GY_1202/article/details/129968922?spm=1001.2014.3001.5501

free参数和available参数的区别:

        free 是真正尚未被使用的物理内存数量。至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。

参考文章:Linux 内存分析工具——free命令https://www.cnblogs.com/54chensongxia/p/12330592.html

二、打印平均负载,系统运行时间——uptime命令

        uptime 用于显示系统总共运行了多长时间和系统的平均负载。uptime 命令会显示一行信息,依次为:当前时间、系统已经运行了多长时间、目前有多少用户登录、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。输出结果等同于 top 命令汇总区的第一行。

1.命令格式

下面列举一个常用的命令格式:

uptime [options]

选项说明:

参数 含义
-p --pretty 采用可读友好的格式输出系统已运行时长
-h --help 显示帮助信息
-s --since 以格式 yyyy-mm-dd HHSS format 输出系统启动时间
-V --version 显示版本信息

2.常用示例

查看系统运行时长与平均负载:6430bbd1d84b457c88bc4171582c2df9.png 

显示的信息依次为:当前时间、系统已经运行了多长时间(1小时49分钟)、目前有多少登录用户(2 users)、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载(load average: 0.00, 0.01, 0.05)。

②查看系统启动时间:

22205737bd9e4aa6aa521e8ce7ecaed8.png

③只输出系统运行时长:

89a434ceb04c40e990b0ded9a7252e55.png

3.拓展知识

系统平均负载

        系统平均负载指单位时间内,系统中处于可运行状态和不可中断状态的进程数,也就是平均活跃进程数,这与CPU 使用率没有直接关系。

        可运行状态的进程指正在使用 CPU 或正在等待使用 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。不可中断状态的进程指正在等待某些 I/O 的进程,即在 ps 命令中看到的 D 状态的进程。例如等待磁盘 I/O,当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。

        uptime 命令给出的三个时间段的平均负载并不是标准化的,因为系统中 CPU 核心数量是不定的。平均负载为 1 意味着拥有一个 CPU 核心的系统一直在忙碌,而在一个拥有 4 个 CPU 核心的系统上,意味着系统 75% 的时间是空闲的。所以,当系统平均负载除以 CPU 核心数小于等于 1表示系统没有出现过载的情况。最理想的情况是每个CPU 上都刚好运行一个进程,这样 CPU 就得到了充分的利用。

另外,读取文件 /proc/loadavg 可直接查看系统平均负载:

a628cd700bf44f18ac4405a11567d1ee.png

除了前 3 个数字表示系统平均负载外,后面的一个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程 ID。

②获取系统 CPU 核心数

使用 lscpu 命令查看:

[Linux]常用性能分析命令_第2张图片

或者直接访问文件 /proc/cpuinfo 获取 CPU 核心数:

cat /proc/cpuinfo | grep 'model name' | wc -l

③平均负载与 CPU 使用率的关系

        平均负载是指单位时间内,系统中处于可运行状态和不可中断状态的进程数,所以,他不仅包扩了正在使用CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计,和平均负载并不一定完全对应。比如:CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;I/O 密集型进程, 等待 I/O 也会导致平均负载升高,但是 CPU 使用率不一定很高,所以假如我们系统平均负载很高,但是 CPU 使用率不是很高,则需要考虑是否系统遇到了 IO 瓶颈,应该优化 IO 读写速度。

参考文章:Linux uptime 命令https://blog.csdn.net/K346K346/article/details/102420633

三、报告虚拟内存统计信息——vmstat命令

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

1.命令格式

        一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。若表示每隔5秒采集一次服务器状态,采集2次,则如下表示:

2acc5b1a6759414c83114bc4b2f23e81.png

vmstat命令常用的选项如下:

选项 含义
-a 显示活跃和非活跃内存
-f 显示从系统启动至今的fork数量
-m 显示slabinfo
-s 显示内存相关统计信息及多种系统活动数量
-d 显示磁盘相关的统计信息
-S 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(Byte),默认单位为K(1024 Bytes)
delay 刷新时间间隔,如果不指定,只显示一条结果
count 刷新次数,如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷

2.输出参数含义

类别 参数 含义 说明
procs r 运行队列中进程的数量,这些进程都是可运行状态,都在等待CPU的分配 当这个值超过了CPU数目,就会出现CPU瓶颈
b 被blocked(阻塞)的进程数,正在等待IO
memory swpd 使用的虚拟内存的大小,单位是KB 如果该值大于0,表示物理内存不足了,如果不是内存泄露的原因,需要考虑升级内存或者把耗内存的任务迁移到其它机器

free

可用的物理内存大小,单位是KB
buff 物理内存用来缓存读写操作的buffer大小,单位是KB
cache 物理内存用来缓存进程地址空间的cache大小,单位是KB
swap

si

每秒从SWAP(交换分区)读入到RAM(swap in)的大小,单位是KB 内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。内存是否够用不能只看空闲内存(free),还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响
so 每秒从RAM写出到SWAP(swap out)的大小,单位是KB
io

bi

每秒从文件系统或SWAP读入到RAM(blocks in)的块数,block(1KB磁盘块)为单位 随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大
bo 每秒从RAM写出到文件系统或SWAP(blocks out)的块数,block(1KB磁盘块)为单位
system

in

每秒的中断数,包括时钟中断 这两个值越大,会看到内核消耗的cpu时间sy会越多。cs表示每秒上下文切换的次数,调用系统函数以及进行线程的切换,都要进行上下文切换,这个值越小越好。上下文切换次数过多表示你的CPU大部分时间浪费在上下文切换中。
cs 系统每秒进行上下文切换的次数
cpu

us

用户空间占用CPU的百分比 us的值比较高时,说明用户进程消耗的CPU时间比较多,但是如果长期超过50%,那么我们就该考虑优化程序算法或者进行加速

sy

内核空间占用CPU的百分比 sy的值高时,说明系统内核消耗的CPU资源多
id CPU空闲的百分比 一般来说,us+sy+id=100
wa CPU等待IO的百分比 wa的值高时,说明CPU等待IO的时间比较多,这可能是大量的磁盘随机访问造成的,也有可能是磁盘出现瓶颈
st 来自于虚拟机偷取的CPU所占的百分比

参考文章:Linux vmstat命令详解https://www.cnblogs.com/baichunyu/p/15362733.html

注:可以主要考虑以下几点:

① 当前cs、in的变化趋势;

② sy+us的CPU占用和;

③ r就绪队列长度是否超过了CPU核心数。

四、报告处理器相关的统计信息——mpstat命令

       mpstat是 Multiprocessor Statistics的缩写,是实时系统监控工具。统计与CPU相关的信息,这些信息存放在/proc/stat文件中。mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;而类似的工具vmstat只能查看系统整体cpu情况。

1.命令格式

mpstat [-P {cpu|ALL}] [internal [count]]

 其中,各参数含义如下:

参数 含义
-P {cpu l ALL}

表示监控哪个CPU,例如mpstat -P 0    mpstat -P 3   mpstat -P ALL 

cpu在[0,cpu个数-1]中取值

internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
当没有参数时,mpstat只显示系统所有信息的平均值,有internal参数时,第一行的信息是自系统启动以来的平均信息,从第二行开始,输出为前一个internal时间段的平均信息

2.输出参数含义

①mpstat不带参数:

36774b68fb3545bb931a21a500abd611.png

 此时输出为从系统启动以来所有信息的平均值。

②mpstat带参数:

[Linux]常用性能分析命令_第3张图片

 此时表示每3秒产生1个关于处理器的统计数据报告,一共产生2个interval 的信息,然后再给出这2个interval的平均信息。

第一部分,输出首先显示了所有 CPU 的合计指标,然后显示了每个 CPU 各项的指标;第二部分,在结尾处显示所有 CPU 的平均值。

输出参数含义:

字段 含义
CPU 处理器ID
%usr 在internal时间段里,用户态的CPU时间(%),不包含 nice值为负的进程 usr/total*100
%nice 在internal时间段里,nice值为负的进程占用CPU的时间(%)  nice/total*100
%sys 在internal时间段里,内核态占用CPU的时间(%) system/total*100
%iowait 在internal时间段里,等待IO占用CPU的时间(%) iowait/total*100
%irq 在internal时间段里,硬中断占用CPU的时间(%) irq/total*100
%soft 在internal时间段里,软中断占用CPU的时间(%) softirq/total*100
%steal 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比 steal/total*100
%guest 显示运行虚拟处理器时CPU花费时间的百分比 guest/total*100
%idle 在internal时间段里,CPU除去等待磁盘IO操作外的,因为任何原因而空闲的闲置时间(%) idle/total*100

3.拓展总结

① mpstat可以显示每个CPU的统计信息,而vmstat只显示所有CPU的统计信息。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。

② vmstat中所有关于CPU的总结都适合mpstat。当您看到较低的 %idle 数字时,就知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,就知道在当前负载下等待IO严重。

参考文章:Linux中mpstat命令参数详解https://blog.csdn.net/quiet_girl/article/details/50697412

五、实时查看系统运行情况——top命令

        top命令是Linux系统中常用的性能分析工具,可以实时地查看系统的运行情况,比如内存、CPU、负载以及各个进程的资源占用情况。

执行top后输出界面展示:

[Linux]常用性能分析命令_第4张图片

 注:top界面主要分为两个部分,前5行展示的是系统的整体性能,光标下面的部分是系统中每个进程的具体信息。光标所在处是用来输入操作命令的。

1.系统的整体性能

第一行:

0690608d45ad46d09395d697b3b84979.png

字段 含义
top 名称
22:00:00 系统当前时间
up  4:54 系统以及运行的时间,和uptime命令相等
2 users 当前有2个用户在线
load average: 0.00, 0.01, 0.053 系统一定时间内的平均负载,分别是1分钟、5分钟、15分钟

 第二行:

ad485596919247d3b980347a3cbcb653.png

字段 含义

Tasks

任务,也就是进程
189 tota 当前总共有189个任务,也就是189个进程
1 running 1个进程正在运行
188 sleeping 188个进程正在休眠
0 stopped 0个停止的进程
0 zombie 0个僵尸进程

第三行:

0882af1022f04331b265577d398d66ae.png

字段

含义
%Cpu(s) CPU使用率
0.0 us 用户空间占用CPU时间的百分比(大部分进程都运行在用户态,通常都是希望用户空间CPU越高越好)
0.1 sy 内核空间占用CPU时间的百分比(Linux内核态占用的CPU时间,系统 CPU占用越高,表明系统某部分存在瓶颈。通常这个值越低越好)
0.0 ni 占用CPU时间的百分比(ni是nice的缩写,进程用户态的优先级,如果调整过优先级,那么展示的就是调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)
99.9 id 空闲CPU占用率,等待进程运行
0.0 wa 等待输入输出的CPU时间百分比(CPU的处理速度是很快的,磁盘IO操作是非常慢的。wa表示 CPU 在等待 IO 操作完成所花费的时间。系统不应该花费大量的时间来等待 IO 操作,否则就说明 IO 存在瓶颈)
0.0 hi CPU硬中断时间百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息 )
0.0 si CPU软中断时间百分比(软中断是由程序发出的中断 )
0.0 st 被强制等待(involuntary wait)虚拟 CPU 的时间,此时 Hypervisor 在为另一个虚拟处理器服务

第四行:

ace460e9d03b4ec58ac39b951b51a1ed.png

字段 含义

MiB Mem

内存
1867292 total 物理内存总量
86080 free 空闲内存量
587940 used 已使用的内存量
1193272 buff/cache 用作内核缓存的内存量

第五行:

42ace04fc2e04bc8a766d20788c3981a.png

字段 含义

MiB Swap

交换空间(虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟城内存使用)
2097148 total 交换区总量
2097148 free 空闲交换区总量
0 used 使用的交换区总量
1045256 avail Mem 可用于启动一个新应用的内存(物理内存),和free不同,它计算的是可回收的page cache和memory slab

注:第四行和第五行输出信息,等同于使用free -m命令。

2.进程信息

4595eb251b9340b1afacbbcc51ee9d63.png

字段解释:

字段 含义

PID

进程id
USER 进程所有者
PR 进程的优先级,越小优先级越高
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存,单位是kb
RES 进程使用的物理内存,单位kb
SHR 进程使用的共享内存,单位kb
S 进程状态(S表示休眠,R表示正在运行, Z表示僵死状态,N表示该进程优先值为负数,I表示空闲状态)
%CPU 进程占用的CPU使用率
%MEM 进程使用的物理内存和总内存的百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令行

注:上述列是top命令的默认显示,还有一些参数可以使用top的交互命令选择显示,按f键,选择需要展示的部分。

3.top命令行选项

格式:top [选项]

选项 功能

-p

只显示某个进程的信息
-d 设置刷新时间,默认是5s
-c 显示产生进程的完整命令,默认是进程名
-o 指定要排序的字段,比如top -o PID 按照PID从大到小,top -o -PID 按照PID从小到大
-n 指定刷新次数,比如 top -n 3,刷新输出3次后退出
-b 以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp
-i 不显示任何闲置 (idle) 或无用 (zombie) 的进程
-u 查找特定用户启动的进程

4.top交互命令

top命令在执行过程中可以使用一些交互功能:

按键 功能

h键

按下h键,会显示帮助画面
c键 按下c键,会显示产生进程的完整命令,等同于-c参数,再次按下c键,变为默认显示
f键 按下f键,可以选择需要展示的项目
M键 按下M键,根据驻留内存大小(RES)排序
P键 按下P键,根据CPU使用百分比大小进行排序
T键 按下T键,根据时间/累计时间进行排序
E键 按下E键,切换顶部内存显示单位
e键 按下e键,切换进程内存显示单位
l键 按下l键,切换显示平均负载和启动时间信息
t键 按下t键,切换显示CPU状态信息
m键 按下m键,切换显示内存信息

参考文章:top命令详细解读https://blog.csdn.net/m0_72838865/article/details/126482884

六、/proc/meminfo

输出展示如下:

[root@localhost ~]# cat /proc/meminfo
MemTotal:        1867292 kB
MemFree:          916616 kB
MemAvailable:    1146652 kB
Buffers:            1004 kB
Cached:           353620 kB
SwapCached:            0 kB
Active:           475432 kB
Inactive:         277772 kB
Active(anon):     399436 kB
Inactive(anon):     8956 kB
Active(file):      75996 kB
Inactive(file):   268816 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                48 kB
Writeback:             0 kB
AnonPages:        398592 kB
Mapped:           109092 kB
Shmem:              9812 kB
Slab:              88876 kB
SReclaimable:      32668 kB
SUnreclaim:        56208 kB
KernelStack:        8144 kB
PageTables:        22640 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3030792 kB
Committed_AS:    2599896 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      183520 kB
VmallocChunk:   34359310332 kB
HardwareCorrupted:     0 kB
AnonHugePages:     81920 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       98176 kB
DirectMap2M:     1998848 kB
DirectMap1G:           0 kB

输出参数说明:

参数 说明
MemTotal 所有可用RAM大小(即物理内存减去一些预留位和内核的二进制代码大小)(HighTotal + LowTotal),系统从加电开始到引导完成,BIOS等要保留一些内存,内核要保留一些内存,最后剩下可供系统支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的
MemFree
 
LowFree与HighFree的总和,被系统留着未使用的内存,MemFree是说的系统层面
MemAvailable 应用程序可用内存数。系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以MemFree不能代表全部可用的内存,这部分可回收的内存加上MemFree才是系统可用的内存,即:MemAvailable≈MemFree+Buffers+Cached,它是内核使用特定的算法计算出来的,是一个估计,MemAvailable是说的应用程序层面
Buffers 用来给文件做缓冲大小
Cached 被高速缓冲存储器(cache memory)用的内存的大小(等于 diskcache minus SwapCache )
SwapCached 被高速缓冲存储器(cache memory)用的交换空间的大小,已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口
Active 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作他用. (Active(anon) + Active(file))
Inactive 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径. (Inactive(anon) + Inactive(file))
Active(anon) 活跃的与文件无关的内存(比如进程的堆栈,用malloc申请的内存)(anonymous pages),anonymous pages在发生换页时,是对交换区进行读/写操作
Inactive(anon) 非活跃的与文件无关的内存(比如进程的堆栈,用malloc申请的内存)
Active(file) 活跃的与文件关联的内存(比如程序文件、数据文件所对应的内存页)(file-backed pages) File-backed pages在发生换页(page-in或page-out)时,是从它对应的文件读入或写出
Inactive(file) 非活跃的与文件关联的内存(比如程序文件、数据文件所对应的内存页)
HighTotal 高位内存总大小(Highmem是指所有内存高于860MB的物理内存,Highmem区域供用户程序使用,或用于页面缓存。该区域不是直接映射到内核空间。内核必须使用不同的手法使用该段内存)
HighFree 未被使用的高位内存大小
LowTotal 低位内存总大小,低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构
LowFree 未被使用的低位大小
SwapTotal 交换空间的总大小
SwapFree 未被使用交换空间的大小
Dirty 等待被写回到磁盘的内存大小
Writeback 正在被写回到磁盘的内存大小
AnonPages 未映射页的内存大小
Mapped 设备和文件等映射的大小
Slab: 59840 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗
SReclaimable 可收回Slab的大小
SUnreclaim 不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)
KernelStack 常驻内存,每一个用户线程都会分配一个kernel stack(内核栈)
PageTables 管理内存分页页面的索引表的大小
NFS_Unstable 不稳定页表的大小
CommitLimit: 1053080 kB  根据超额分配比率('vm.overcommit_ratio'),这是当前在系统上分配可用的内存总量,这个限制只是在模式2('vm.overcommit_memory')时启用。CommitLimit用以下公式计算:CommitLimit =('vm.overcommit_ratio'*物理内存)+交换,例如,在具有1G物理RAM和7G swap的系统上,当`vm.overcommit_ratio` = 30时 CommitLimit =7.3G
 
Committed_AS 目前在系统上分配的内存量。是所有进程申请的内存的总和,即时所有申请的内存没有被完全使用,例如一个进程申请了1G内存,仅仅使用了300M,但是这1G内存的申请已经被 "committed"给了VM虚拟机,进程可以在任何时间使用。如果限制在模式2('vm.overcommit_memory')时启用,分配超出CommitLimit内存将不被允许
VmallocTotal 可以vmalloc虚拟内存大小
VmallocUsed vmalloc已使用的虚拟内存大小
VmallocChunk 最大的连续未被使用的vmalloc区域

参考文章:cat /proc/meminfo 各字段详解https://blog.csdn.net/JustDoIt_201603/article/details/106629059

七、/proc/[pid]/status

输出展示如下:

[root@localhost ~]# cat /proc/3225/status
Name:    abrt-applet
State:    S (sleeping)
Tgid:    3225
Ngid:    0
Pid:    3225
PPid:    2774
TracerPid:    0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize:    64
Groups:    10 1000 
VmPeak:      554100 kB
VmSize:      527480 kB
VmLck:           0 kB
VmPin:           0 kB
VmHWM:       14824 kB
VmRSS:       14812 kB
RssAnon:        5040 kB
RssFile:        9772 kB
RssShmem:           0 kB
VmData:      150932 kB
VmStk:         136 kB
VmExe:          40 kB
VmLib:       33312 kB
VmPTE:         560 kB
VmSwap:           0 kB
Threads:    3
SigQ:    0/7170
SigPnd:    0000000000000000
ShdPnd:    0000000000000000
SigBlk:    0000000000000000
SigIgn:    0000000000001000
SigCgt:    0000000180004000
CapInh:    0000000000000000
CapPrm:    0000000000000000
CapEff:    0000000000000000
CapBnd:    0000001fffffffff
CapAmb:    0000000000000000
Seccomp:    0
Cpus_allowed:    ffffffff,ffffffff,ffffffff,ffffffff
Cpus_allowed_list:    0-127
Mems_allowed:    00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:    0
voluntary_ctxt_switches:    187
nonvoluntary_ctxt_switches:    9

输出参数说明:

参数 说明
Name 可执行程序的名字
State 任务状态,运行/睡眠/僵死
Tgid 线程组号
Pid 进程id
PPid 父进程id
FDSize 该进程最大文件描述符个数
VmPeak 当前进程运行过程中占用内存的峰值
VmSize 进程现在正在占用的内存
VmLck 进程已经锁住的物理内存大小,锁住的物理内存不能交换到硬盘

VmHWM

程序得到分配到物理内存的峰值
VmRSS 程序现在使用的物理内存
VmData 进程数据段的大小
VmStk 进程堆栈段的大小
VmExe 进程代码段大小
VmLib 进程使用的库映射到虚拟内存空间的大小
VmPTE 进程页表大小
Threads 共享使用该信号描述符的任务个数,在POSIX多线程应用程序中,线程组中的所有线程使用同一个信号描述符

       

        本文章根据相关资料以及优秀文章总结了Linux常用性能分析命令,以便根据具体需求选择合适的方式去分析系统性能。

你可能感兴趣的:(linux,linux,运维开发)