当前位置:首页 > 内存 > 正文

linux进程内存占用大分析

  • 内存
  • 2024-05-18 09:15:38
  • 7915

一、Linux如何查看当前占用CPU或内存最多的K个进程如何查看Linux中当前哪些K个进程占用CPU或内存最多
1.可以使用以下命令查看占用内存最多的K个进程
方法一:
ps-aux|sort-k4nr|head-K
如果有10个进程,K=10,如果在前3个,K=3
说明:在ps-aux中(a指all-allProcess,u指userid-执行进程的用户ID,x指所有程序的显示,与终端无关)
ps-aux的输出格式如下:
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
root10.00.0193521308?SsJul290:00/sbin/init
root20.00.000?SJul290:00[kthreadd]
root30.00.000?SJul290:11[migration/0]
Sort-k4nr中(k表示起始位置,下一个数字4为起始位置,如果没有结束位置则默认为final;n为numbericsort,按其值排序;r指reverse,这里是reverse指输出时从小到大、反转后从大到小的反向比较结果)。在此示例中,您可以看到%MEM位于位置4,并且根据%MEM的值从大到小排序。
head-K(K指行号,表示输出前几个结果)
|是一个管道符号,它将查询结果定向到以下命令以进行下一步。
方法二:top(然后按M,注意大小写)
其次,可以使用如下命令查看使用CPU最多的K个进程
方法方法一:
ps-aux|sort-k3nr|head-K
方法二:top(然后按P,注意大小写


二、Linux系统中查看执行中的进程占用内存量的方法

要查看Linux中进程占用的内存,只需执行以下命令,将[pid]替换为相应进程的PID号:

代码为如下:

cat/proc/[pid]/status

说明

/proc/[pid]中除了存储内存信息外,还存储信息/status还包括进程ID、信号等信息,目前这里只介绍内存相关信息。

字段说明VmPeak进程使用的虚拟内存最高值VmSizeVmLck进程当前使用的虚拟内存大小VmLck锁定的物理内存(未锁定物理内存)到硬盘的大小VmHWM进程使用的物理内存最大内存大小VmRSS进程当前使用的物理内存大小VmData进程是否占用的数据段大小VmStk进程占用的堆栈大小VmExe进程占用的代码段大小(不包括库)VmLib进程加载的动态库占用的内存大小(可与其他进程共享)VmPTE进程占用的页表大小(交换表项数)VmLib进程使用的交换区大小VmSwap进程

示例

显示cron进程的内存信息,并通过pidofcronID获取该进程或通过ps-aux|grepcron查找进程ID。

代码如下:

$cat/proc/1161/status

Name:cron

State:S(sleeping)

Tgid:1161

Ngid:0

Pid:1161

PPid:1

TracerPid:0

Uid:0000

Gid:0000

FDSize:64

组:0

VmPeak:23792kB

VmSize:23656kB

VmLck:0kB

VmPin:0kB

VmHWM:1040kB

VmRSS:1004kB

VmData:260kB

VmStk:136kB

VmExe:40kB

VmLib:2668kB

VmPTE:72kB

VmSwap:0kB

线程:1

SigQ:0/15442

SigPnd:00000000000000000

ShdPnd:0000000000000000

SigBlk:00000000000000000

SigIgn:0000000000000000

SigCgt:0000000000010001

CapInh:0000000000000000

CapPrm:0000001ffffffffff

CapEff:0000001ffffffffff

CapBnd:0000001ffffffffff

Seccomp:0

CPUs_allowed:3

CPUs_allowed_list:0-1

Mems_allowed:00000000,00000001

Mems_allowed_list:0

voluntory_ctxt_switches:151

nonvolent_ctxt_switches:0