Linux系统性能监控:内存工具整理

2014-12-12 阅读: Linux

free

free显示系统内存整体使用情况。Linux内核可以将内存作为用于硬盘读取的高速缓存和作为用于硬盘写入的缓冲区。 free命令可以显示空闲内存加减这些cache和buffer。

free -g
              total        used        free      shared  buff/cache   available
Mem:             31          22           1           0           7           7
Swap:            15           4          10

vmstat

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
 1  1 3017360 1360500     16 6152036    1    1     9   120    1    4  4  1 94  1  0
  • swpd: 当前交换到磁盘的内存量,单位KB
  • free: 还未被系统或应用程序使用的物理内存总量,单位KB
  • buff: 系统缓冲区大小,单位KB。用来存放等待保存到硬盘的数据的内存大小
  • cache: 系统缓存大小,单位KB。用来保存之前从硬盘读取的数据,后续应用再需要该数据时,可以直接从内存获取数据以提高性能
  • si: 上次采样中从硬盘交换入内存的交换速率,单位KB/s
  • so: 上次采样中从内存交换到硬盘的交换速率,单位KB/s
vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 1  0 3016912 1351096 6952456 22147520    1    1     9   120    1    4  4  1 94  1  0
  • inact: 不活跃的内存大小,即适合交换到硬盘的内存大小,单位KB,
  • act: 被使用的获取的内存大小
  • 活跃内存是指当前被进程使用的内存,不活跃内存是指已经分配但暂时还未使用的内存
  • buff和cache的内存即可以是活跃的,也可以是不活跃的
vmstat -s
     32531016 K total memory
     25015072 K used memory
     22148052 K active memory
      6956176 K inactive memory
      1346884 K free memory
           16 K buffer memory
      6169044 K swap cache
     16383996 K total swap
      3016724 K used swap
     13367272 K free swap
     35973318 non-nice user cpu ticks
          856 nice user cpu ticks
      7150678 system cpu ticks
    940254202 idle cpu ticks
     13302172 IO-wait cpu ticks
            0 IRQ cpu ticks
       230890 softirq cpu ticks
            0 stolen cpu ticks
     90115333 pages paged in
   1195522454 pages paged out
      1358399 pages swapped in
      2175658 pages swapped out
   3364058660 interrupts
   1803704790 CPU context switches
   1503886288 boot time
      2985037 forks
  • pages paged in: 从硬盘读入系统缓冲区的内存大小,单位为页,一般1页为4KB
  • pages paged out: 从系统高速缓存写到硬盘的内存大小,单位为页,一般1页为4KB
  • pages swapped in: 从交换分区读入系统内存的内存大小,单位为页
  • pages swapped out: 从系统内存写到交换区的内存大小,单位为页
  • used swap: 当前使用的交换分区大小
  • free swap: 当前可用的交换分区大小
  • total swap: 系统的交换分区大小

物理内存在寻址时,Linux将其分成内存页。当分配内存时,Linux操作的单位是页,而不是单个字节。对IA32(即Intel Architecture 32bit),页面大小为4KB。 在某些情况下,这样的页面大小会带来很高的跟踪开销,因此内存可以使用更大的块来操作内存,这些块被称为HugePage,容量为2048KB,这就可以降低管理和跟踪的开销,但如果HugePage不能被填满就会浪费内存。 HugePage对管理8GB以上内存更加高效。

vmstat -m
Cache                       Num  Total   Size  Pages
nf_conntrack_ffff880710706180    867    867    320     51
nf_conntrack_ffff8805fd6b9380    408    408    320     51
nf_conntrack_ffff8807f13e4e00   1887   1887    320     51
nf_conntrack_ffff8807f0eaba80    255    255    320     51
nf_conntrack_ffff8807f0ea9380   1785   1887    320     51
nf_conntrack_ffff880633e12700   2295   2295    320     51
nf_conntrack_ffff88003de61380    408    408    320     51
nf_conntrack_ffff8807f13e1380    408    408    320     51
nf_conntrack_ffffffff81a9cd80   2275   2805    320     51
kvm_vcpu                      0      0  16576      1
kvm_mmu_page_header           0      0    168     48
xfs_dqtrx                     0      0    528     62
xfs_dquot                     0      0    472     69
xfs_ili                  452694 458397    152     53
xfs_inode                477255 477963   1088     30
xfs_efd_item               1640   1640    400     40
......
  • vmstat -m输出Linux内核分片信息,该信息展现了内核内存是符合分配的,可以帮助确认那部分内核消耗内存最多

top

top命令运行时可以使用一些选项进行切换。

输入切换项m会将内存使用信息显示出来

top - 08:11:45 up 33 days, 20:30,  1 user,  load
Tasks: 184 total,   1 running, 183 sleeping,   0
%Cpu(s):  0.5 us,  0.0 sy,  0.0 ni, 99.5 id,  0.
KiB Mem : 21.0/15474852 [|||||||||||            ]
KiB Swap:  0.0/4194300  [

输入切换项M,将按内存使用量排序,实际分配给进程的内存可能大于其使用量,该选项实际是按进程驻留集大小排序,驻留集即进程的实际使用量,而不是其请求量。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  522 root      20   0   83028  34248  33916 S   0.0  0.2   0:47.11 systemd-journal
  937 root      20   0  303776  21548  18704 S   0.0  0.1   0:18.68 rsyslogd
23217 65534     20   0  161224  20228  12884 S   0.0  0.1   0:24.99 php-fpm7
14762 65534     20   0  158944  18388  13380 S   0.0  0.1   2:46.82 php-fpm7
12154 65534     20   0  160976  16892   9852 S   0.0  0.1   0:04.86 php-fpm7
  • VIRT: 进程虚拟内存的使用量。其中包含已经分配给应用程序但还未使用的全部内存
  • RES: 进程实际使用的物理内存总量
  • %MEM: 进程使用内存量占系统物理内存的百分比
  • SHR: 可以和其他进程共享的内存大小(单位KB)

procinfo

procinfo是一个低开销的命令,适合长时间在控制台运行,procinfo从/proc文件系统显示系统的一些整体信息。

procinfo -n 1 -D
Memory:        Total        Used        Free     Buffers
RAM:        32531016    31682756      848260          16
Swap:       16383996     4351072    12032924
......
  • Total: 内存总量
  • Used: 使用的物理内存总量
  • Free: 未使用的物理内存总量
  • Buffer: 用于磁盘写缓冲区的物理内存总量
标题:Linux系统性能监控:内存工具整理
本文链接:https://blog.frognew.com/2014/12/linux-pm-mem.html
转载请注明出处。

目录