Linux磁盘监控思路分析

磁盘监控原理

设备又名I/O设备,泛指计算机系统中除主机以外的所有外部设备。

1.1 计算机分类

1.1.1 按照信息传输速度分:

1.低速设备:每秒传输信息仅几个字节或者百个字节,如:键盘、鼠标等

2.中速设备:每秒传输信息数千个字节或者数万个字节,如:打印机

3.高速设备:每秒传输信息数数10万个字节,如:磁盘

1.1.2 按照信息交换单位分

1.字符设备:以字符为输入/输出信息的单位,如:键盘,显示终端

2.块设备:以数据块为单位输入/输出信息,如:磁盘

注:何为数据块:磁盘中常以一个扇区作为一个数据块,一个扇区就是一个读写单位

一、磁盘性能指标

1、测试磁盘性能,使用命令:dd

因数据写入磁盘,可能是缓存写,直接写(不经过缓冲区直接写入磁盘),顺序io,随机io的区别所以,这种dd测试并不是很准确。

这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.

在使用前首先了解两个特殊设备
/dev/null 伪设备,回收站.写该文件不会产生IO
/dev/zero 伪设备,会产生空字符流,对它不会产生IO

测试磁盘写速率
[root@localhost ~]# time dd if=/dev/zero of=/test.dbf bs=8k count=300000   #注意:会在根目录下产生一个test.dbf文件,记得测试完后删除
300000+0 records in
300000+0 records out
2457600000 bytes (2.5 GB) copied, 68.191 seconds, 36.0 MB/s  #写速率36MB/sreal    1m13.960s
user    0m0.077s
sys    0m5.272s测试磁盘读速率
[root@localhost ~]# time dd if=/test.dbf of=/dev/null  bs=8k    #读test.dbf文件
300000+0 records in
300000+0 records out
2457600000 bytes (2.5 GB) copied, 36.2647 seconds, 67.8 MB/s    #读速率67.8MB/sreal    0m36.331s
user    0m0.018s
sys    0m2.823s

二、磁盘性能监控

1. 获取iops

[root@localhost ~]# iostat -m 3
Linux 2.6.18-238.el5 (localhost.localdomain)     08/03/2017avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.01    0.09    0.87    0.87    0.00   98.16Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda               6.91         0.44         0.36       6162       5009
sda1              0.01         0.00         0.00          1          0
sda2              6.90         0.44         0.36       6161       5009
dm-0            100.40         0.44         0.36       6160       5009
dm-1              0.01         0.00         0.00          0          0

tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。
“一次传输"意思是"一次I/O请求”。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。

- MB_read/s:每秒从设备(drive expressed)读取的数据量;
- MB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
- MB_read:读取的总数据量;
- MB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

2. 获取IOPS、io队列、io等待、io响应时间等

[root@localhost ~]# iostat -xm 3   #m 代表以MB为单位显示。 
Linux 2.6.18-238.el5 (localhost.localdomain)     08/03/2017avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.00    0.00    3.67   23.14    0.00   73.19Device:         rrqm/s    wrqm/s  r/s   w/s    rMB/s    wMB/s  avgrq-sz  avgqu-sz  await  svctm  %util
sda             304.67     0.33 636.00  3.33    76.76     0.01   245.93     2.40    3.53   1.56  99.87
sda1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda2            304.67     0.33 636.00  3.33    76.76     0.01   245.93     2.40    3.53   1.56  99.87
dm-0              0.00     0.00 941.33  3.67    76.78     0.01   166.43     3.25    3.30   1.06  99.87
dm-1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s: 每秒对该设备的写请求被合并次数
r/s: 每秒完成的读请求次数
w/s: 每秒完成的写请求次数
rkB/s: 每秒读数据量(kB为单位)
wkB/s: 每秒写数据量(kB为单位)
avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
avgqu-sz: 平均等待处理的IO请求队列长度
await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm: 平均每次IO请求的处理时间(毫秒为单位)
%util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

3. IO评估指标

  1. vmstat Block in /out
    bi+bo过大,而且vmstat cpu wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。

  2. IOwait time
    iostat iowait% 小于25%,说明IO性能处于良好的状态;

  3. util 磁盘使用率
    一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的,即 delta(use)/s/1000 (因为use的单位为毫秒)

    • 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
    • idle小于70% IO压力就较大了,一般读取速度有较多的wait。
    • 同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)。
  4. await 平均等待时间
    平均每次设备I/O操作的等待时间 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
    await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。

    • await 的参数要多和 svctm 来参考。差的过高就一定有 IO 的问题。
    • 如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
    • 如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用。
  5. avgqu-sz 平均I/O队列长度

    • 如果avgqu-sz比较大,也表示有大量io在等待。
      avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小。如果数据拿的大,IO 的数据会高。也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s。也就是讲,读写速度是这个来决定的。
      由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。

4. iotop

里面最重要的参数,actual disk read 和actual disk write 分别代表实际磁盘读写速度

然后下面,我们可以根据每一列进行io排序,就能知道io具体消耗是哪个进程导致的。

注意:TID代表的是线程号,如果是多线程的话,可以借助command 判断是哪个进程,也可以根据ps -eLf | grep TID 来获取到他的父进程号。

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

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

相关文章

leetCode.98. 验证二叉搜索树

leetCode.98. 验证二叉搜索树 题目描述 代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(n…

100张linux C/C++工程师面试高质量图

文章目录 杂项BIOSlinux开机启动流程内核启动流程网络编程网络编程流程tcp状态机三次握手四次断开reactor模型proactor模型select原理poll原理epoll原理文件系统虚拟文件系统文件系统调用阻塞IO非阻塞IO异步IO同步阻塞同步非阻塞IO多路复用进程管理进程状态程序加载内存管理MMU…

力扣(2024.06.30)

1. 81——搜索旋转排序数组2 已知存在一个按非降序排列的整数数组 nums &#xff0c;数组中的值不必互不相同。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了旋转&#xff0c;使数组变为 [nums[k], n…

vue响应式原理细节分享

在讲解之前&#xff0c;我们先了解一下数据响应式是什么&#xff1f;所谓数据响应式就是建立响应式数据与依赖&#xff08;调用了响应式数据的操作&#xff09;之间的关系&#xff0c;当响应式数据发生变化时&#xff0c;可以通知那些使用了这些响应式数据的依赖操作进行相关更…

前端:多服务端接口资源整合与zip打包下载

项目需求 前端项目开发中,有一个页面需要去整合多个服务接口返回的数据资源,并且需要将这多个服务接口接口返回的数据进行资源压缩,最终打包成zip压缩包,并在客户端完成下载。 基本需求梳理如下, 实现思路 这个需求点其实本质上还是传统的“文件下载”功能需求,常见的例如…

Python使用defaultdict简化值为list的字典

原始代码&#xff1a; from typing import Dictrelated_objects_for_fetch: Dict[str, list] {}for key, value in [(k1, v1), (k1, v2), (k2, v2), (k3, v3), (k2, v2)]:if key not in related_objects_for_fetch:related_objects_for_fetch[key] []if value not in (value…

贪心问题(POJ1700/1017/1065)(C++)

一、贪心问题 贪心算法 贪心算法&#xff08;greedy algorithm&#xff09;&#xff0c;是用计算机来模拟一个「贪心」的人做出决策的过程。这个人十分贪婪&#xff0c;每一步行动总是按某种指标选取最优的操作。而且他目光短浅&#xff0c;总是只看眼前&#xff0c;并不考虑…

第三天:LINK3D核心原理讲解【第1部分】

第三天:LINK3D核心原理讲解 LINK3D学习笔记 目标 了解LINK3D velodyne64线激光雷达LINK3D质心点提取效果: 分布在车道与墙体的交界处。 课程内容 LINK3D论文精讲LINK3D聚合关键点提取代码讲解LINK3D描述子匹配代码讲解除了ALOAM的线特征、面特征,还有其他点云特征吗,是…

如何使用 Postgres 折叠您的堆栈 实现一切#postgresql认证

技术蔓延如何蔓延 假设您正在开发一款新产品或新功能。一开始&#xff0c;您的团队会列出需要解决的技术问题。有些解决方案您将自行开发&#xff08;您的秘诀&#xff09;&#xff0c;而其他解决方案您将使用现有技术&#xff08;可能至少包括一个数据库&#xff09;来解决。…

人工智能期末复习笔记(更新中)

分类问题 分类&#xff1a;根据已知样本的某些特征&#xff0c;判断一个新的样本属于哪种已知的样本类 垃圾分类、图像分类 怎么解决分类问题 分类和回归的区别 1. 逻辑回归分类 用于解决分类问题的一种模型。根据数据特征或属性&#xff0c;计算其归属于某一类别 的概率P,…

ComfyUI局部重绘的四种方式 (附件工作流在最后)

前言 局部重绘需要在图片中选择重绘区域&#xff0c;点击图片右击选择Open in MaskEditor&#xff08;在蒙版编辑器中打开&#xff09;&#xff0c;用鼠标描绘出需要重绘的区域 方式一&#xff1a;重绘编码器 这种方式重绘比较生硬&#xff0c;需要额外搭配使用才行 方式二&…

el-upload 上传图片及回显照片和预览图片,文件流和http线上链接格式操作

<div v-for"(info, index) in zsjzqwhxqList.helicopterTourInfoList" :key"info.id" >编辑上传图片// oss返回线上地址http链接格式&#xff1a;<el-form-itemlabel"巡视结果照片":label-width"formLabelWidth"><el…

Cyber Weekly #13

赛博新闻 1、谷歌发布最强开源小模型Gemma-2 本周五&#xff08;6月28日&#xff09;凌晨&#xff0c;谷歌发布最强开源小模型Gemma-2&#xff0c;分别为9B&#xff08;90亿&#xff09;和27B&#xff08;270亿&#xff09;参数规模&#xff0c;其中9B 模型在多项基准测试中均…

颍川韩氏,来自战国七雄韩国的豪族

颍川是战国七雄韩国故土&#xff0c;韩国被秦国灭国后&#xff0c;王公贵族们除了坚决反秦的被杀了外&#xff0c;大部分都留存了下来。这些人在楚、汉反秦战争中&#xff0c;成为反秦统一战线的重要力量&#xff0c;其中两人先后被封为重新恢复的韩国的国王。 一个是横阳君韩…

Windows系统下,将nginx注册为本地服【亲测可用】

在Windows系统下&#xff0c;将nginx注册为本地服务并设置为开机自动运行&#xff0c;可以通过以下步骤进行&#xff1a; 下载Windows Service Wrapper&#xff1a; 访问 WinSW 项目页面&#xff0c;下载适用于Windows的版本。 准备nginx&#xff1a; 确保你已经下载并解压了n…

共有5部手机,如果通过服务器让1号手机执行打开 “闲鱼.js“ 脚本

1.手机端Auto.js脚本&#xff1a; 每部手机需要在连接时发送一个唯一的标识符&#xff08;如设备ID&#xff09;&#xff0c;并接收服务器发送的指令以执行指定的脚本。 // Auto.js脚本连接WebSocket服务器并发送设备ID var WebSocket require(ws); var ws new WebSocket(w…

大模型上下文长度扩展中的检索增强技术简述

基于Transformer的语言模型在众多自然语言处理任务上都取得了十分优异的成绩&#xff0c;在一些任务上已经达到SOTA的效果。但是&#xff0c;经过预训练后&#xff0c;模型能够较好处理的序列长度就固定下来。而当前的众多场景往往需要处理很长的上下文&#xff08;如&#xff…

CppTest单元测试框架(更新)

目录 1 背景2 设计3 实现4 使用4.1 主函数4.2 使用方法 1 背景 前面文章单元测试之CppTest测试框架中讲述利用宏ADD_SUITE将测试用例自动增加到测试框架中。但在使用中发现一个问题&#xff0c;就是通过宏ADD_SUITE增加多个测试Suite时&#xff0c;每次运行时都是所有测试Suit…

逆向开发环境准备

JDK安装 AndroidStudio安装 默认sdk路径 C:\Users\Administrator\AppData\Local\Android\Sdk 将platform-tools所在的目录添加到path C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools 主要目的是使用该目录下的adb等命令 将tools所在的目录添加到path C:\Us…

1-5题查询 - 高频 SQL 50 题基础版

目录 1. 相关知识点2. 例题2.1.可回收且低脂的产品2.2.寻找用户推荐人2.3.大的国家2.4. 文章浏览 I2.5. 无效的推文 1. 相关知识点 sql判断&#xff0c;不包含null&#xff0c;判断不出来distinct是通过查询的结果来去除重复记录ASC升序计算字符长度 CHAR_LENGTH() 或 LENGTH(…