vmstat 监控虚拟内存,进程,CPU

文章目录

  • 1. 命令格式:
  • 2. 命令功能:
  • 3. 命令参数:
  • 4. 使用实例:
    • 实例1:显示虚拟内存使用情况
    • 实例2:显示活跃和非活跃内存
    • 实例3:查看系统已经fork了多少次
    • 实例4:查看内存使用的详细信息
    • 实例5:查看磁盘的读/写
    • 实例6:查看/dev/sda1磁盘的读/写
    • 实例7:查看系统的slab信息

1. 命令格式:

vmstat[-a] [-n] [-S unit] [delay [ count]]

vmstat[-s] [-n] [-S unit]

vmstat[-m] [-n] [delay [ count]]

vmstat[-d] [-n] [delay [ count]]

vmstat[-p disk partition] [-n] [delay [ count]]

vmstat[-f]

vmstat[-V]

2. 命令功能:

用来显示虚拟内存的信息

3. 命令参数:

-a:显示活跃和非活跃内存

-f:显示从系统启动至今的fork数量。

-m:显示slabinfo

-n:只在开始时显示一次各字段名称。

-s:显示内存相关统计信息及多种系统活动数量。

delay:刷新时间间隔。如果不指定,只显示一条结果。

count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。

-d:显示磁盘相关统计信息。

-p:显示指定磁盘分区统计信息

-S:使用指定单位显示。参数有k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)

-V:显示vmstat版本信息。

这里特别提醒一下,vmstat -S M 可以M为单位显示结果。

4. 使用实例:

实例1:显示虚拟内存使用情况

[root@localhost ~]# vmstat 5 6

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 0  0      0 3029876 199616 690980    0    0     0     2    3    2  0  0 100  0  0

 0  0      0 3029752 199616 690980    0    0     0    41 1009   39  0  0 100  0  0

 0  0      0 3029752 199616 690980    0    0     0     3 1004   36  0  0 100  0  0

 0  0      0 3029752 199616 690980    0    0     0     4 1004   36  0  0 100  0  0

 0  0      0 3029752 199616 690980    0    0     0     6 1003   33  0  0 100  0  0

备注: vmstat 5 5 表示在5秒时间内进行5次采样。将得到一个数据汇总他能够反映真正的系统情况。

字段说明:

Procs(进程):

  • r:运行队列中进程数量
  • b:等待IO的进程数量

Memory(内存):

  • swpd:使用虚拟内存大小
  • free:可用内存大小
  • buff:用作缓冲的内存大小
  • cache:用作缓存的内存大小

Swap:

  • si:每秒从交换区写到内存的大小
  • so:每秒写入交换区的内存大小

IO:(现在的Linux版本块的大小为1024bytes)

  • bi:每秒读取的块数
  • bo:每秒写入的块数

系统:

  • in:每秒中断数,包括时钟中断。
  • cs:每秒上下文切换数。

CPU(以百分比表示):

  • us:用户进程执行时间(user time)
  • sy:系统进程执行时间(system time)
  • id:空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
  • wa:等待IO时间

如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。如果pi,po 长期不等于0,表示内存不足。如果disk 经常不等于0, 且 在 b中的队列大于3, 表示 io性能不好。Linux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。

实例2:显示活跃和非活跃内存

[root@localhost ~]# vmstat -a 2 5

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st

 0  0      0 3029752 387728 513008    0    0     0     2    3    2  0  0 100  0  0

 0  0      0 3029752 387728 513076    0    0     0     0 1005   34  0  0 100  0  0

 0  0      0 3029752 387728 513076    0    0     0    22 1004   36  0  0 100  0  0

 0  0      0 3029752 387728 513076    0    0     0     0 1004   33  0  0 100  0  0

 0  0      0 3029752 387728 513076    0    0     0     0 1003   32  0  0 100  0  0

说明:
使用-a选项显示活跃和非活跃内存时,所显示的内容除增加inact和active外,其他显示内容与例子1相同。

字段说明:

Memory(内存):

  • inact:非活跃内存大小(当使用-a选项时显示)
  • active:活跃的内存大小(当使用-a选项时显示)

实例3:查看系统已经fork了多少次

[root@localhost ~]# vmstat -f
    185491695 forks

说明:
这个数据是从/proc/stat中的processes字段里取得的

实例4:查看内存使用的详细信息

[root@localhost ~]# vmstat -s
      7762752 K total memory
      5004672 K used memory
      4768064 K active memory
      1804288 K inactive memory
       701696 K free memory
          256 K buffer memory
      2056128 K swap cache
      4210624 K total swap
      3722368 K used swap
       488256 K free swap
    469311946 non-nice user cpu ticks
        99144 nice user cpu ticks
     99670890 system cpu ticks
   4925007753 idle cpu ticks
     12343718 IO-wait cpu ticks
      8466593 IRQ cpu ticks
     13803091 softirq cpu ticks
            0 stolen cpu ticks
   5662895521 pages paged in
  15048048233 pages paged out
      4048809 pages swapped in
      4429446 pages swapped out
   1490479026 interrupts
    548089045 CPU context switches
   1692347746 boot time
    185494909 forks

说明:
这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat。

实例5:查看磁盘的读/写

[root@localhost ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
vda   42493047 656210 11325792811 123390927 220328801 205076734 30096299395 1474852836      0  97159
sr0        0      0       0       0      0      0       0       0      0      0
dm-0  39111004      0 10807439693 109761070 420980531      0 30457533198 2271224580      0 290945
dm-1  4048861      0 518255488 20795930 4429446      0 566969088 35204700      0  12535
dm-2      19      0    2688       0      0      0       0       0      0      0

说明:
这些信息主要来自于/proc/diskstats.
merged:表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作.

实例6:查看/dev/sda1磁盘的读/写

[root@localhost ~]# vmstat -p /dev/vda1
vda1            reads      read sectors      writes  requested writes
                  115             14601           1                 1

说明:
这些信息主要来自于/proc/diskstats。

  • reads:来自于这个分区的读的次数。
  • readsectors:来自于这个分区的读扇区的次数。
  • writes:来自于这个分区的写的次数。
  • requestedwrites:来自于这个分区的写请求次数。

实例7:查看系统的slab信息

[root@localhost ~]# vmstat -m
Cache                       Num  Total   Size  Pages
nf_conntrack_expect           0      0    248    264
nf_conntrack               2491   4284    320    204
ovl_inode                  4320   4590    728     90
fat_inode_cache             249    249    784     83
fat_cache                     0      0     40   1638
scsi_sense_cache           2560   2560    128    512
ip6_dst_cache               204    204    320    204
PINGv6                        0      0   1344     48
RAWv6                       432    432   1344     48
UDPv6                       176    176   1472     44
tw_sock_TCPv6                 0      0    272    240
request_sock_TCPv6            0      0    336    195
TCPv6                       100    100   2560     25
kcopyd_job                    0      0   3312     19
dm_uevent                     0      0   2632     24
bfq_queue                   141    141    464    141
cfq_io_cq                     0      0    120    546
mqueue_inode_cache          272    272    960     68
xfs_dqtrx                     0      0    528    124
xfs_dquot                     0      0    504    130
xfs_bui_item                  0      0    216    303
xfs_rui_item                  0      0    696     94
xfs_rud_item                  0      0    176    372
xfs_inode                  8353  25636    960     68
xfs_efd_item               2220   2664    440    148
xfs_buf_item               1200   2160    272    240
xfs_trans                  7332   7332    232    282
xfs_da_state                544    544    480    136
xfs_btree_cur              1168   1168    224    292
xfs_log_ticket             1781   3916    184    356
ecryptfs_headers              0      0  65536      8
ecryptfs_inode_cache          0      0   1024     64
ecryptfs_dentry_info_cache   8192   8192     32   2048
ecryptfs_file_cache           0      0     16   4096
jbd2_journal_handle           0      0     48   1365
jbd2_journal_head             0      0    120    546
jbd2_revoke_table_s           0      0     16   4096
ext4_inode_cache              0      0   1160     56
ext4_allocation_context       0      0    128    512
ext4_io_end                   0      0     64   1024
ext4_extent_status            0      0     40   1638
mbcache                       0      0     56   1170
fscrypt_info                  0      0     32   2048
fscrypt_ctx                   0      0     80    819
kioctx                      372    372    704     93
Cache                       Num  Total   Size  Pages
userfaultfd_ctx_cache         0      0    192    341
dnotify_struct                0      0     32   2048
dio                           0      0    640    102
ip4-frags                  2730   2730    240    273
secpath_cache              6656   6656    128    512
xfrm_dst_cache             1310   3066    448    146
PING                        644    896   1152     56
RAW                         448    448   1152     56
UDP                         204    204   1280     51
tw_sock_TCP                2160   2160    272    240
request_sock_TCP            780    780    336    195
TCP                         822    832   2432     26
hugetlbfs_inode_cache       388    388    672     97
dquot                         0      0    256    256
eventpoll_pwq              3640   3640     72    910
inotify_inode_mark         3276   3276     80    819
dax_cache                   234    234    832     78
request_queue               264    264   2888     22
blkdev_ioc                 1924   1924    136    481
biovec-max                  576    720   4096     16
biovec-128                  128    128   2048     32
biovec-64                   256    256   1024     64
user_namespace                0      0    576    113
uid_cache                 13610  22506    192    341
iommu_iova                 4096   4096     64   1024
sock_inode_cache           2976   2976    704     93
skbuff_head_cache          4849   4864    256    256
configfs_dir_cache         2728   2728     96    682
file_lock_cache            1308   1308    200    327
net_namespace                80     80   6272     20
shmem_inode_cache          3556   3567    752     87
taskstats                   796    796    328    199
proc_dir_entry             3751   3751    192    341
pde_opener                 6552   6552     40   1638
proc_inode_cache           1960   2730    720     91
sigqueue                   1636   1636    160    409
bdev_cache                  204    204    960     68
kernfs_node_cache         35594  35594    136    481
mnt_cache                  2757   3570    384    170
filp                      22613  26880    256    256
inode_cache                3354   3535    648    101
dentry                    29779  62115    216    303
names_cache                 192    256   4096     16
buffer_head                1890   1890    104    630
uts_namespace               592    592    440    148
Cache                       Num  Total   Size  Pages
vm_area_struct            51834  54327    240    273
mm_struct                   844    952   1152     56
files_cache                1302   1302    704     93
signal_cache                826   1260   1088     60
sighand_cache               488    682   2112     31
task_struct                1517   1664   3904     16
cred_jar                   3069   3069    192    341
thread_stack               1482   1648  16384     16
anon_vma_chain            55999  62464     64   1024
anon_vma                  32953  46128     88    744
pid                        7168   7168    128    512
Acpi-Operand               8190   8190     72    910
Acpi-Parse                 4680   4680     56   1170
Acpi-State                 5733   5733     80    819
Acpi-Namespace             3276   3276     40   1638
shared_policy_node         5460   5460     48   1365
numa_policy               10920  10920     24   2730
pool_workqueue             4609   4864    256    256
radix_tree_node            4944  10304    584    112
task_group                  312    312    832     78
pgd_cache                  1792   1792    512    128
kmalloc-131072               20     20 131072      4
kmalloc-65536               605    656  65536      8
kmalloc-32768                64     64  32768     16
kmalloc-16384               377    432  16384     16
kmalloc-8192                136    208   8192     16
kmalloc-4096                916   1168   4096     16
kmalloc-2048               1520   1600   2048     32
kmalloc-1024               4376   6528   1024     64
kmalloc-512                3002   7040    512    128
kmalloc-256                7797   9216    256    256
kmalloc-128               95988 326656    128    512
kmem_cache_node            2048   2048    128    512
kmem_cache                  512    512    512    128

这组信息来自于/proc/slabinfo。
slab:由于内核会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry,这些对象如果每次构建的时候就向内存要一个页(4kb),而其实只有几个字节,这样就会非常浪费,为了解决这个问题,就引入了一种新的机制来处理在同一个页框中如何分配小存储区,而slab可以对小对象进行分配,这样就不用为每一个对象分配页框,从而节省了空间,内核对一些小对象创建析构很频繁,slab对这些小对象进行缓冲,可以重复利用,减少内存分配次数。

你可能感兴趣的:(其他,linux,服务器)