内存分析

mac2024-04-18  40

1 vmstat是虚拟内存统计信息命令

r 当前正在执行的队列b 当前等待队列阻塞 等待I/Oswpd 已使用的swap大小 单位KBfree  剩余物理内存大小 单位KBbuff  物理内存用来缓冲大小cache 物理内存用来缓存大小si    数据从swap读取到RAM(内存)大小so    数据从RAM写到swap大小bi    磁盘块从文件系统或swap读取到ram大小bo   磁盘块从RAM写到文件系统或swap大小in 当前处理的中断数量cs 上下文切换数量

如果si和so列一直非0,那么系统正存在内存压力并换页到交换设备或文件。用其他工具可以研究什么在消耗内存,例如能观察每个进程内存使用的工具。

拥有大内存的系统中,数据列会不对齐影响阅读,可以使用-S选项修改输出单位

选项-a可以输出非活动页和活动页缓存的明细

inact 非活动页 不活跃内存大小(最近未被使用的内存,很符合回收策略的内存)

active 活动页   活跃内存的大小(内存最近被使用过,并且不会被回收)

 

2 sar 系统活动报告器,可以用来观察当前活动,以及配置用以归档和报告历史统计信息

如下选项提供内存统计信息

-B 换页统计信息

-H 大页面统计信息(Centos6中没有这个选项 Centos 7中有)

-r 内存使用率

-R 内存统计信息

-S 交换空间统计信息

-W 交换统计信息

-B 输出信息

pgpgin/s 页面换入     单位KB/spgpgout/s 页面换出fault/s  严重轻微缺页  次数/smajflt/s 严重缺页pgfree/s 页面加入空闲链表pgscank/s 被后台页面换出守护进程扫描过的页面pgscand/s 直接页面扫描pgsteal/s 页面及交换高速换出回收%vmeff 页面扫描比率,显示页面回收的效率

-H 输出信息

kbhugfree  空闲巨型页面存储(大页面尺寸)        单位 KBkbhugused 占用的巨型页面存储器                          单位 KB%hugused 占用巨型页面存储器使用率

 

-r 输出信息 (Centos6比Centos7 少了最后三列)

kbmemfree    可用的空闲内存,单位是KBkbmemused  已经使用的内存,这个没有考虑内核自己用到的内存%memused   目前内存的使用率kbbuffers       缓冲使用内存数量kbcached       缓存使用内存数量kbcommit       当前工作负载需要的内存,这是一个估计值,多少RAM/swap可以保证当前负载不会出现out of memory%commit       当前工作负载需要的内存占RAM+swap的百分比,估计值kbactive        活跃内存的大小(内存最近被使用过,并且不会被回收)kbinact          不活跃内存大小(最近未被使用的内存,很符合回收策略的内存)kbdirty           等待写回硬盘的内存数量

 

-R输出信息

frmpg/s  每秒系统中空闲的内存页面(memory page freed)数量 负值表明分配   单位页/秒bufpg/s  每秒系统中用作缓冲区(buffer)的附加内存页面增长值campg/s 每秒系统中高速缓存的附加内存页面增长值

 

-S 输出信息

kbswpfree 释放交换空间     单位KBkbswpused 使用交换空间%swpused 交换空间使用率kbswpcad  高速缓存的交换空间:它同时保存在主存储器和交换设备中,因此不需要磁盘I/O就能被页面换出%swpcad 高速缓存的交换空间使用率

 

-W 交换统计信息

pswpin/s   每秒钟系统引入的swap pages      单位 页面/秒pswpout/s  每秒钟系统换出的swap pages

 

3 slabtop命令-实时显示内核slab内存缓存信息

slabtop命令 以实时的方式显示内核“slab”缓存的使用情况。内核的模块在分配资源的时候,为了提高效率和资源的利用率,都是透过slab来分配的。通过slab的信息,再配合源码能粗粗了解系统的运行情况,比如说什么资源有没有不正常的,或者什么资源有没有泄漏。linux系统透过/proc/slabinfo来向用户暴露slab的使用情况也可以用vmstat -m输出。Linux slab 分配器构建一个在空间和时间上都具有高效性的内存分配器。

slabtop -sc  

-sc 按照缓存大小排序,最大值在顶端

OBJS  对象数量ACTIVE 活动数量USE      使用率OBJ SIZE 对象大小 字节CACHE SIZE 缓存大小

4 ps 进程状态命令,可以列出包括内存使用统计信息在内的多有进程细节

ps aux

%MEM 占用内存的百分比

VSZ      虚拟内存使用大小 KB

RSS     该进程占用的固定內存量(KB)

注:RSS显示主存使用,它也包括如系统库在内的映射共享段,可能被许多进程共享,如果把RSS列求和,可能会发现它超过系统内存的总和,这是应为重复计算了这部分共享内存。

数据列可以用SVR4方式的选项-o选择

ps -eo pid,pmem,vsz,rss,comm

 

5 pmap 列出进程的内存映射,显示他们的大小,权限及映射对象。这使进程内存能被仔细的检查及量化共享内存

pmap -x 1386   (1386是要检查进程的PID)

Address  内存地址Kbytes    虚拟内存大小RSS       物理内存Dirty       等待写回硬盘的内存数量Mode      权限Mapping  对应的映像文件名

注:pmap会暂停进程以报告内存使用,这会影响活跃任务的性能,应在需要诊断和分析时运行它,但不应该作为监视工具频繁运行。

 

6 free 报告空闲内存,包括高速缓冲和缓存

free -m

total  实际内存大小used 使用内存大小free  剩余内存大小shared 共享内存大小buffers 高速缓冲区占用内存大小cached 高速缓存区占用内存大小Swap 这一行标识交换分区(文件)使用情况

注:实际可用内存大小在-/+ buffers/cache:       1636       2325 这一行,实际可用大小为2325MB,因为buffers和cached占用内存在进程需要开销内存时可以被调出

 

7 swapon 添加和观察交换设备或文件

swapon -s

-s 显示简短的装置信息

-a 自动启动所有swap设备

Filename   文件名称Type          类型 (partition分区)Size          大小 单位KBUsed         使用大小Priority       优先级

因为这是安装系统的时候创建的swap分区所以这里显示的类型是partition,下面我自己创建一个swap文件验证一下挂载后的类型

dd if=/dev/zero of=/test.swap bs=1M count=10mkswap /test.swapswapon /test.swapswapon -s

 

 

 

 

 

 

 

 

最新回复(0)