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]
用来显示虚拟内存的信息
-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为单位显示结果。
[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(进程):
Memory(内存):
Swap:
IO:(现在的Linux版本块的大小为1024bytes)
系统:
CPU(以百分比表示):
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。如果pi,po 长期不等于0,表示内存不足。如果disk 经常不等于0, 且 在 b中的队列大于3, 表示 io性能不好。Linux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。
[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(内存):
[root@localhost ~]# vmstat -f
185491695 forks
说明:
这个数据是从/proc/stat中的processes字段里取得的
[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。
[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:表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作.
[root@localhost ~]# vmstat -p /dev/vda1
vda1 reads read sectors writes requested writes
115 14601 1 1
说明:
这些信息主要来自于/proc/diskstats。
[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对这些小对象进行缓冲,可以重复利用,减少内存分配次数。