linux 内存查看方法:meminfo\maps\smaps\status 文件解析

cat /proc/meminfo

cat /proc/pid/status

cat /proc/pid/maps

cat /proc/pid/smaps

cat /proc/pid/statm

free 因为linux系统的内存使用策略的缘故; 直接用free并不能真正体现可用内存。只能表示系统空闲物理内存

echo 1 > /proc/sys/vm/drop_caches 清缓存

 

1、/proc/meminfo各字段含义

cat /proc/meminfo

MemTotal: 116224 kB 

当前系统总的可用的内存,物理内存减去一些保留内存和内核使用,正在使用的和空闲的

MemFree: 5248 kB

空闲内存,LowFree + HighFree之和,MemFree表示的就是当前空闲的内存数目

MemAvailable: 45552 kB 可用内存,MemAvailable就是不需要额外磁盘操作(开 销较大)就可以使用的空闲内存的数量,cache/buffer、slab都有一部分可以回收, 所以这部分可回收的内存加上MemFree才是系统可用的内存,available 是可能需要经过一些内存回收的流程之后, 才能分配到的内存。

Buffers: 1864 kB  给文件的缓冲大小,系统分配但未被使 用的 buffer 数量

Cached: 37824 kB

被高速缓冲存储器(cache memory)用的内存的大小等于 diskcache minus SwapCache )系统分配但未被使用的 buffer 数量

SwapCached: 0 kB

被高速缓冲存储器(cache memory)用的交换空间的大小,已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。

Active: 67720 kB

在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要否则不会被移作他用.Active = Active(anon)+Active(file)

Inactive: 10656 kB

在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径,最近未使用的内存,回收时优先回收

Active(anon): 40644 kB

活跃的匿名内存(进程中堆上分配的内存,是用malloc分配的内存),活跃的anonymous pages(匿名页)预分配的虚拟内存,还未有数据占用

Inactive(anon): 168 kB

不活跃的匿名内存

Active(file): 27076 kB

活跃的file内存Inactive(file): 10488 kB

不活跃的file内存

Unevictable: 72 kB

不能被释放的内存页

Mlocked: 72 kB

mlock()系统调用锁定的内存大小

SwapTotal: 0 kB

交换空间总大小

SwapFree: 0 kB

空闲交换空间

Dirty: 52 kB

等待被写回到磁盘的大小

Writeback: 0 kB

正在被写回的大小

AnonPages: 38240 kB

未映射页的大小

Mapped: 28308 kB

设备和文件映射大小

Shmem: 2124 kB

已经被分配的共享内存大小

Slab: 18640 kB

内核数据结构缓存大小

SReclaimable: 8180 kB

可收回slab的大小

SUnreclaim: 10460 kB

不可回收的slab的大小 SUnreclaim+SReclaimable=Slab

KernelStack: 3408 kB

kernel消耗的内存

PageTables: 1128 kB

管理内存分页的索引表的大小

NFS_Unstable: 0 kB

不稳定页表的大小

Bounce: 0 kB

在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存

WritebackTmp: 0 kB

FUSE用于临时写回缓冲区的内存

CommitLimit: 58112 kB

系统实际可分配内存总量 CommitLimit =

(vm.overcommit_ratio * Physical RAM)/100 + Swap

Committed_AS: 1882924 kB

系统当前已分配的内存总量,包括已分配但尚未使用的内存大小。

VmallocTotal: 258867136 k

vmalloc 可使用的总内存大小

VmallocUsed: 0 kB

已被使用的虚拟内存大小

VmallocChunk: 0 kB

在 vmalloc 区域中可用的最大的连续内存块的大小

 

/proc/pid/status各字段的含义

/ # cat /proc/4548/status

Name: sai_client

State: S (sleeping)Tgid: 4548

Ngid: 0

Pid: 4548

PPid: 1

当前进程的父进程

TracerPid: 0

Uid: 0 0 0 0

Gid: 0 0 0 0

FDSize: 64

文件描述符的最大个数

Groups: 0 10

VmPeak: 964016 kB

进程地址空间的大小

VmSize: 931180 kB

进程虚拟地址空间的大小reserved_vm:进程在预留或特殊的内存间的物理页

VmLck: 36 kB

进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘,Vmlck的值为36Kb,这是因为分配的最少单位是36KB,以后每次递增都是36KB的整数倍.

VmPin: 0 kB

VmHWM: 51128 kB

程序得到分配到物理内存的峰值,文件内存映射和匿名内存映射的大小

VmRSS: 50276 kB

程序现在使用的物理内存

VmData: 890924 kB

表示进程数据段的大小.

VmStk: 132 kB

表示进程堆栈段的大小.

VmExe: 324 kB

表示进程代码的大小.

VmLib: 33364 kB

表示进程所使用LIB库的大小.

关于代码段,堆栈段,数据段:

代码段可以为机器中运行同一程序的数个进程共享

堆栈段存放的是子程序(函数)的返回地址、子程序的参数及程序的局部变量

数据段则存放程序的全局变量、常数以及动态数据分配的数据空间(比如用

malloc函数申请的内存)

与代码段不同,如果系统中同时运行多个相同的程序,它们不能使用同一堆栈段和数据段.

注意:

堆栈段代表的是程序中的堆区(stack),堆区一般是编译器自动分配释放的.我们用malloc申请的内存,它占用的其实是栈区(heap),栈区一般是程序员自已分

配释放的,而栈区在这里属于数据段,所以我们看到上面测试程序通过调用malloc函数后,VmData一值有了很大的变化.

VmPTE: 580 kB

占用的页表的大小.

VmPMD: 16 kB

VmSwap: 0 kB

进程占用Swap的大小.

Threads: 100

表示当前进程组有100个线程.

SigQ: 0/452

表示当前待处理信号的个数,

SigPnd: 0000000000000000

屏蔽位,存储了该线程的待处理信号,等同于线程的PENDING信号

ShdPnd: 0000000000000000

屏蔽位,存储了该线程组的待处理信号.等同于进程组的PENDING信号.

SigBlk: 0000000000000000

存放被阻塞的信号,等同于BLOCKED信号.

SigIgn: 0000000000001006

存放被忽略的信号,等同于IGNORED信号.

SigCgt: 0000000180000000

存放捕获的信号,等同于CAUGHT信号.

CapInh: 0000000000000000

表示能够被当前进程执行的程序继承的能力.

CapPrm: 0000003fffffffff

表示进程能够使用的能力,在

cap_permitted中可以包含cap_effective中没有的能力,这些能力是被进程自己临时放弃的,也可以说cap_effective是cap_permitted的一个子集.

CapEff: 0000003fffffffff

当一个进程要进行某个特权操作时,操作系统会检查cap_effective的对应位是否有效,而不再是检查进程的有效UID是否

为0.

CapBnd: 0000003fffffffff

是系统的边界能力,我们无法改变它

CapAmb: 0000000000000000

Cpus_allowed: f

3指出该进程可以使用CPU的亲和性掩码,因为我们指定为两块CPU,所以这里就是3,如果该进程指定为4个CPU(如果有话),这里就是F(1111).

Cpus_allowed_list: 0-3

该进程可以使用CPU的列表

voluntary_ctxt_switches: 1177

nonvoluntary_ctxt_switches: 231

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值