zoukankan      html  css  js  c++  java
  • 磁盘IO

    前言

    相比于cpu 使用率和内存、磁盘使用率等指标,IO瓶颈往往是我们可能会忽略的地方

    磁盘性能指标

     磁盘性能指标说到磁盘性能的衡量标准,必须要提到五个常见指标,也就是我们经常用到的,使用率、饱和度、IOPS、吞吐量以及响应时间等。这五个指标,是衡量磁盘性能的基本指标。

    • 使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
    • 饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
    • IOPS(Input/Output Per Second),是指每秒的 I/O 请求数。
    • 吞吐量,是指每秒的 I/O 请求大小。
    • 响应时间,是指 I/O 请求从发出到收到响应的间隔时间。

    注意

    1、这里要注意的是,使用率只考虑有没有 I/O,而不考虑 I/O 的大小。换句话说,当使用率是 100% 的时候,磁盘依然有可能接受新的 I/O 请求。这些指标,很可能是你经常挂在嘴边的,一讨论磁盘性能必定提起的对象。

    2、不要孤立地去比较某一指标,而要结合读写比例、I/O 类型(随机还是连续)以及 I/O 的大小,综合来分析。举个例子,在数据库、大量小文件等这类随机读写比较多的场景中,IOPS 更能反映系统的整体性能;而在多媒体等顺序读写较多的场景中,吞吐量才更能反映系统的整体性能。

    性能测试

    一般来说,我们在为应用程序的服务器选型时,要先对磁盘的 I/O 性能进行基准测试,以便可以准确评估,磁盘性能是否可以满足应用程序的需求。这一方面,我推荐用性能测试工具 fio ,来测试磁盘的 IOPS、吞吐量以及响应时间等核心指标。

    但还是那句话,因地制宜,灵活选取。在基准测试时,一定要注意根据应用程序 I/O 的特点,来具体评估指标。当然,这就需要你测试出,不同 I/O 大小(一般是 512B 至 1MB 中间的若干值)分别在随机读、顺序读、随机写、顺序写等各种场景下的性能情况。用性能工具得到的这些指标,可以作为后续分析应用程序性能的依据。一旦发生性能问题,你就可以把它们作为磁盘性能的极限值,进而评估磁盘 I/O 的使用情况。了解磁盘的性能指标,只是我们 I/O 性能测试的第一步。接下来,又该用什么方法来观测它们呢?这里,我给你介绍几个常用的 I/O 性能观测方法。

    查看io的几个工具

    top  查看iowait 占用的cpu时间百分比

     通常情况这个值很低,都是百分之零点几。但是这个值有欺骗性,因为它记录的是整体的cpu 时间中iowait百分比,有时候这个值不高但是io 确实有了性能瓶颈。

    iostat -x -d 1

    iostat 可以查看的各个磁盘的整体的io性能表现

    要特别注意:iowait≠IO负载,要看真实的IO负载情况,一般使用iostat –x 命令:

     

     

    iotop  或者pidstat -d

    iostat 只能查看存储设备总体的io 表现不能查看具体哪些进程io 情况,所以这里就可以通过iotop或者pidstat 通过从大到小排列进程io 大小情况

    lsof  -a   pid     

    查看进程打开了哪些文件,最后针对服务代码和文件系统等进行优化。

  • 相关阅读:
    Python字符串
    ListCtrl控件
    leetcode1004
    leetcode1003
    leetcode1002
    leetcode153
    leetcode540
    leetcode435
    leetcode999
    leetcode997
  • 原文地址:https://www.cnblogs.com/fanggege/p/14016634.html
Copyright © 2011-2022 走看看