Linux 系统管理命令 - vmstat - 虚拟内存统计
命令详解
重要星级:
★★★★☆
功能说明:
vmstat 是 Virtual Memory Statistics ( 虚拟内存统计 ) 的缩写,利用 vmstat 命令可以对操作系统的内存信息、进程状态和 CPU 活动等进行监视。但是只能对系统的整体情况进行统计,无法对某个进程进行深入分析。
语法格式:
vmstat [option] [delay [count]]
vmstat [选项] [时间间隔 [次数]]
说明:
1. 在 iftop 命令后面的每一个选项里,每个元素之间都至少要有一个空格。
2. delay 表示两次输出之间的间隔时间。
3. count 表示按照 delay指定的时间间隔统计的次数。
选项说明:
-a :显示活跃和非活跃的内存 -f :显示从系统启动至今的 fork 进程数量 -m :显示 slab 信息 -n :只在开始时显示一次各字段名称 -s :显示内存相关统计信息及多种系统活动数量 ※ -d :显示磁盘相关统计信息 -p :显示指定磁盘分区统计信息 -S :使用指定单位显示。参数有 k、K、m、M,分别代表 、、 、 字节( byte )。默认单位为 K ( byte ) -t :统计信息带上时间戳
使用范例:
显示虚拟内存的使用情况 ( vmstat 5 6 ):
[root@localhost :~]# vmstat # 如果省略 "时间间隔" 和 "次数" 的参数,则仅显示一次报告后就退出
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st [root@localhost :~]# vmstat # 表示每5秒钟更新一次输出信息,循环输出,按 Ctrl+C 组合键停止输出
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st ^C [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
[root@localhost :~]#
以下是命令结果的详细说明:
第一列:procs:
. r 列:the number of processes waiting for run time.
表示运行和等待 CPU 时间片的进程数。( 如果等待运行的进程数越多,意味着CPU非常繁忙。另外,如果该参数长期大于和等于逻辑cpu个数,则CPU资源可能存在较大的瓶颈。 )
. b 列:the number of processes in uninterruptible sleep.
表示处在非中断睡眠状态的进程数。( 意味着进程被阻塞。主要是指被资源阻塞的进程对列数(比如IO资源、页面调度等),当这个值较大时,需要根据应用程序来进行分析,比如数据库产品,中间件应用等。 )
第二列:memory:
. swpd 列:the amount of virtual memory used.
表示使用虚拟内存的大小。如果虚拟内存使用较多,可能系统的物理内存比较吃紧,需要采取合适的方式来减少物理内存的使用。swapd 不为0,并不意味物理内存吃紧,如果 swapd 没变化,si、so 的值长期为0,这也是没有问题的
. free 列:the amount of idle memory.
表示当前空闲的物理内存数量。
. buff 列:the amount of memory used as buffers.
表示 buffers 的内存数量 ( 主要用于块设备缓存,单位:KB )。
. cache 列:the amount of memory used as cache.
表示 cache 的内存数量 ( 主要用于缓存文件,单位:KB )。
. inact 列:the amount of inactive memory. (-a option)
表示非活跃的内存总量。
. active: the amount of active memory. (-a option)
表示活跃的内存总量。
第三列:swap:
. si( swap in )列:Amount of memory swapped in from disk (/s).
表示由磁盘交换到 swap 虚拟内存的交换页数量,单位:KB/秒。也就是内存进入内存交换区的数量。如果这个值大于0,表示物理内存不够用或者内存泄露了
. so( swap out )列:Amount of memory swapped to disk (/s).
表示由 swap 虚拟内存交换到磁盘的交换页数量,单位:KB/秒,如果这个值大于0,表示物理内存不够用或者内存泄露了
. 内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。
当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合si和so,如果 free 很少,但是 si 和 so 也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将 RAM 段移到 SWAP DISK 的特殊磁盘段上,
这样会出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。
第四列:I/O项显示磁盘读写状况:
. bi 列:Blocks received from a block device (blocks/s).
表示从块设备读入的数据总量 ( 即读磁盘,单位:块/s )。
. bo 列:Blocks sent to a block device (blocks/s).
表示写入块设备的数据总量 ( 即写磁盘,单位:块/s )。
第五列:system 显示采集间隔内发生的中断数:
. in 列:the number of interrupts per second, including the clock.
表示在某一时间间隔中观测到的每秒设备中断数,包括时钟中断。
. cs 列:the number of context switches per second.
每秒产生的上下文 ( 环境 ) 切换次数。比如我们调用系统函数,就要进行上下文切换,而过多的上下文切换会浪费较多的 CPU 资源,这个数值应该越小越好。
第六列:CPU 项显示了 CPU 的使用状态:
. us 列:time spent running non-kernel code. (user time, including nice time)
表示用户消耗的 CPU 时间 ( 非内核进程占用时间 )(单位为百分比)。us 的值比较高时,说明用户进程消耗的 CPU 时间多
. sy 列:time spent running kernel code. (system time).
表示系统( 内核 )使用的 CPU 时间 ( 单位为百分比 )。sy 的值高时,说明系统内核消耗的 CPU 资源多,这并不是良性表现,我们应该检查原因。
. id 列:time spent idle. Prior to Linux 2.5., this includes IO-wait time.
空闲的 CPU 的时间( 百分比 ),在 Linux 2.5. 之前,这部分包含 IO 等待时间。
. wa 列:time spent waiting for IO. Prior to Linux 2.5., shown as zero.
表示等待 IO 的 CPU 时间,在 Linux 2.5. 之前,这个值为0 .这个指标意味着 CPU 在等待硬盘读写操作的时间,用百分比表示。wait 越大则机器 IO 性能就越差。说明 IO 等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈 ( 块操作 )。
. st 列:time stolen from a virtual machine. Prior to Linux 2.6., unknown.
表示虚拟机占用的 CPU 时间的百分比。
查看内存使用的详细信息 ( vmstat -s ):
[root@localhost :~]# vmstat -s
K total memory
K used memory
K active memory
K inactive memory
K free memory
K buffer memory
K swap cache
K total swap
K used swap
K free swap
non-nice user cpu ticks
nice user cpu ticks
system cpu ticks
idle cpu ticks
IO-wait cpu ticks
IRQ cpu ticks
softirq cpu ticks
stolen cpu ticks
pages paged in
pages paged out
pages swapped in
pages swapped out
interrupts
CPU context switches
boot time
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
sda
sr0
dm-
dm-
[root@localhost :~]#
说明:这些信息主要来自于 /proc/diskstats。其中的 merged 表示一次来自于合并的写/读请求,系统一般会把多个连接/临近的读/写请求合并到一起来操作。
查看 /dev/sda1 磁盘的读写统计信息:
[root@localhost :~]# vmstat -p /dev/sda1
sda1 reads read sectors writes requested writes [root@localhost :~]#
说明:这些信息主要来自于 /proc/diskstats。各列的说明具体如下:
. reads :来自于该分区的读的次数。
. read sectors :来自于该分区的读扇区的次数。
. writes :来自于该分区的写的次数。
. requested writes :来自于该分区的写请求次数
Linux 系统管理命令 - vmstat - 虚拟内存统计的更多相关文章
- Linux系统管理命令
Linux系统管理命令 命令 说明 stat 显示指定文件的相关信息,比ls命令显示内容更多 who 显示在线登录用户 hostname 显示主机名称 uname 显示系统信息 top 显示当前系统中 ...
- S11 Linux系统管理命令
11.1 lsof:查看进程打开的文件 11.2 uptime:显示系统的运行时间及负载 11.3 free:查看系统内存信息 11.4 iftop:动态显示网络接口流量信息 11.5 vmstat: ...
- 尚学linux课程---7、linux系统管理命令
尚学linux课程---7.linux系统管理命令 一.总结 一句话总结: 查网络:netstat -ntpl 查进程:ps 1.需要下载163yum源(从外部源同步仓库)里面的所有rpm文件? re ...
- Linux系统管理命令(1)accton的使用
安装: apt install acct accton accton命令是Linux系统进程管理命令之一,它的作用是打开进程统计,如果不带任何参数,即关闭进程统计. 具体用法为:acc ...
- 11.5 vmstat:虚拟内存统计
vmstat vmstat是Virtual Memory Statistics(虚拟内存统计)的缩写,利用vmstat命令可以对操作系统的内存信息.进程状态和CPU活动等进行监视.但是只能对系统的整体 ...
- Linux 系统管理命令 - mpstat - CPU信息统计
命令详解 重要星级: ★★★★☆ 功能说明: mpstat 是 Multiprocessor Statistics 的缩写,是一种实时系统监控工具.mpstat 命令会输出 CPU 的一些统计信息,这 ...
- linux系统管理命令(五)
[教程主题]:1.系统管理命令 [1.1]用户和组管理 在Linux操作系统中,任何文件都归属于某一特定的用户,而任何用户都隶属于至少一个用户组.用户是否有权限对某文件进行访问.读写以及执行,受到系统 ...
- Linux基础命令---vmstat显示虚拟内存状态
vmstat vmstat指令用来显示虚拟内存使用状态,同时也可以显示进程.cpu活动情况.vmstat报告有关进程.内存.分页.块IO.陷阱和CPU活动的信息.生成的第一份报告给出了自上次重新启动以 ...
- Linux 系统管理命令 - iotop - 动态显示磁盘 I/O 统计信息
命令详解 重要星级: ★★★★☆ 功能说明: iotop 命令是一款实时监控磁盘 I/O 的工具, 但必须以 root 用户的身份运行.使用 iotop 命令可以很方便的查看每个进程使用磁盘 I/O ...
随机推荐
- BZOJ1126: [POI2008]Uci
$n \leq 100,m \leq 100$,$n*m$的01矩形,问从左下角开始往上走,每次转弯只能向右,不能经过重复点,不能撞到1,到达点$(x,y)$的方案数,$mod \ \ k$. 感人肺 ...
- Eval 和 Bind 的区别
原文发布时间为:2008-10-20 -- 来源于本人的百度文章 [由搬家工具导入] 据绑定表达式包含在 <%# 和 %> 分隔符之内,并使用 Eval 和 Bind 函数。 Eval 函 ...
- poj 3041——Asteroids
poj 3041——Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22604 Accep ...
- Topcoder 2015_1C
A:大水题; B:求一颗树中,有多少条路径 不存在路径中一点是另外一点的祖先,(后面废话说了很多) 其实一个点 可以到它本身也可以是一条路径结论是:统计叶子的节点.(真简单粗暴 C:题目不说,说也说不 ...
- Wannafly挑战赛4
A(枚举) =w= B(枚举) 分析: 枚举每一位,考虑每位贡献,就是相当于在一段区间内找有多少1在奇数位上,有多少个1在偶数位上,维护一下各自前缀和就行了 时间复杂度O(32n) C(签到) D(d ...
- 通过k8s(Kubernetes)搭建jmeter的压测环境master-slave架构,实现弹性伸缩
在k8s上部署jmeter的mater和slave,根据压测需求动态增减master和slave节点数量,即可以完成压测任务,又可以是资源利用最大化 https://blog.kubernauts.i ...
- iOS远程推送原理
远程推送 就是从远程server推送消息给client的通知.当然须要联网. 远程推送服务APNs (Apple Push NotificationServices) 为什么须要远程推送通知? 传统获 ...
- 有两个字符串a,b。假设a="ab",b="cd",判断字符串c="acbd"是属于a、b的组合。满足组合后a、b的内部顺序均不变。
#include<iostream> #include<string> using namespace std; int check(string a,string b,str ...
- MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式
MVC的验证(模型注解和非侵入式脚本的结合使用) @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客 ...
- HiWorkV1.3版震撼公布,今日起正式公开測试!
今天HiWork迎来了公开測试和V1.3大版本号更迭,HiWork集成的机器人达到20种,未读消息提醒亦可从不同维度进行设置,不断变好真是件振奋人心的事儿呢. 在这个看重颜值(kan lian)的互联 ...