vmstat在linux中是什么命令

vmstat在linux中是什么命令,第1张

vmstat是一个提供报告虚拟内存统计的工具,包括了系统内存、交换和实时处理器利用率。

命令详解

【命令星级】 ★★★★☆

【功能说明】

vmstat是Virtual Memory

Statistics(虚拟内存统计)的缩写,利用vmstat命令可以对 *** 作系统的内存信息、进程状态和CPU活动等进行监视。但是只能对系统的整体情况进行统计,无法对某个进程进行深入分析。

【语法格式】

vmstat [option] [delay [ count]]

vmstat [选项] [时间间隔[次数]]

说明:

1)在vmstat命令及后面的选项里,每个元素之间都至少有一个空格。

2)delay表示两次输出之间的间隔时间。

3)count表示按照delay指定的时间间隔统计的次数。

【选项说明】

表11-4针对该命令的参数选项进行了说明。

使用范例

范例11-12:显示虚拟内存使用情况。

[root@oldboy ~]# vmstat #<==如果省略“间隔时间”和“次数”参数,则仅显示一次报告后就退出

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 71756 38600 279084 0 0 24 6 15 18 0 0 100 0 0

[root@oldboyedu ~]# vmstat 5 #<==表示每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

0 0 0 71804 38600 279084 0 0 2 1 9 9 0 0 100 0 0

0 0 0 71756 38600 279084 0 0 0 0 8 8 0 0 100 0 0

0 0 0 71756 38600 279084 0 0 0 0 9 9 0 0 100 0 0

^C

[root@oldboyedu ~]# vmstat 5 6 #<==表示每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 71804 38600 279084 0 0 2 1 9 9 0 0 100 0 0

0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0

0 0 0 71756 38600 279084 0 0 0 0 8 9 0 0 100 0 0

0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0

0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0

0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0

[root@oldboy ~]#

以下是命令结果说明。

第1列:procs。

q r列表示运行和等待CPU时间片的进程数。

q b列表示在等待资源的进程数。

第2列:memory。

q swpd列表示使用虚拟内存大小。

q free列表示当前空闲的物理内存数量。

q buff列表示buffers 的内存数量。

q cache列表示cache的内存数量。

第3列:swap。

q si(swap in)列表示由磁盘调入内存,也就是内存进入内存交换区的数量。

q so(swap out)列表示由内存调入磁盘,也就是内存交换区进入内存的数量。

第4列:I/O项显示磁盘读写状况。

q bi列表示从块设备读入数据的总量(即读磁盘)(块/s)。

q bo列表示写入到块设备的数据总量(即写磁盘)(块/s)。

第5列:system显示采集间隔内发生的中断数。

q in列表示在某一时间间隔中观测到的每秒设备中断数。

q cs列表示每秒产生的上下文切换次数。

第6列:CPU项显示了CPU的使用状态。

q us列显示了用户进程消耗的CPU时间百分比。

q sy列显示了系统(内核)进程消耗的CPU时间百分比。

q id列显示了CPU处在空闲状态的时间百分比。

q wa列显示了IO等待所占用的CPU时间百分比。

q st列显示了虚拟机占用的CPU时间的百分比。

范例11-13:显示活跃和非活跃内存。

[root@oldboy ~]# 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 71804 160408 165848 0 0 2 1 9 9 0 0 100 0 0

0 0 0 71756 160408 165844 0 0 0 0 11 11 0 0 100 0 0

0 0 0 71756 160408 165844 0 0 0 0 12 9 0 0 100 0 0

0 0 0 71608 160412 165672 0 0 0 1302 218 341 12 9 80 0 0

0 0 0 71608 160412 165672 0 0 0 0 10 9 0 0 100 0 0

使用-a选项显示活跃和非活跃内存时,所显示的内容除增加了inact和active外,其他显示内容与范例11-12相同。

在Memory列增加的inact和active两列,说明如下。

q inact: 非活跃内存大小(当使用-a选项时显示)。

q active: 活跃的内存大小(当使用-a选项时显示)。

范例11-14:查看内存使用的详细信息。

[root@oldboy ~]# vmstat -s

486640 total memory

414572 used memory

165656 active memory

160420 inactive memory

72068 free memory

……

这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat。

范例11-15:查看磁盘的读/写。

[root@oldboy ~]# vmstat -d

disk- ------------reads------------ ------------writes-----------

-----IO------

total merged sectors ms total merged sectors ms cur sec

ram0 0 0 0 0 0 0 0 0 0 0

ram1 0 0 0 0 0 0 0 0 0 0

……

sr0 0 0 0 0 0 0 0 0 0 0

sda 14667 3623 594388 6737 12864 32806 365372 44250 0 30

这些信息主要来自于/proc/diskstats。其中的merged表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来 *** 作。

范例11-16:查看/dev/sda1磁盘的读写统计信息。

[root@oldboy ~]# vmstat -p /dev/sda1

sda1 reads read sectors writes requested writes

502 4162 14 68

这些信息主要来自于/proc/diskstats。各列的说明如下。

q reads:来自于这个分区的读的次数。

q read sectors:来自于这个分区的读扇区的次数。

q writes:来自于这个分区的写的次数。

q requested writes:来自于这个分区的写请求次数。

摘自:跟老男孩学Linux运维:核心系统命令实战 第11章 版权归原作者所有

除了保证程序的正确性以外,在项目开发中往往还关心性能和稳定性。我们往往要对内核、应用程序或整个系统进行性能优化。在性能优化中常用的手段如下:

使用top、vmstat、iostat、sysctl等常用工具

top命令用于显示处理器的活动状况。在缺省情况下,显示占用CPU最多的任务,并且每隔5s做一次刷新vmstat命令用于报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的统计信息iostat命令用于分析各个磁盘的传输闲忙状况netstat是用来检测网络信息的工具sar用于收集、报告或者保存系统活动信息,其中,sar用于显示数据,sar1和sar2用于收集和保存数据

sysctl是一个可用于改变正在运行中的Linux系统的接口。用sysctl 可以读取几白个以上的系统变量,如用sysctl—a可读取所有变量。

sysctl的实现原理是:所有的内核参数在/proc/sys中形成一个树状结构,sysctl系统调用的内核函数是sys_sysctl,匹配项目后,最后的读写在do_sysctl_strategy中完成。

2.使用高级分析手段,如OProfile、gprof

OProfile可以帮助用户识别诸如模块的占用时间、循环的展开、高速缓存的使用率低、低效的类型转换和冗余 *** 作、错误预测转移等问题。它收集有关处理器事件的信息,其中包括TLB的故障、停机、存储器访问以及缓存命中和未命中的指令的攫取数量。OProfile支持两种采样方式:基于事件的采样(Event Based)和基于时间的采样(Time Based)。基于事件的采样是OProfile只记录特定事件(比如L2缓存未命中)的发生次数,当达到用户设定的定值时Oprofile就记录一下(采一个样)。这种方式需要CPU内部有性能计数器(Performace Counter))。基于时间的采样是OProfile借助OS时钟中断的机制,在每个时钟中断,OProfile都会记录一次(采一次样)。引入它的目的在于,提供对没有性能计数器的CPU的支持,其精度相对于基于事件的采样要低,因为要借助OS时钟中断的支持,对于禁用中断的代码,OProfile不能对其进行分析。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7302760.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存