创作

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

Linux磁盘I/O的性能指标和查看性能工具

马哥Linux运维 来源:CSDN技术社区 作者:CSDN技术社区 2022-05-14 15:21 次阅读

文件系统层(file system layer)通用块层( general block layer)设备层(device layer)构成。

其中,通用块层是 Linux 磁盘 I/O 的核心。向上,它为访问文件系统和应用程序的块设备提供了标准接口;向下,它将各种异构磁盘设备抽象为一个统一的块设备,并响应文件系统和应用程序发送的 I/O。

在本文中,我们来看看磁盘的性能指标以及如何查看这些指标。

Linux 磁盘性能指标

在衡量磁盘性能时,我们经常提到五个常见指标:利用率、饱和度、IOPS、吞吐量和响应时间。这五个指标是衡量磁盘性能的基本指标。

  1. 利用率(Utilization):磁盘处理 I/O 的时间百分比。过度使用(如超过 80%)通常意味着磁盘 I/O 存在性能瓶颈。

  2. 饱和度(Saturation):指磁盘处理 I/O 的繁忙程度。过度饱和意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。

  3. IOPS(Input/Output Per Second):指每秒 I/O 请求的数量。

  4. 吞吐量(Throughput):每秒 I/O 请求的大小。

  5. 响应时间(Response time):指发送 I/O 请求和接收响应之间的间隔时间。

这里需要注意的是,关于利用率,我们只考虑有无 I/O,而不考虑 I/O 的大小。也就是说,当利用率为 100% 时,磁盘仍有可能接受新的 I/O 请求。

一般来说,在为应用选择服务器时,首先要对磁盘的 I/O 性能进行基准测试,这样才能准确评估磁盘性能,以判断是否能够满足应用的需求。

当然,这需要你在随机读顺序读随机写顺序写等各种应用场景下测试不同 I/O 大小(通常是 512B ~ 1MB 之间)的性能。

磁盘 I/O 观察

首先要观察的是每个磁盘的使用情况。iostat 是最常用的磁盘 I/O 性能观察工具。它提供了各种常用性能指标,例如每个磁盘的利用率IOPS吞吐量。当然,这些指标实际上来自 /proc/diskstats

以下是 iostat 的输出示例:

#-d-xmeansdisplayalldiskI/Operformance
$iostat-d-x1
Devicer/sw/srkB/swkB/srrqm/swrqm/s%rrqm%wrqmr_awaitw_awaitaqu-szrareq-szwareq-szsvctm%util
loop00.000.000.000.000.000.000.000.000.000.000.000.000.000.000.00
loop10.000.000.000.000.000.000.000.000.000.000.000.000.000.000.00
sda0.000.000.000.000.000.000.000.000.000.000.000.000.000.000.00
sdb0.000.000.000.000.000.000.000.000.000.000.000.000.000.000.00

在上述指标中,您需要注意的是:

  • %util 是我们前面提到的磁盘 I/O 使用情况

  • r/sw/s 是 IOPS

  • rkB/swkB/s 是吞吐量

  • r_awaitw_await 是响应时间

您可能已经注意到 iostat 不能直接获取磁盘的饱和度。事实上,通常没有什么简单的方法可以测量饱和度。但是,您可以将观察到的平均请求队列长度完成读写请求的等待时间基准测试(例如通过 fio)的结果进行比较,以综合评估磁盘饱和度。

进程 I/O 观察

除了每个磁盘的 I/O 情况,每个进程的 I/O 情况也是大家关注的重点。

上面提到的 iostat 只提供了观察磁盘的整体 I/O 性能数据。缺点是无法知道哪些进程正在读写磁盘。要观察进程的 I/O,还可以使用 pidstatiotop 工具。

例如,要使用 pidstat

$pidstat-d1
1351UIDPIDkB_rd/skB_wr/skB_ccwr/siodelayCommand
13521029160.004.000.000rsyslogd

pidstat 的输出可以看出,它可以实时查看每个进程的 I/O 情况,这包括以下内容:

  • 用户 ID (UID) 和进程 ID (PID)。

  • 每秒读取的数据大小 (kB_rd/s),以 KB 为单位。

  • 每秒发出的写请求数据的大小(kB_wr/s),单位为KB。

  • 每秒取消写入请求的数据大小 (kB_ccwr/s),以 KB 为单位。

  • 块 I/O 延迟 (iodelay),包括等待同步块(synchronized block)I/O 和换入块(swap-in block)I/O 完成的时间,以时钟周期为单位。

除了使用 pidstat 实时查看进程磁盘 I/O 外,还有一个磁盘性能分析的常用方法是根据 I/O 大小对进程进行排序。为此,我推荐 iotop 工具。它是一个类似于 top 的工具,您可以按 I/O 大小对进程进行排序,并找到具有更大 I/O 的进程。

$iotop
TotalDISKREAD:0.00B/s|TotalDISKWRITE:7.85K/s
ActualDISKREAD:0.00B/s|ActualDISKWRITE:0.00B/s
TIDPRIOUSERDISKREADDISKWRITESWAPINIO>COMMAND
15055be/3root0.00B/s7.85K/s0.00%0.00%systemd-journald

从该输出可以看到,前两行分别代表进程的磁盘读写总大小磁盘的实际读写总大小。由于缓存缓冲区I/O 合并等因素,它们可能不相等。

剩下的部分从各个角度代表了进程的 I/O 情况,包括 线程 IDI/O 优先级每秒磁盘读取大小每秒磁盘写入大小换入百分比等待 I/O 时钟百分比

结论

在本文中,我介绍了 Linux 磁盘 I/O 的性能指标和查看性能工具。我们通常使用 IOPS吞吐量利用率饱和度响应时间等几个指标来评估磁盘的 I/O 性能。

可以使用 iostat 获取磁盘的 I/O 情况,也可以使用 pidstatiotop 等观察进程的 I/O 情况。但在分析这些性能指标时,要注意结合读写比率I/O 类型I/O 大小等综合分析。

原文标题:如何监测 Linux 的磁盘 I/O 性能

文章出处:【微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
  • Linux
    +关注

    关注

    73

    文章

    7549

    浏览量

    193732
  • 磁盘
    +关注

    关注

    1

    文章

    166

    浏览量

    23233
  • 性能指标
    +关注

    关注

    0

    文章

    11

    浏览量

    7252
收藏 人收藏

    评论

    相关推荐

    通过mmap实现零拷贝技术

    我们知道,linux系统中用户空间和内核空间是隔离的,用户空间程序不能随意的访问内核空间数据,只能通....
    的头像 Linux阅码场 发表于 06-28 17:33 55次 阅读

    虚拟硬件平台为开发人员带来光明的未来

      虚拟硬件平台为开发人员带来了光明的未来,免除了他们等待硬件可用性的痛苦,并提供了硬件开发板无法提....
    的头像 星星科技指导员 发表于 06-28 14:42 100次 阅读

    一点Flash在嵌入式设备中大有帮助

      许多嵌入式应用程序都能够从 Flash 技术中受益。例如,集成远程信息处理系统将车队交互、GPS....
    的头像 星星科技指导员 发表于 06-28 14:15 158次 阅读

    使用VMX设计的能量计实时测量系统

    作为额外的奖励,当 Linux 被故意崩溃时,视频会消失,但音乐会在安全模式下播放,不会出现任何可听....
    的头像 星星科技指导员 发表于 06-28 11:53 93次 阅读
    使用VMX设计的能量计实时测量系统

    简化SBC的嵌入式Linux软件开发

    即使桌面平台可以保证从现在起大约五年后,Linux 内核和相关的发行版也是移动的目标。内核和标准库在....
    的头像 星星科技指导员 发表于 06-28 11:45 154次 阅读
    简化SBC的嵌入式Linux软件开发

    使用Eclipse Process Framework构建嵌入式软件

      在设计医疗设备时,FDA QSR 规定的设计指南和法规可以与系统和软件开发中的最佳实践同时解决。....
    发表于 06-28 11:35 43次 阅读
    使用Eclipse Process Framework构建嵌入式软件

    一文搞定Linux内存管理原理

    虚拟地址、物理地址、逻辑地址、线性地址 虚拟地址又叫线性地址。linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址...
    发表于 06-28 10:05 1149次 阅读

    低功耗模数转换器(ADC)AD9251、SC1252,满足多领域市场对高速ADC的降耗需求

    ADI公司推出的AD9251是双通道、14位ADC,70MHz模拟输入频率下具备73.5dB的SNR和85dB的SFDR,80MSPS的产品...
    发表于 06-28 09:24 407次 阅读

    Linux与Windows文件换行符的区别

    当一个文件在Windows和Linux上交替操作后,经常遇到一些莫名其妙的问题,如shell脚本无法....
    的头像 一口Linux 发表于 06-27 15:18 66次 阅读

    iCore-3568JQ-工具-Linux_Upgrade_Tool_v1.59

    iCore-3568JQ板载 RK3568J 四核 64 位工业级处理器,支持 8GB 大内存;支持....
    发表于 06-27 14:27 3次 阅读
    iCore-3568JQ-工具-Linux_Upgrade_Tool_v1.59

    TI的Sitara AM6442实时网络处理器

      AM6442 的集成 Cortex-A53 内核为 Linux 应用程序提供了理想的计算特性,并....
    发表于 06-27 14:24 195次 阅读
    TI的Sitara AM6442实时网络处理器

    iCore-3568JQ-源代码-Linux_SDK源码包

    iCore-3568JQ板载 RK3568J 四核 64 位工业级处理器,支持 8GB 大内存;支持....
    发表于 06-27 14:23 6次 阅读
    iCore-3568JQ-源代码-Linux_SDK源码包

    iCore-3568JQ-工具-firefly-linux-repack

    iCore-3568JQ板载 RK3568J 四核 64 位工业级处理器,支持 8GB 大内存;支持....
    发表于 06-27 14:18 5次 阅读
    iCore-3568JQ-工具-firefly-linux-repack

    iCore-3568JQ-资源-linux-headers

    iCore-3568JQ板载 RK3568J 四核 64 位工业级处理器,支持 8GB 大内存;支持....
    发表于 06-27 14:13 3次 阅读
    iCore-3568JQ-资源-linux-headers

    基于ANSI C加密库的RTCA DO-178C的DAL A支持

      鉴于与重新启动航空电子系统相关的严格性能要求,wolfSSL 的服务组织随时为希望跟上公司技术的....
    的头像 星星科技指导员 发表于 06-27 14:09 109次 阅读

    嵌入式Linux上的以太网TSN简介

    这些是您可能每天都在使用的各种基于 Linux 的嵌入式系统背后的关键构建块,甚至可能不知道它们运行....
    的头像 星星科技指导员 发表于 06-27 11:56 154次 阅读
    嵌入式Linux上的以太网TSN简介

    【赛昉科技昉·星光RISC-V单板计算机试用体验】运行边缘AI框架——TFLM

    一、TFLM简介 TFLM是TensorFlow Lite for Microcontrollers项目的简称,全称翻译过来就是“适用于微控制器的Ten...
    发表于 06-26 21:59 1870次 阅读
    【赛昉科技昉·星光RISC-V单板计算机试用体验】运行边缘AI框架——TFLM

    【时擎科技AT1000开发板试用体验】官方Linux sdk编译配置

    本来不打算写这个编译配置,只是写给没有使用过linux编译源码的小伙伴说说。Ubuntu版本: Ubuntu 20.04.3 LTS。 在收到时...
    发表于 06-26 17:13 371次 阅读

    【赛昉科技昉·星光RISC-V单板计算机试用体验】Debian系统Wi-Fi联网和国内apt源

    烧写Debian镜像 开始本篇之前,需要先下载、烧录Debian系统镜像。 这里使用了社区**Houge_Langley**大佬最新Debian镜像...
    发表于 06-26 11:07 430次 阅读
    【赛昉科技昉·星光RISC-V单板计算机试用体验】Debian系统Wi-Fi联网和国内apt源

    NVIDIA DOCA数据处理器软件正式开放

    NVIDIA 联合发起 Linux 基金会项目,致力于实现数据中心创新的大众化;进一步向软件提供商、....
    的头像 NVIDIA英伟达 发表于 06-24 15:00 108次 阅读

    求助,可以提供CH343G MAC和Linux的最新驱动吗?

    WCH,您好!可以提供一下CH343G MAC和Linux的最新驱动吗?   ...
    发表于 06-24 12:02 92次 阅读

    Linux内存背后的那些事儿

    当要学习一个新知识点时,比较好的过程是先理解出现这个技术点的背景原因,同期其他解决方案,新技术点解决....
    的头像 一口Linux 发表于 06-24 11:35 186次 阅读

    嵌入式必学!硬件资源接口详解——基于ARM AM335X开发板 (下)

    前 言本文档主要介绍嵌入式初级学习者,在使用核心板/开发板过程中,所做的一些硬件接口资源以及设计注意事项等内容。本篇文章...
    发表于 06-24 10:58 4336次 阅读

    Linux用电功耗调优的笔记分享

    整理一些Linux用电功耗调优的笔记,分享给小伙伴,关于用电调优个人觉得
    的头像 一口Linux 发表于 06-23 15:19 281次 阅读

    go项目怎么让docker镜像体积减小

    go 项目怎么让 docker 镜像体积减小?本文做了详细介绍。
    的头像 马哥Linux运维 发表于 06-23 10:49 130次 阅读

    Vim编辑器的使用学习和使用技巧

    首先我们先理清楚一个概念:编辑器和编译器和调试器!
    的头像 马哥Linux运维 发表于 06-23 10:43 217次 阅读

    PcapPlusPlus网络嗅探和包装分析制作框架

    ./oschina_soft/PcapPlusPlus.zip
    发表于 06-23 10:26 6次 阅读
    PcapPlusPlus网络嗅探和包装分析制作框架

    SDURLCache iOS磁盘缓存

    ./oschina_soft/SDURLCache.zip
    发表于 06-23 09:58 4次 阅读
    SDURLCache iOS磁盘缓存

    A13-OLinuXino-MICRO的特征

    描述 带有 A13 ARM SOC 256MB RAM 的嵌入式 Linux 板 - A13-OLinuXino-MICRO 特征 1GHz 的 A13 C...
    发表于 06-23 06:08 53次 阅读

    【赛昉科技昉·星光RISC-V单板计算机试用体验】Debian系统内核编译与安装升级

    在赛昉的RVSPACE社区上,提供了很多当前已经适配的操作系统: 我比较喜欢的是Debian系统,比纯粹稳定,所以这次下载...
    发表于 06-22 20:47 779次 阅读

    香橙派RK3399开发板OrangePi4 LTS在linux上的GPU测试说明

    1、Linux4.4 和 Linux5.10 Debian 系统 GPU 的测试说明 注意,Linux4.4 Debian10 和 Linux5.10 Debian11 系统使用的...
    发表于 06-22 20:17 435次 阅读
    香橙派RK3399开发板OrangePi4 LTS在linux上的GPU测试说明

    虚拟化如何在嵌入式软件开发中展示实力

      所有这些产品和设计优势都表明嵌入式市场虚拟技术的长期、持续趋势。尽管可能需要改变嵌入式设计理念,....
    的头像 星星科技指导员 发表于 06-22 17:06 259次 阅读
    虚拟化如何在嵌入式软件开发中展示实力

    如何判断硬件是否支持嵌入式Linux

      如果该部分不受支持,则值得拥有一份最新的 Linux 内核源代码以进行交叉引用。如果最近添加了支....
    的头像 星星科技指导员 发表于 06-22 16:23 201次 阅读
    如何判断硬件是否支持嵌入式Linux

    关于Google Flutter 3更新内容

    又到了 Flutter 稳定版发布时间,我们无比自豪地宣布推出 Flutter 3!仅 3 个月前,....
    的头像 谷歌开发者 发表于 06-22 16:13 202次 阅读

    提高基于Linux的网络连接系统的安全性

      所描述的服务和方法使用 IPv4 协议。IPv6 协议的安全配置被忽略,这使得保持启用是不安全的....
    的头像 星星科技指导员 发表于 06-22 14:39 112次 阅读

    基于Linux的虚拟交换机Open vSwitch项目

      要点: Open vSwitch 是一个著名的基于 Linux 的虚拟交换机的开源项目。作为 C....
    的头像 星星科技指导员 发表于 06-22 14:31 73次 阅读

    createrepo创建yum源的工具

    ./oschina_soft/createrepo.zip
    发表于 06-22 14:30 6次 阅读
    createrepo创建yum源的工具

    基于Linux的物联网设备的安全案例

      对于物联网产品,在设计之初就将安全性构建到产品中是绝对必要的。如果您不这样做,您的业务的关键部分....
    的头像 星星科技指导员 发表于 06-22 14:28 96次 阅读

    简化SBC的嵌入式Linux软件开发

      在 Eclipse 框架内,EMAC 使用交叉编译来缓解将嵌入式开发环境从标准桌面环境中抽象出来....
    的头像 星星科技指导员 发表于 06-22 11:48 154次 阅读
    简化SBC的嵌入式Linux软件开发

    llvm-mctoll将二进制文件转换为LLVM IR

    ./oschina_soft/llvm-mctoll.zip
    发表于 06-22 11:35 15次 阅读
    llvm-mctoll将二进制文件转换为LLVM IR

    libss7提供SS7协议的应用程序服务

    ./oschina_soft/libss7.zip
    发表于 06-22 11:27 8次 阅读
    libss7提供SS7协议的应用程序服务

    mptcpd多路径TCP守护程序

    ./oschina_soft/mptcpd.zip
    发表于 06-22 11:18 8次 阅读
    mptcpd多路径TCP守护程序

    嵌入式Linux文件系统管理的工具选择

      嵌入式 Linux 开发人员可以使用平台映像生成器等工具获得对构建复杂文件系统的更多控制,这使得....
    的头像 星星科技指导员 发表于 06-22 11:15 327次 阅读
    嵌入式Linux文件系统管理的工具选择

    使用嵌入式Linux的动态电源管理策略

      对电源管理的需求不会消失。相反,它正在成为移动设备设计中越来越重要的特征。采用强大的电源管理策略....
    的头像 星星科技指导员 发表于 06-22 11:07 139次 阅读

    IP平台支持云连接设备开发

      越来越广泛的高度便携应用平台,如 Linux、Android 和复杂的实时操作系统 (RTOS)....
    的头像 星星科技指导员 发表于 06-22 10:59 142次 阅读

    CO是高效的C++基础库

    ./oschina_soft/co.zip
    发表于 06-21 11:08 11次 阅读
    CO是高效的C++基础库

    Multipass轻量级VM管理器

    ./oschina_soft/multipass.zip
    发表于 06-21 10:21 8次 阅读
    Multipass轻量级VM管理器

    LIB-ZC通用C扩展库

    ./oschina_soft/gitee-lib-zc.zip
    发表于 06-21 10:06 6次 阅读
    LIB-ZC通用C扩展库

    sm64超级马里奥64反编译

    ./oschina_soft/sm64.zip
    发表于 06-21 09:44 8次 阅读
    sm64超级马里奥64反编译

    CN0549状态监测平台及如何利用进行应用程序开发

      当云和本地进程之间存在一致的连接时,可以将不同的算法拆分为我们已经讨论过的需要或可以在本地运行的....
    的头像 星星科技指导员 发表于 06-20 16:49 268次 阅读
    CN0549状态监测平台及如何利用进行应用程序开发

    MISRA C在安全和安全编程中的位置

      从本质上讲,MISRA C 追求的所有目标都在 SPARK 中得到了最好的实现,结合了更强大的基....
    的头像 星星科技指导员 发表于 06-20 16:07 136次 阅读
    MISRA C在安全和安全编程中的位置

    libcurl等第三方库的通用编译方法

    libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, te....
    的头像 一口Linux 发表于 06-20 13:38 171次 阅读

    怎么看待汽车操作系统

    操作系统提供计算机硬件和应用程序之间的接口。这通过遵循编程到操作系统中的规则和程序来限制应用程序使用....
    的头像 要长高 发表于 06-20 11:57 766次 阅读
    怎么看待汽车操作系统

    栈是什么?栈有什么作用?

    大多数的处理器架构,都有实现硬件栈。有专门的栈指针寄存器,以及特定的硬件指令来完成 入栈/出栈 的操....
    的头像 一口Linux 发表于 06-17 11:19 220次 阅读

    SUSE正式发布SUSE Euler Linux2.0

    面对传统网络存储存在的各种性能和可靠性挑战,SUSE Euler Linux 2.0 提供了基于 R....
    的头像 openEuler 发表于 06-17 11:10 210次 阅读

    SUSE正式发布SUSE Euler Linux 2.0

    2022 年 6 月 16 日,SUSE 正式发布 SUSE Euler Linux 2.0。它是基....
    的头像 科技绿洲 发表于 06-17 10:42 242次 阅读

    汽车应用中AGL虚拟化架构的概述

      根据 EE 的特性,通信总线也可以是关键的或非关键的。为了保证隔离、数据安全和隐私,关键总线仅限....
    的头像 星星科技指导员 发表于 06-17 10:33 165次 阅读
    汽车应用中AGL虚拟化架构的概述

    Valve Proton Linux上运行Windows游戏

    ./oschina_soft/Proton.zip
    发表于 06-17 09:38 23次 阅读
    Valve Proton Linux上运行Windows游戏

    Amnesia:The Dark Descent冒险类游戏《失忆症:黑暗后裔》

    ./oschina_soft/AmnesiaTheDarkDescent.zip
    发表于 06-17 09:25 14次 阅读
    Amnesia:The Dark Descent冒险类游戏《失忆症:黑暗后裔》

    通向软件定义联网汽车的AGL路径

      对于 AGL,虚拟化是软件定义的联网汽车支持技术,因为它能够同时托管多个(和隔离的)功能的执行,....
    的头像 星星科技指导员 发表于 06-17 09:13 184次 阅读

    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)

    TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等...
    发表于 09-25 11:51 644次 阅读
    AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)