[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

输出显示如下:

81ca7960711a44a8b60bd72f83ea2535.png

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 命令查看:

1260b5a89418440b9b5b302b5f535b55.png

或者直接访问文件 /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.输出参数含义

类别参数含义说明
procsr运行队列中进程的数量,这些进程都是可运行状态,都在等待CPU的分配当这个值超过了CPU数目,就会出现CPU瓶颈
b被blocked(阻塞)的进程数,正在等待IO
memoryswpd使用的虚拟内存的大小,单位是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资源多
idCPU空闲的百分比一般来说,us+sy+id=100
waCPU等待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带参数:

1b5872887a374c6ca685b41df50af79a.png

 此时表示每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后输出界面展示:

95d5173a589f48138d38740b8066c57f.png

 注: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 running1个进程正在运行
188 sleeping188个进程正在休眠
0 stopped0个停止的进程
0 zombie0个僵尸进程

第三行:

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 hiCPU硬中断时间百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息 )
0.0 siCPU软中断时间百分比(软中断是由程序发出的中断 )
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进程的优先级,越小优先级越高
NInice值,负值表示高优先级,正值表示低优先级
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虚拟内存大小
VmallocUsedvmalloc已使用的虚拟内存大小
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常用性能分析命令,以便根据具体需求选择合适的方式去分析系统性能。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值