Linux 内存之vmstat

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

1.2 memory

(1)

 swpd: the amount of of swapped-out memory.
 free: the amount of idle memory (Free available memory).
 buff: the amount of memory used as buffers (buffer cache).
 cache: the amount of memory used as cache (page cache).

buff/cache:系统中的空闲内存(free memory)在系统启动后,如果空闲内存(free memory)较多,会有一部分用来当作缓存,以提高系统性能。这部分缓存可以在需要的时候(free memory不够的时候)释放出来供应用程序使用。

缓存(buff/cache)占用实际的物理内存,通常缓存的是磁盘上的数据,用来减少对磁盘I/O的操作,把对磁盘的访问变成对物理内存的访问,应该缓存经常访问的数据(热数据),而不是不常访问的数据(冷数据)。

(2)

Swap
    si: Amount of memory swapped in from disk (/s).
    so: Amount of memory swapped to disk (/s).

如果 the si and so 持续非零,则系统处于内存不足的状态,内存的一些数据(最近没有访问的数据,非活跃的数据)正在交换到 swap device(Swap分区,匿名页被交换到Swap分区) 或者 file(file-backed pages会被直接写入到文件中)中。

anonymous pages和file-backed pages:
在这里插入图片描述
Linux一个进程使用的内存分为2种:
file-backed pages(有文件背景的页面,比如代码段、比如read/write方法读写的文件、比如mmap读写的文件;他们有对应的硬盘文件,因此如果要交换,可以直接和硬盘对应的文件进行交换),此部分页面进page cache。
anonymous pages(匿名页,如stack,heap,CoW后的数据段等;他们没有对应的硬盘文件,因此如果要交换,只能交换到虚拟内存-swapfile或者Linux的swap硬盘分区),此部分页面,如果系统内存不充分,可以被swap到swapfile或者硬盘的swap分区。
具体可参考:swappiness=0究竟意味着什么?

如果系统开启了Swap分区,在物理内存不够用时,操作系统会从物理内存中把部分暂时不被使用的数据转移到交换分区,从而为当前运行的程序留出足够的物理内存空间。通常生产环境不会开启Swap分区,会影响性能。

查看交换分区:

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7705         837        1502         138        5365        6275
Swap:          7935           0        7935

NAME
       swapon, swapoff - enable/disable devices and files for paging and swapping

[root@localhost ~]# swapon
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition 7.8G   0B   -2

[root@localhost ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       8126460 0       -2

[root@localhost ~]# cat /etc/fstab
......
/dev/mapper/centos-swap swap                    swap    defaults        0 0

swappiness用于设置向交换分区写页面的活跃程度:

[root@localhost ~]# cat /proc/sys/vm/swappiness
20

swappiness越大,越倾向于回收匿名页;swappiness越小,越倾向于回收file-backed的页面。当然,它们的回收方法都是一样的LRU算法。
swappiness = 0,当内存不足时,只回收file-backed的页面,不回收匿名页。
swappiness = 1,进行最少量的匿名页交换,而不禁用交换。
swappiness=100,当内存不足时的时候,表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
swappiness的值为 0 到 100。

1.3 block IO

IO
    bi: Blocks received from a block device (blocks/s).
    bo: Blocks sent to a block device (blocks/s).

所有 linux blocks 目前都是1024字节。

1.4 System

System
    in: The number of interrupts per second, including the clock.
    cs: The number of context switches per second.

其中 in 代表系统每秒发生中断的次数,包括时钟中断(是否包括了系统软中断)。

其中 cs 代表系统每秒上下文切换的次数,显示了系统总体的上下文切换情况。
上下文切换包括:进程上下文切换、线程上下文切换以及中断上下文切换(是否包括了系统调用上下文切换)。

man 手册中指出:没有统计系统调用的数目,cs应该没有包括系统调用上下文切换的次数。

Does not tabulate the block io per device or count the number of system calls.

1.5 cpu activity

CPU
    These are percentages of total CPU time.
    us: Time spent running non-kernel code.  (user time, including nice time)
    sy: Time spent running kernel code.  (system time)
    id: Time spent idle.
    wa: Time spent waiting for IO.
    st: Time stolen from a virtual machine.

二、使用步骤

2.1 vmstat -a

-a, --active
              Display active and  inactive memory

[root@localhost ~]# 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
 0  0      0 1543828 1254616 4325384    0    0     1     1    1    5  2  1 97  0  0

inact 是 the page cache 中 inactive memory 的数目。
active 是 the page cache 中 active memory 的数目。

2.2 vmstat -f

-f, --forks

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

显示自系统引导(boot)以来的fork数量。这包括fork、vfork和clone系统调用,相当于创建的任务总数。每个进程由一个或多个任务表示,具体取决于线程的使用情况。

2.3 vmstat -m

-m, --slabs
       Displays slabinfo.

[root@localhost ~]# vmstat -m
Cache                       Num  Total   Size  Pages
fuse_request                 80     80    400     20
fuse_inode                   21     21    768     21
nf_conntrack_ffff970adafd8000      0      0    320     25
nf_conntrack_ffffffff9dd11640   1200   1200    320     25
rpc_inode_cache              25     25    640     25
fat_inode_cache             432    682    720     22
fat_cache                  2346   2346     40    102
kvm_vcpu                      0      0  13056      2
xfs_dqtrx                     0      0    528     31
xfs_dquot                     0      0    488     16
xfs_ili                   95208  95208    168     24
xfs_inode                118541 118541    960     17
xfs_efd_item                 95    209    416     19
xfs_log_ticket              792    792    184     22
bio-3                       407    500    320     25
i915_dependency               0      0     64     64
i915_request                  0      0    576     28
drm_i915_gem_object         787   1218    768     21
kcopyd_job                    0      0   3312      9
dm_uevent                     0      0   2608     12
dm_rq_target_io               0      0    136     30
ip6_dst_cache               306    306    448     18
RAWv6                       104    104   1216     26
UDPLITEv6                     0      0   1216     26
UDPv6                       104    104   1216     26
tw_sock_TCPv6                 0      0    256     16
TCPv6                        60     60   2112     15
cfq_queue                     0      0    232     17
bsg_cmd                       0      0    312     26
mqueue_inode_cache           36     36    896     18
hugetlbfs_inode_cache        78     78    608     26
configfs_dir_cache           46     46     88     46
dquot                         0      0    256     16
kioctx                      112    112    576     28
userfaultfd_ctx_cache         0      0    192     21
pid_namespace                14     14   2200     14
posix_timers_cache          608    608    248     16
UDP-Lite                      0      0   1088     30
flow_cache                    0      0    144     28
UDP                         120    120   1088     30
tw_sock_TCP                 240    320    256     16
TCP                          64     64   1984     16
dax_cache                    21     21    768     21
blkdev_queue                 52     52   2456     13
blkdev_ioc                  195    195    104     39
user_namespace               68     68    480     17
sock_inode_cache           1208   1300    640     25
fsnotify_mark_connector  145872 146880     24    170
net_namespace                24     24   5248      6
shmem_inode_cache          1979   2256    680     24
Acpi-State                 2943   3417     80     51
task_delay_info             900    900    112     36
taskstats                    96     96    328     24
proc_inode_cache          89554  90336    656     24
Cache                       Num  Total   Size  Pages
sigqueue                    225    275    160     25
bdev_cache                   76     76    832     19
kernfs_node_cache         30202  30566    120     34
mnt_cache                 13601  14217    384     21
inode_cache               24273  24273    592     27
dentry                   421617 421617    192     21
iint_cache                    0      0    128     32
avc_xperms_node            1606   1606     56     73
avc_node                  18274  18368     72     56
selinux_inode_security   241622 245004     40    102
buffer_head              629616 629616    104     39
vm_area_struct            31754  32346    216     18
mm_struct                   260    260   1600     20
files_cache                 300    300    640     25
signal_cache                506    532   1152     28
sighand_cache               353    405   2112     15
task_xstate                 780    780   1088     30
task_struct                 558    637   4160      7
anon_vma                  10598  11679     80     51
shared_policy_node         3393   3655     48     85
numa_policy                  31     31    264     31
radix_tree_node           43204  43204    584     28
idr_layer_cache             375    375   2112     15
dma-kmalloc-8192              0      0   8192      4
dma-kmalloc-4096              0      0   4096      8
dma-kmalloc-2048              0      0   2048     16
dma-kmalloc-1024              0      0   1024     16
dma-kmalloc-512               0      0    512     16
dma-kmalloc-256               0      0    256     16
dma-kmalloc-128               0      0    128     32
dma-kmalloc-64                0      0     64     64
dma-kmalloc-32                0      0     32    128
dma-kmalloc-16                0      0     16    256
dma-kmalloc-8                 0      0      8    512
dma-kmalloc-192               0      0    192     21
dma-kmalloc-96                0      0     96     42
kmalloc-8192                 84    108   8192      4
kmalloc-4096                701    744   4096      8
kmalloc-2048                945   1040   2048     16
kmalloc-1024               5819   7920   1024     16
kmalloc-512                1974   4496    512     16
kmalloc-256               12207  13792    256     16
kmalloc-192                8287   8379    192     21
kmalloc-128                5374   6496    128     32
kmalloc-96                10878  10878     96     42
kmalloc-64               350630 353536     64     64
kmalloc-32               136946 138752     32    128
kmalloc-16                73134  75520     16    256
kmalloc-8                 87552  87552      8    512
kmem_cache_node             320    320     64     64
kmem_cache                  144    144    256     16

FIELD DESCRIPTION FOR SLAB MODE
       cache: Cache name
       num: Number of currently active objects
       total: Total number of available objects
       size: Size of each object
       pages: Number of pages with at least one active object

2.4 vmstat -s

-s, --stats

显示各种事件计数器和内存统计信息。

[root@localhost ~]# vmstat -s
      7890812 K total memory
       856064 K used memory
      4648752 K active memory
      1388784 K inactive memory
      1101524 K free memory
        17264 K buffer memory
      5915960 K swap cache
      8126460 K total swap
            0 K used swap
      8126460 K free swap
     15121809 non-nice user cpu ticks
        15133 nice user cpu ticks
      5119922 system cpu ticks
    690449365 idle cpu ticks
        57602 IO-wait cpu ticks
            0 IRQ cpu ticks
         5756 softirq cpu ticks
            0 stolen cpu ticks
      3828326 pages paged in
      7187387 pages paged out
            0 pages swapped in
            0 pages swapped out
    582941861 interrupts
   2668486471 CPU context switches
   1667480478 boot time
      1858539 forks

2.5 vmstat -d/D

-d, --disk
       Report disk statistics

[root@localhost ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
sda    50328   1098 5830005  346513 251291  81504 13311417 8074414      0   1322
dm-0   50608      0 5753849  362039 294970      0 13273320 29031220      0   1321
dm-1      91      0    4928    2075      0      0       0       0      0      1
dm-2      94      0    6729    1398     17      0    4440     119      0      1
sdb     3536  29173  386910   21114      2      0       2      18      0      6



### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/f3cf45ecda4fcd3e5b054661af908eba.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/0e9c8c30216a9581e162e6cf994a3621.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

[外链图片转存中...(img-wzOUI184-1715764960332)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-Xd68To93-1715764960333)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618635766)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值