前言:

磁盘I/O这块也属于笔者比较薄弱的知识点。平时工作中基本没有很好的认知,也没有很好的检测工具来确认磁盘IO问题。

照猫画虎的从网络上找了很多文章,还是比较希望能够转化为自己的知识点。

1.基础知识

先上图(图片来自极客时间 <<Linux性能优化实战>>):

我们从上到下的来分析整个层次,从应用程序发起调用到本地磁盘,基本经历了以下几个层次:

1.1 应用程序调用库函数

就java程序而言,我们一般通过

// 获取指定路径的文件引用
File f = new File("filepath");
// 进程文件的修改、读取等操作...
FileInputStream fis = new FileInputStream(f);
fis.read();

1.2 调用虚拟文件系统API

在应用程序与文件系统之间横亘着一个虚拟文件系统(VFS),为什么要有这个呢?

因为文件系统类型不同,提供的API也多多少少有所不同,那么应用程序直接调用不同文件系统还是有点困难的

这是VFS便挺身而出,它定义了一组所有文件系统都支持的数据结构和标准接口,此时,应用程序直接调用VFS的API即可,VFS再调用后面的不同文件系统。

所以,VFS屏蔽了文件系统的异构性,更便于应用程序的调用。

1.3 文件系统

Linux支持各种不同的文件系统,如Ext4、NFS等

具体知识点可以参考其他文章

1.4 通用块层

这个还是比较陌生的一点,为什么会有这么一层呢?

大家可以先看下1.5关于磁盘块的介绍

既然底层磁盘类型都有所不同,那么类似于文件系统(不同的文件系统可能会提供不同的API调用方式,通过VFS来屏蔽不一致),这里通过通用块层来屏蔽底层不同块设备的差异带来的影响。

通用块层处于文件系统和磁盘驱动中间的一个块设备抽象层,主要有两个功能:

* 提供给文件系统标准接口,屏蔽底层不同设备块的差异;提供统一框架来管理不同设备块;

* 整理文件系统的I/O请求,通过重新排序、请求合并等方式,提高磁盘读写的效率;

1.5 磁盘块

在Linux中,磁盘是作为一个块设备来管理的,以块为单位来读写数据,支持随机读写。

每个块设备被赋予两个设备号,主次设备号。主设备号用在驱动程序中,用来区分设备类型;次设备号用来给多个同类设备编号

什么是块?

磁盘读写的最小单位为扇区,扇区只有512B,如果每次磁盘读写只有一个扇区大小的话,效率低下,所以文件系统把多个连续扇区组成一个逻辑块,然后以块为单位来管理操作逻辑块。常见块大小为4KB。(固态磁盘和机械磁盘有所不同)

磁盘本身有不同类型:SATA、SCSI、IDE等

根据使用方式不同又被分为不同的架构:独立磁盘块、磁盘阵列(RAID)、网络存储集群等

2.磁盘常见性能指标

如何评价磁盘各种性能高低,需要从几个常见的性能指标来看

2.1 使用率

磁盘处理I/O的时间百分比。使用率高说明磁盘一直处于工作中,过高的磁盘使用率,通常意味着磁盘I/O存在性能瓶颈。

2.2 饱和度

磁盘处理I/O的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈,当饱和度为100%时,磁盘无法接收新的请求。

这一点不同于使用率,当使用率100%时,磁盘依然有可能接收新的I/O请求。

2.3 IOPS

Input/Output Per Second的简写,每秒的I/O请求数(这个包括input和output)

2.4 吞吐量

指磁盘每秒的I/O请求大小(同样包含input和output)

吞吐量/IOPS=平均每次请求I/O大小

2.5 响应时间

应用程序从发出I/O请求到接收到响应的间隔时间

3 I/O性能指标监控

有了上述指标后,我们如何通过工具或者命令来监控这些指标呢

3.1 磁盘I/O性能指标监控

最常用的命令就是iostat,有关iostat命令的详细介绍,可以参考笔者另一篇博客

# -d 指定只输出磁盘信息
# -x 展示磁盘信息扩展项
# 2秒输出一次
root@7bc18553126f:/tmp# iostat -d -x 2
Linux 5.10.76-linuxkit (7bc18553126f)   03/27/22    _aarch64_   (4 CPU)Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
vda              3.29    0.76    102.58    171.49     0.65     3.83  16.41  83.37    0.17    1.40   0.00    31.20   224.61   0.39   0.16Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
vda              0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
vda              0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

具体的输出信息可以通过man iostat命令来查看。

磁盘使用率 %util
IOPS r/s+w/s
吞吐量 rKb/s+wkB/s
响应时间 r_await+w_await

当然上述都是从磁盘的角度来展示的数据,有关数据也都是平均数据。

有关于饱和度的验证,通过iostat命令并不能得出,可以把平均请求队列长度(aqu-sz)或者读写请求完成的等待时间,与基准测试结果进行比较后进行对比,综合评估磁盘的饱和情况。

3.2 进程I/O指标监控

通过iostat检测到的是全局的I/O情况,如果我们需要知道具体进程的I/O指标,则需要通过pidstat命令来查看

root@91230cc467cc:/usr/local/tomcat# pidstat -d 2
Linux 5.10.76-linuxkit (91230cc467cc)   03/28/22    _x86_64_    (4 CPU)02:28:02      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
02:28:04        0         1      0.00 307232.00      0.00       0  java
02:28:04        0        72      0.00      2.00      2.00       0  pidstat02:28:04      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
02:28:06        0         1     11.94 254752.24      0.00       0  java
02:28:06        0        72      0.00      1.99      1.99       0  pidstat
进程每秒读取数据大小 kB_rd/s
进程每秒写入数据大小 kB_wr/s
进程每秒取消的写请求大小 kB_ccwr/s
块I/O延迟 iodelay

通过pidstat -d命令可以查看出哪些进程的磁盘读写请求占用比较大。

还有一个更直观的命令:iotop,类似于top命令,它可以从io角度来对进程进行排序

总结:

磁盘性能指标主要就是使用率、IOPS、吞吐量以及相应时间

通过iostat命令以及pidstat可以从磁盘和进程两个维度来展示性能指标。

参考:

极客时间 <<Linux性能优化实战>>

磁盘性能指标监控实战相关推荐

  1. 机器网络配置与性能指标监控实战

    前言: 有关于网络问题,又是笔者另一个薄弱知识点. 应该说是理论知识不够扎实,每次理论学的差不多的时候,由于缺乏实战,一段时间之后,又忘记的差不多了. 每次重复这种情况还是蛮尴尬的,所以理论结合实战才 ...

  2. 《LoadRunner性能测试巧匠训练营》——3.3 场景监控实战

    本节书摘来自华章计算机<LoadRunner性能测试巧匠训练营>一书中的第3章,第3.3节,作者:赵 强 邹伟伟 任健勇 更多章节内容可以访问云栖社区"华章计算机"公众 ...

  3. 视频教程-Prometheus+Grafana企业级监控实战(运维篇)2020年视频教程-Linux

    Prometheus+Grafana企业级监控实战(运维篇)2020年视频教程 资深DevOps工程师,曾经在华为,乐逗游戏工作,目前就职于知名物流公司工作 希望结合工作实践 给大家带来很多干货 周龙 ...

  4. Spring Boot应用监控实战

    概述 之前讲过Docker容器的可视化监控,即监控容器的运行情况,包括 CPU使用率.内存占用.网络状况以及磁盘空间等等一系列信息.同样利用SpringBoot作为微服务单元的实例化技术选型时,我们不 ...

  5. CPU、内存、磁盘性能监控

    CPU监控 网络由设备.服务器.路由器.交换机和其他网络组件组成.CPU 是网络中所有硬件设备的组成部分.它负责设备的稳定性和性能.企业严重依赖网络,企业硬件的处理能力决定了网络的容量.随着 CPU ...

  6. linux 磁盘性能监控

    linux下对于查看进程的命令非常多也非常强大.经常使用的如:ps  top 可是在磁盘性能监控方面就没有那么统一了. 以下列举一些磁盘监控命令.此处仅仅是起到抛砖引玉作用,具体使用參数请參考man手 ...

  7. 百度网络监控实战:NetRadar横空出世(上)

    原文:https://mp.weixin.qq.com/s/VBShicsqReDtureKAdEgDA 转自订阅号「AIOps智能运维」,已授权运维帮转发 作者简介:运小贝,百度高级研发工程师 负责 ...

  8. 【Redis】18.缓存预热、缓存雪崩、缓存击穿、缓存穿透、性能指标监控等企业级解决方案

    缓存预热 在高请求之前,做好一系列措施,保证大量用户数量点击造成灾难. 请求数量较高 主从之间数据吞吐量较大,数据同步操作频度较高 缓存预热解决方案 前置准备工作: 日常例行统计数据访问记录,统计访问 ...

  9. zabbix磁盘的自动发现与磁盘指标监控

    由于最近项目上需要对服务器监控进行规范化监控,再磁盘这块有几种方式 1.如果每台设备的磁盘是一样的 比如都有vda,vdb两块磁盘那么可以采用 1.1 每台客户端写脚本,服务端每台设备去加上监控项(- ...

  10. sql数据库性能指标_SQL Server磁盘性能指标–第2部分–其他重要的磁盘性能指标

    sql数据库性能指标 previous part of the SQL Server performance metrics series, we presented the most importa ...

最新文章

  1. 移动端开发者眼中的前端开发流程变迁与前后端分离
  2. ACM/OI卡常技巧总结(clock大法好)
  3. 开发日记-20190719 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 12
  4. Scalaz(23)- 泛函数据结构: Zipper-游标定位
  5. python 字符串匹配 正则 re
  6. SolrCloud7.4(Jetty容器)+mysql oracle 部署与应用
  7. Extra Data after Last Expected Column:hawq建外表load数据报错
  8. 利用 assistant_如何使用Dialogflow对Google Assistant操作实施本地履行
  9. java多线程---进程与线程
  10. WSDL文件生成Java代码
  11. Java宠物管理系统(运用接口简易版)
  12. Shell脚本中各种括号用法
  13. 面向对象的五个基本原则
  14. dellt130服务器做系统,戴尔Dell R330;T130安装系统后键盘鼠标不能使用
  15. 使用Apache-ANT进行jar包合并
  16. JVM 双亲委派机制(通俗易懂)
  17. SpellBERT:预训练模型与中文拼写纠错
  18. 关于求字体识别不出来
  19. python Graphillion简介
  20. Selenium基础知识 多窗口处理

热门文章

  1. 神灵武装908服务器维护,神陵武装127服银河之心开服时间表_神陵武装新区开服预告_第一手游网手游开服表...
  2. matlab均值量化函数_Matlab量化函数quantiz解析
  3. 基于深度学习cnnrnn的中文期刊分类(完整代码+课程设计)
  4. 计算机应用基础网课试题及答案2020,2019-2020年度公共课计算机应用基础考试试题附答案(5页)-原创力文档...
  5. SSD的FTL——深入浅出SSD笔记
  6. html5 js获取设备信息,js怎么获取电脑硬件信息
  7. Markdown - 推荐一个markdown在线编辑器
  8. 永洪科技怎么样_「永洪科技」北京永洪商智科技有限公司怎么样? - 职友集
  9. 【质量管理】SMT电子厂超实用的六西格玛(6σ)质量管理工具一览表!
  10. 影响中国软件人物之:倪光南院士