linux 内存性能分析命令小结

本文总结了Linux内存的相关概念,如主存、虚拟内存、常驻内存、地址空间等,并探讨了内存溢出(OOM)和页操作。同时介绍了用于内存性能分析的工具,如top、ps、vmstat、sar、slabtop、pmap、free、dmesg等,帮助识别和解决内存使用异常问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存:

概念:

主存

虚拟内存, 一个抽象的主存概念,几乎是无限的和非竞争性的(其实跟操作系统位数有一定关系), 并不是真实内存,它是对于内存的抽象,与真实内存拥有一定的映射关系

常驻内存

匿名内存 ,没有文件系统路径或者路径名的内存, 它包括进程地址空间的工作数据,一般叫做堆

地址空间 , 内存上下文, 每个进程和内核都有对应的虚拟地址空间

OOM 内存耗尽, 内存溢出

页 操作系统和cpu使用的内存单位, 一般是4k, 8K 有时候可以开启大页, 可以设置为2M

缺页 无效的内存访问

换页 主存与存储设备之间交换页

交换(空间) swap

虚拟内存:

是一个抽象概念,它向每个进程和内核提供巨大的,线性的并且私有的地址空间。 可以进行超额使用,因此虚拟机内存空间可以大于实际的内存空间,但是当用出超过实际的内存空间时,有可能发生换页,进行内存空间交换,产生大量的IO操作

分析工具:

  1. top

  2. ps

    # ps aux
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root          1  0.0  0.3  41404  3728 ?        Ss   Jul05   0:06 /usr/lib/systemd/systemd --system --deserialize 17
    root          2  0.0  0.0      0     0 ?        S    Jul05   0:00 [kthreadd]
    root          3  0.0  0.0      0     0 ?        S    Jul05   0:00 [ksoftirqd/0]
    root          5  0.0  0.0      0     0 ?        S<   Jul05   0:00 [kworker/0:0H]
    root          7  0.0  0.0      0     0 ?        S    Jul05   0:00 [migration/0]
    
    
    [root@dev ~]# ps aux |sort -rnk4 |head -10
    mysql      3255  0.0  9.8 980756 98964 ?        Sl   Jul19   0:28 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
    root      50073  0.3  4.5 992184 45584 ?        Sl   09:52   0:06 mongod -f /data/mongodb/conf/mongodb.cfg
    

    ps aux |sort -rnk4 |head -10 查找内存使用高的进程

    如果:echo `cat /proc/meminfo |grep -i slab|awk '{print $2}'`/1024/1024|bc

    输出值较大,则系统可能存在异常

    %MEM 内存使用占比

    RSS 常驻集合大小 KB

    VSZ 虚拟内存大小

  3. vmstat

    # vmstat
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     3  0   1272 139700      0 447832    0    0     5    20   48  210  0  0 99  0  0
    

    swpd 交换除的内存量

    free 空间的可用空间

    buff 可用于缓冲缓存的内存

    cache 用于页缓存的内存

    si 换入的内存

    so 换出的内存

  4. sar

    -B 换页统计信息

    -H 大页面统计信息

    -r 内存使用率

    -R 内存统计信息

    -S 交换空间统计信息

    -W 交换统计信息

    [root@mirror 46552]# sar -r
    Linux 3.10.0-123.el7.x86_64 (mirror)    07/07/2019      _x86_64_        (1 CPU)
    
    12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
    12:10:01 AM    140168    863264     86.03         0    457524    463456     14.95    275312    309600         4
    12:20:01 AM    139228    864204     86.12         0    459624    459776     14.83    274604    311576         0
    12:30:01 AM    139164    864268     86.13         0    459628    459776     14.83    274608    311576         0
    12:40:01 AM    139208    864224     86.13         0    459636    459776     14.83    274592    311576         0
    12:50:02 AM    139176    864256     86.13         0    459668    459776     14.83    274612    311588         0
    01:00:01 AM    119792    883640     88.06         0    459676    516524     16.66    292704    311624         0
    01:10:01 AM    139076    864356     86.14         0    459736    459776     14.83    274636    311632         0
    
    [root@mirror 46552]# sar -H
    Linux 3.10.0-123.el7.x86_64 (mirror)    07/07/2019      _x86_64_        (1 CPU)
    
    12:00:01 AM kbhugfree kbhugused  %hugused
    12:10:01 AM         0         0      0.00
    12:20:01 AM         0         0      0.00
    12:30:01 AM         0         0      0.00
    12:40:01 AM         0         0      0.00
    12:50:02 AM         0         0      0.00
    01:00:01 AM         0         0      0.00
    01:10:01 AM         0         0      0.00
    01:20:01 AM         0         0      0.00
    01:30:01 AM         0         0      0.00
    01:40:01 AM         0         0      0.00
    01:50:01 AM         0         0      0.00
    02:00:01 AM         0         0      0.00
    Average:            0         0      0.00
    
  5. slabtop 内存块分配统计信息

  6. pmap 进程地址空间统计信息

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

    # pmap -x 47299 
    47299:   /usr/lib64/erlang/erts-10.4/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1
    048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/li
    b/rabbitmq/lib/rabbitmq_server-3.7.15/ebin  -noshell -noinput -s rabbit boot -sname rabbit@mirror -boot start_sasl -config /etc/rab
    bitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -ra
    Address           Kbytes     RSS   Dirty Mode  Mapping
    0000000000400000    3620    2736       0 r-x-- beam.smp
    0000000000988000       4       4       4 r---- beam.smp
    0000000000989000     116      68      32 rw--- beam.smp
    00000000009a6000     200     188     188 rw---   [ anon ]
    0000000001736000     132     116     116 rw---   [ anon ]
    00007fb590000000      32       4       4 rw---   [ anon ]
    .....
    
    ffffffffff600000       4       0       0 r-x--   [ anon ]
    ---------------- ------- ------- ------- 
    total kB         1816508   70896   66336
    
    
  7. free

  8. dmesg 检查oom 信息

  9. iostat

  10. perf

  11. /proc/zoneinfo

  12. /proc/buddyinfo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值