vmstat调优命令

news2024/11/26 2:52:02

目录

一、vmstat命令描述

二、vmstat的语法格式

三、压力测试工具stress

实验:

模拟I/O负载

查看是哪个进程I/O读写高:pidstat -d (-d参数查看各进程io情况)

总结


一、vmstat命令描述

vmstat命令:  用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况

1、vmstat命令

在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。

在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。

分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。

当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)。

二、vmstat的语法格式

Vmstat的语法:

Vmstat  [秒数]  [次数]   指定多少秒显示一次,共显示几次

2.1、vmstat命令参数

参数解释

-a:显示活跃和非活跃内存

-f:显示从系统启动至今的fork数量 。

-m:显示slab信息

-n:只在开始时显示一次各字段名称。

-s:显示内存相关统计信息及多种系统活动数量。

delay:刷新时间间隔。如果不指定,只显示一条结果。

count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。

-d:显示磁盘相关统计信息。

-p:显示指定磁盘分区统计信息

-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)

-V:显示vmstat版本信息。

示例:

参数解释

Vmstat -a  #显示活跃和非活跃内存

字段说明:

前面的Procs(进程)

  r  运行队列中进程数量,这个值也可以判断是否需要增加CPU(长期大于1)

  b  等待IO的进程数量

在Memory(内存)的字段中

  Swpd  使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统的性能

  Free   空闲物理内存大小

  Buff   用作缓冲的内存大小

  Cache  用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache,那么磁盘的读IO bi会非常小。

这里vmstat -a中用inact/active(活跃与否) 来取代 buff/cache 的内存输出信息。

Swap字段中

  Si  每秒从交换区写到内存的大小,由磁盘调入内存

  So  每秒写入交换区的内存大小,由内存调入磁盘

在IO的字段当中(现在的Linux版本块的大小为1KB)

  Bi  每秒读取的块数

  Bo  每秒写入的块数

注意:随机磁盘读写的时候,这两个值越大(如果超出1024k)能看到CPU在IO等待的值也会越大

在system字段中

  In 每秒中断数,包括时钟中断

  Cs  每秒上下文切换数

这两个值越大,会看到由内核消耗的CPU时间会越大

接下来的CPU字段当中(以百分比显示)

  Us  用户进程执行时间百分比(user time)

  Sy  内核系统进程执行时间百分比(system time)

  Wa  IO等待时间百分比

  Id  空闲时间百分比

参数解释

Vmstat -f  #显示从系统启动至今的fork数量

显示系统启动后创建的进程数,linux下创建进程的系统调用是fork

参数解释

Vmstat -s  #显示内存相关统计信息以及多种系统活动数量

参数解释

Vmstat -d  #显示磁盘相关统计信息

参数解释

Vmstat -p [硬盘设备]  #查看指定硬盘分区的读写统计信息

参数解释

Vmstat -m   #查看系统的slab信息

三、压力测试工具stress

1、工具简介:

stress是Linux下的一个压力测试工具,可以对cpu、memory(内存)、IO以及磁盘进行压力测试,可以指定负载的cpu个数

2、参数详解

-c : --cpu  产生n个进程,每个进程都反复不停的计算随机数的平方根

-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

-m :-vm  产生n个进程,每个进程不断分配和释放内存

-t : --timout   在n秒后结束进程

-d : --hdd  产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件)

下载压力工具软件包

[root@ly ~]# yum install -y epel-release    

注:需要先下载所需要的依赖包否则直接下载stress软件包工具不成功

3.1、下载压力测试工具

[root@ly ~]# yum install -y stress

实验:

1、压力测试,查看CPU的使用率

采用stress压力测试工具,模拟CPU 负载的情况,高IO的情况,使用uptime查看平均负载,使用mvstat和pidstat工具,找出负载高的根源。

查看系统负载情况 uptime

模拟cpu 负载:

压力测试前,cpu的使用率及io的使用情况

压力测试前初始信息

使用stress工具进行压力测试

进行压力测试 对2快cpu 进行增压 持续600s

pidstat -u 5  查看运行中的进程和任务,每5秒刷新一次

找到原因:是因为stress进程产生的压力过大

用kill -9杀死指定占用率大的进程,再查看占用率

这时的cpu释放出来,占用率降低,所有数据恢复正常状态

模拟I/O负载

使用stress工具进行压力测试

-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

进行压力测试,产生10个进程,持续600秒

注:使用stress无法模拟iowait升高,但sys表示内核进程使用的 CPU 百分比。升高。stress -i参数表示通过系统调用sync来模拟IO问题,但sync是刷新内存缓冲区数据到磁盘中,以确保同步。如果内存缓冲区内没多少数据,读写到磁盘中的数据也就不多,没法产生IO压力。使用SSD(固态硬盘)磁盘的环境中尤为明显,iowait一直为0,但因为大量系统调用,导致系统CPU使用率sys升高。

命令:stress --io 15 --hdd 15 --timeout 600s

-d : --hdd  产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件)

-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

使用 --hdd 产生函数的进程,就可以使bi和bo 的数值升高,读写性能负载

查询进程占用情况

查看是哪个进程I/O读写高:pidstat -d (-d参数查看各进程io情况

查看进程找到指定进程杀死

Kill -9 杀掉指定进程后查看

这时的 %iowait数值恢复正常

总结

如果一个程序运行在一个处理器的机器上,并且占用所有的处理器情况下,从而导致CPU过载,就可以通过mvstat进行诊断排错,但是如果不占用所有的处理器,而只占用在一个多处理器的机器上,从而导致一个cpu过载,其他cpu处于空闲,mvstat就不如mpstat显示的信息详细

当%idle数字较低时,就是CPU不足的原因

当%iowait数字较高时,当前负载下的I/O子系统出现了某些问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT写文章

ChatGPT写小文章 只是个人对写小XX的心得?从知乎,知网自己总结的,有问题,可以留个言我改一下 被CSDN制裁过 关键词:论文 文章目录 ChatGPT写小文章-1.写XX模仿实战(狗头)0.XX组成1.好XX前提:2.标题3.摘要4.关键词5.概述6.实验数据、公式或者设计7.结论,思考8.参…

vsce报错The Personal Access Token verification has failed.,vsce login登录时同报此错的解决办法

本篇文章主要讲解vscode插件开发提交插件版本时出现的token报错问题的解决办法。 日期:2023年6月15日 作者:任聪聪 报错现象 1.vsce login 用户id报错如下: 具体报错内容: The Personal Access Token verification has failed. Additional information: Error: {"…

7.vue3医疗在线问诊项目 - _极速问诊-支付功能实现 ==> 预支付信息渲染、支付流程解析、订单生成、支付完成

7.vue3医疗在线问诊项目 - _极速问诊-支付功能实现 > 预支付信息渲染、支付流程解析、订单生成、支付完成 问诊支付-路由和预支付信息渲染{#pay-html} 实现:问诊页面路由配置,获取问诊预支付信息并渲染。 需求: 配置预订单信息页面路由定…

[学习笔记] [机器学习] 12. [上] HMM 隐马尔可夫算法(马尔科夫链、HMM 三类问题、前后后向算法、维特比算法、鲍姆-韦尔奇算法、API 及实例)

学习目标: 了解什么是马尔科夫链知道什么是 HMM 模型知道前向后向算法评估观察序列概率知道维特比算法解码隐藏状态序列了解鲍姆-韦尔奇算法知道 HMM 模型 API 的使用 1. 马尔科夫链 学习目标: 知道什么是马尔科夫链 在机器学习算法中,马…

【MySQL入门】-- 数据库介绍

目录 1.为什么要使用数据库? 2.数据库相关概念 3.数据库与数据库管理系统的关系 4.常见数据库排名 5.常见数据库的简单介绍 6.MySQL介绍 7.MySQL版本的选择 8.关系型数据库和非关系型数据库 9.关系型数据库设计规则以及规范 10.表的关系(一对…

【Proteus仿真】51单片机+ADC0808模数转换数码管显示

【Proteus仿真】51单片机+ADC0808模数转换数码管显示 📺Proteus仿真演示: 📗ADC0808主要数据参数简介 8路输入通道,8位A/D转换器,即分辨率为8位:0 - 255。转换时间为100μs(时钟为640KHz时),130μs(时钟为500KHz时)。模拟输入电压范围0~+5V,不需零点和满刻度校准。…

谷粒商城第一天-项目概述、架构、Linux环境搭建

目录 一、学习的内容 一、常见的商城模式 二、谷粒商城项目的微服务架构 三、谷粒商城项目的微服务划分 四、谷粒商城项目的亮点 五、微服务的基本的概念 二、完成的进度 三、学到的东西 四、总结 6月9日正式下决心开始学习谷粒商城项目,之前早就听说谷粒商…

Powerjob部署安装

安装思路: 1、本地环境和具体生产环境都要安装部署jdk-------------------参考jdk安装 2、本地部署maven-------------------参考maven安装 3、本地部署powerjob 4、生成jar包,上传生产环境启动 部署: 1、下载上传Powerjob包,本次选取4.0.1版本 https://github.com/Powe…

arx程序与cgal冲突的地方,记录一下

arx本身是个dll,而且运行库是 /md,多线程,无论debug还是release都是/md,而不是/mtd cgal编译出来的库,release版本是Mt,debug版本是MTd 感觉debug版本是MTd对arx没用,不知道这种看法对不对&…

stable diffusion webui 安装部署(linux系统)

文中部署stable diffusion webui所使用的机器是腾讯云服务器linux系统,centos7 一 环境准备 在这里使用anaconda安装,优势就是可以方便地安装和管理软件包,同一系统上可以同时使用不同版本的 Python 和第三方软件包。如果你需要安装多个系统…

图像目标检测 - CenterNet: Objects as Points (arXiv 2019)

CenterNet: Objects as Points - 目标作为点(arXiv 2019) 摘要1. 引言2. 相关工作3. 准备工作4. 目标作为点4.1 3D 检测4.2 人体姿态估计 5. 实施细节6. 实验6.1 目标检测6.1.1 附加实验 6.2 3D 检测6.3 姿态估计 7. 结论References附录A:模型…

华为防火墙之攻击防范

1.DoS攻击简介 攻击和防御技术发展史 DoS是Denial of Service的简称,即拒绝服务。造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法正常提供服务。 2.单包攻击及防御 最常见的DoS攻击就是单包攻击,一般都是以个人为单位的攻击者…

回归预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元多输入单输出回归预测 预测效果 基本介绍 MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元多输入单输出回归预测,运行环境Matlab2020b及以上。优化正则化率、学习率、隐藏层单元数。…

大数据Doris(四十二):Routine Load导入Kafka数据到Doris

文章目录 Routine Load导入Kafka数据到Doris 一、创建 Doris 表 二、创建 Kafka topic 三、创建 Routine Load

PTA OJ 合集 C语言

目录 7-1 查找整数 7-2 大笨钟的心情 7-3 将数组中的数逆序存放 7-6 矩阵运算 7-7 求矩阵的局部极大值 7-8 矩阵A乘以B 7-9 找鞍点 6-1 查找数组元素最大值 6-2 在数组中查找指定元素 7-5 求数列之和[A] 6-3 使用函数的选择法排序 6-5 计算天数[2] 6-4 求矩阵不靠…

ABAP 新语法--Open SQL

1. 常量 1.1 常量赋值 常量字段可以用来为内表中的部分字段赋初始值,字段类型和长度依据输入常量的值决定 SELECTmara~matnr, " 物料号mara~matkl, " 物料组mara~mtart, " 物料类型 AS lkenz, " 删除标识,常量空字符串123 AS fla…

STM32 Proteus仿真自动红外避障小车前进后退左右转 -0040

STM32 Proteus仿真自动红外避障小车前进后退左右转 -0040 Proteus仿真小实验: STM32 Proteus仿真自动红外避障小车前进后退左右转 -0040 功能: 硬件组成:STM32F103C LCD1602 L298N电机控制电路2个电机一个左轮一个右轮 2个按键(模拟两个避…

Web安全:bWAPP 靶场搭建.(集成了各种常见漏洞和最新漏洞的开源Web应用程序)

Web安全:bWAPP 靶场搭建. bWAPP是一个集成了了常见漏洞的 web 应用程序,目的是作为漏洞测试的演练场,帮助安全爱好者,开发人员和学生发现和防止Web漏洞。它有超过100个网络漏洞数据,包括所有主要的已知网络漏洞. 目录…

谷粒商城第三天-微服务中基本组件的使用

目录 一、前言 二、学习的内容 一、Nacos的服务注册/发现 1. 导依赖,nacos-discovery java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho 2. 在application.yml中声明nacos服务器的ip地址和端口号&…

MySQL常见问题

优化慢查询 慢查询可能出现的情况: 聚合查询多表查询表数据量过大深度分页查询 表象:页面加载过慢,接口压测响应时间过长(超过1s) 如何定位慢查询? 方案一:开源工具 可以使用相应的调试工具&a…