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 ...
随机推荐
- Http、TCP/IP、Socket的区别
网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...
- putty 配置
http://blog.sanctum.geek.nz/putty-configuration/ PuTTY configuration Posted on December 22, 2012 PuT ...
- 进程Queue、线程Queue、堆栈、生产者消费者模型
没学队列之前,可以用文件实现进程之间通信 但是有2个问题: 1. 速度慢:文件是保存在硬盘空间 2. 为了数据安全要加锁(处理锁是一件很麻烦的事,容易死锁,建议自己轻易不要处理锁) 队列:队列是基于管 ...
- 无向图生成树计数 基尔霍夫矩阵 SPOJ Highways
基尔霍夫矩阵 https://blog.csdn.net/w4149/article/details/77387045 https://blog.csdn.net/qq_29963431/articl ...
- 洛谷——P1265 公路修建
P1265 公路修建 题目描述 某国有n个城市,它们互相之间没有公路相通,因此交通十分不便.为解决这一“行路难”的问题,政府决定修建公路.修建公路的任务由各城市共同完成. 修建工程分若干轮完成.在每一 ...
- Oracle计算时间差
Oracle计算时间差表达式 --获取两时间的相差豪秒数 select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - ...
- NoSQL之Memcached
一.Memcached概念 Memcached是NoSQL产品之中的一个,是一个暂时性键值存储NoSQL数据库,过去被大量使用在互联网站点中,作为应用和数据库之间的缓存层,大大提高查询和訪问速度. M ...
- InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts
在一台server中以各数据库的备份文件为数据文件启动多个MySQL实例供SQL Review使用. 之前执行一直没有问题(最多的时候有23个MySQL实例同一时候执行).后来新配置了一台server ...
- Intel为Google的物联网平台Brillo推出开发板Edison
Brillo* is a solution from Google* for building connected devices. Incorporating aspects of the Andr ...
- SPOJ QTREE6 lct
题目链接 岛娘出的题.还是比較easy的 #include <iostream> #include <fstream> #include <string> #inc ...