Linux 内存之vmstat(linux内存管理详解)

Linux 内存之vmstatvmstat每两秒显示一次,显示五次:
[rootlocalhost ~]# vmstat -w 2 5
procs ———————–memory–

vmstat 每2 秒显示5 次。

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

程序———————-内存———————— – –交换——io——系统———-CPU——

r b swpd 空闲缓冲区高速缓存si so bi bo in cs us sy id wa st

0 0 0 1100516 17264 5916084 0 0 1 1 4 2 2 1 97 0 0

0 0 0 1100292 17264 5916084 0 0 0 0 729 3516 5 2 93 0 0

1 0 0 1100268 17264 5916084 0 0 0 4 825 3379 5 2 93 0 0

1 0 0 1100020 17264 5916084 0 0 0 0 831 3464 6 2 92 0 0

0 0 0 1099872 17264 5916084 0 0 0 2 908 3519 5 2 93 0 0

可以看到第一行的数据与其他行(如in和cs)的数据有显着的不同。检查手册中的说明。

生成的第一份报告显示自上次重新启动以来的平均值。其他报告提供有关采样周期长度的信息。在这两种情况下,都会立即生成进程和内存报告。

第一行数据是自系统启动以来的平均值,其他行是您运行vmstat 命令时设置的时间间隔的平均值。此外,进程和内存报告内容是实时值。

1.1 processes

程序

r: 可运行进程的数量(正在运行或等待执行时间)。

b: 不间断休眠的进程数。

r 表示处于运行状态的进程。该进程正在运行或在运行队列中等待运行。

进程通过ps 或top 显示为R 状态(正在运行或可运行)。

b 代表一个睡眠的、不可中断的进程,该进程正在睡眠(阻塞)并等待满足某个条件。但是,与可中断睡眠进程不同,该进程在等待条件时不会响应信号。

通过ps 或top 显示为D 状态的进程是处于不间断睡眠状态的进程。此类进程通常等待关键操作,例如来自硬件设备的I/O 响应,或持有信号量。

例如,如果一个进程向磁盘读取或写入数据,则在获得磁盘响应之前,它不能被其他进程打断或打断,以确保数据完整性。此时,进程处于不可中断状态。如果此时进程被中断,则磁盘数据和进程数据之间很可能会出现差异。

不间断状态是一种对进程和硬件设备的系统保护机制。

1.2 memory

(1)

swpd: 换出的内存量。

free: 空闲内存量(可用内存)。

buff: 用作缓冲区(缓冲区高速缓存)的内存量。

cache: 用作高速缓存(页面高速缓存)的内存量。

buff/cache:系统启动后,如果有大量空闲内存(free memory),则将其中的一部分用作cache,以提高系统性能。可以根据需要释放这部分缓存以供应用程序使用(如果没有足够的可用内存)。

缓存(buff/cache)占用实际物理内存。它通常用于减少磁盘I/O 操作并缓存频繁访问的数据(热数据)。与不经常访问的数据(冷数据)相反。

(2)

交换

si: 从磁盘换入的内存量(/s)。

so: 交换到磁盘的内存量(/s)。

如果si等保持非零,则系统内存不足,内存中的某些数据(最近未访问过的数据,不活动的数据)正在被交换到交换设备(交换分区)。匿名页面交换到交换分区)或文件(备份到文件的页面直接写入文件)。

匿名和基于文件的页面:

Linux进程使用的内存分为两种类型:

File-backed page(有文件背景的页面,比如代码段、用read/write方法读写的文件、用mmap读写的文件;这些都有对应的硬盘文件,所以如果要替换掉这部分该页面进入页面缓存(对应正在交换的硬盘文件),可以直接访问)。

匿名页(CoW后的栈、堆、数据段等匿名页;它们没有对应的硬盘文件,所以如果要交换它们,只能交换到虚拟内存交换文件或Linux交换硬盘分区),页数这部分。如果您的系统内存不足,可以将其交换到交换文件或硬盘上的交换分区。

有关详细信息,请参阅swappiness=0 是什么意思?

当系统上启用了交换分区并且没有足够的物理内存时,操作系统会暂时将一些未使用的数据从物理内存转移到交换分区,以便为当前运行的程序释放足够的内存空间。生产环境中通常不启用交换分区,这会影响性能。

显示交换分区。

[root@localhost ~]# free -m

可用的免费共享增益/缓存总数

内存: 7705 837 1502 138 5365 6275

交换: 7935 0 7935

姓名

swapon、swapoff – 启用/禁用分页以及交换设备和文件

[root@localhost ~]# swapon

名称类型尺寸使用PRIO

/dev/dm-1 分区7.8G 0B -2

[root@localhost ~]# cat /proc/swaps

文件名类型大小使用优先级

/dev/dm-1 分区8126460 0 -2

[root@localhost ~]# cat /etc/fstab

.

/dev/mapper/centos-swap 交换交换默认0 0

swappiness 用于设置交换分区的页面写入活动。

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

20

swappy 越大,匿名页面就越有可能被回收,而swappy 越小,文件支持的页面就越有可能被回收。当然,他们的回收方式也是一样的LRU算法。

如果swappiness=0,则仅回收备份到文件的页面,如果内存不足,则不会回收匿名页面。

swappiness=1,执行最少的匿名页面交换而不禁用交换。

swappiness=100表示当内存不足时,会积极使用交换分区,及时将内存中的数据移至交换空间。

Swapness值从0到100。

1.3 block IO

I.O.

bi: 块从设备接收到的块数(块/秒)。

bo: 块发送到设备的块数(块/秒)。

当前所有Linux 块都是1024 字节。

1.4 System

系统

in: 每秒中断数,包括时钟。

cs: 每秒上下文切换的次数。

其中in表示每秒系统中断数,包括时钟中断(包括或不包括系统软中断)。

其中,cs表示每秒系统上下文切换的次数,表示整个系统的上下文切换状态。

上下文切换包括进程上下文切换、线程上下文切换和中断上下文切换(有或没有系统调用上下文切换)。

男人手册说:没有系统调用次数的统计,cs应该不包括系统调用上下文切换的次数。

它不会聚合每个设备的块IO 或计算系统调用的数量。

1.5 cpu activity

中央处理器

这些是总CPU 时间的百分比。

us: 执行非内核代码所花费的时间(用户时间,包括nice time)。

sy: 执行内核代码所花费的时间(系统时间)。

id: 空闲时间。

wa: IO 等待时间。

st: 虚拟机时间被盗。

二、使用步骤

2.1 vmstat -a

-a,–活跃

显示活动和非活动内存

[root@localhost ~]# vmstat -a

procs ————–内存———- —交换– —–io—- -系统– ——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 是页缓存中不活动内存的数量。

active 是页缓存中活动内存的数量。

2.2 vmstat -f

-f,–fork

[root@localhost ~]# vmstat -f

1688718 叉子

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

2.3 vmstat -m

-m,–板

显示板信息。

[root@localhost ~]# vmstat -m

缓存总大小页数

保险丝请求80 80 400 20

保险丝索引节点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

胖高速缓存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

简历3 407 500 320 25

i915_依赖0 0 64 64

i915_请求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_队列0 0 232 17

bsg_cmd 0 0 312 26

mqueue_inode_cache 36 36 896 18

巨大的lbfs_inode_cache 78 78 608 26

配置文件目录缓存46 46 88 46

达科特0 0 256 16

基奥克托112 112 576 28

用户故障fd_ctx_cache 0 0 192 21

pid_命名空间14 14 2200 14

posix_timers_cache 608 608 248 16

UDP-Lite 0 0 1088 30

流动现金0 0 144 28

UDP 120 120 1088 30

tw_sock_TCP 240 320 256 16

技术合作计划64 64 1984 16

dax_缓存21 21 768 21

blkdev_queue 52 52 2456 13

blkdev_ioc 195 195 104 39

用户名空间68 68 480 17

sock_inode_cache 1208 1300 640 25

fsnotify_mark_connector 145872 146880 24 170

网络命名空间24 24 5248 6

shmem_inode_cache 1979 2256 680 24

Acpi 状态2943 3417 80 51

任务延迟信息900 900 112 36

任务统计96 96 328 24

proc_inode_cache 89554 90336 656 24

缓存总大小页数

信号Q 225 275 160 25

bdev_cache 76 76 832 19

kernfs_node_cache 30202 30566 120 34

mnt_缓存13601 14217 384 21

索引节点缓存24273 24273 592 27

丹特里421617 421617 192 21

iint_cache 0 0 128 32

avc_xperms_节点1606 1606 56 73

avc_节点18274 18368 72 56

selinux_inode_安全241622 245004 40 102

缓冲头629616 629616 104 39

虚拟机区域结构31754 32346 216 18

mm_struct 260 260 1600 20

文件缓存300 300 640 25

信号缓存506 532 1152 28

签名手现金353 405 2112 15

task_x 状态780 780 1088 30

任务结构558 637 4160 7

匿名_vma 10598 11679 80 51

共享策略节点3393 3655 48 85

沼泽政策31 31 264 31

基数树节点43204 43204 584 28

idr_层_缓存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

我们整理了数百道**【运维技术栈面试题】**,成为您运维面试的得力助手。这将帮助您在面试时不慌不忙,并为高质量的面试做好准备。付费报价!

这些面试题涵盖了从Shell、MySQL到K8等云原生技术栈,不仅适合运维行业新人的面试需求,也适合对运维感兴趣的朋友是适合的。升职或换工作以增加薪水。 **

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

本次访谈集内容为

* **174 运维工程师面试题**

* **128道k8s面试题**

* **108 个shell 脚本面试问题**

* **200 个Linux 面试问题**

* **51 个Docker 面试问题**

* **35 个Jenkis 面试问题**

* **78 MongoDB 面试问题**

* **17 Ansible 面试问题**

* **60 个Dubbo 面试问题**

* **53 次卡夫卡访谈**

* **18道mysql面试题**

* **40 个nginx 面试题**

* **77 个Redis 面试问题**

* **28 守门员**

**总共1000多道面试题,内容丰富、信息丰富**

* **174 运维工程师面试题**

1.什么是运维?

2、运维人员经常需要在工作场所与操作人员进行交互。运营人员做什么工作?

3. 给定300台服务器,如何管理它们?

4.我们简单解释一下raid0、raid1和raid5这两种运行模式的运行原理和特点。

5、LVS、Nginx、HAproxy有什么区别?

6. Squid、Varinsh、Nginx 有什么区别,你在工作中如何选择?

7.Tomcat和Resin有什么区别?

8.什么是中间件?

9. Tomcat 的三个端口8005、8009、8080 是什么意思?

10.什么是CDN?

11.什么是网站灰度发布?

12、请简单说明一下DNS域名解析的过程。

13.什么是RabbitMQ?

14.Keepalived如何工作?

15.描述LVS工作流程的三种模式。

16、mysql的innodb如何识别锁定问题以及mysql如何减少主从复制延迟?

你想管理他们吗?

4.我们简单解释一下raid0、raid1和raid5这两种运行模式的运行原理和特点。

5、LVS、Nginx、HAproxy有什么区别?

6. Squid、Varinsh、Nginx 有什么区别,你在工作中如何选择?

7.Tomcat和Resin有什么区别?

8.什么是中间件?

9. Tomcat 的三个端口8005、8009、8080 是什么意思?

10.什么是CDN?

11.什么是网站灰度发布?

12、请简单说明一下DNS域名解析的过程。

13.什么是RabbitMQ?

14.Keepalived如何工作?

15.描述LVS工作流程的三种模式。

16、mysql的innodb如何识别锁定问题以及mysql如何减少主从复制延迟?

17.如何重置mysql root密码?

以上关于#Linux内存vmstat的相关内容摘自网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93015.html

(0)
CSDN's avatarCSDN
上一篇 2024年7月5日 上午1:08
下一篇 2024年7月5日 上午1:08

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注