• Linux性能优化 第六章 性能工具:磁盘I/O


    6.1 磁盘I/O介绍

           一般来说,Linux磁盘的每个分区要么包含一个文件系统,要么包含一个交换分区。这些分区被挂载到Linux根文件系统,该系统由/etc/fstab指定。这些被挂载的文件系统包含了应用程序要读写的文件。

           当一个应用程序进行读写时,Linux内核可以在其高速缓存或者缓冲区中保存文件的副本,并且可以在不访问磁盘的情况下返回被请求的信息。但是,如果Linux内核没有在内存中保存数据副本,那它就向磁盘I/O队列添加一个请求。若Linux内核注意到多个请求都指向磁盘内相邻的区域,它会把它们合并为一个大的请求。这种合并能消除第二次请求的寻道时间,以此提高磁盘的整体性能。当请求被放入磁盘队列,而磁盘当前不忙时,它就开始为I/O请求服务。如果磁盘正忙,则请求就在队列中等待,直到该设备可用,请求将被服务。

    6.2 磁盘I/O性能工具

    6.2.1 vmstat

    语法:

    vmstat [-D] [-d] [-p partition] [interval count]

    vmstat选项说明

    -D

    显示Linux I/O子系统的统计信息,显示的是系统启动以来的总信息

    -d

    按每interval一个样本的速率显示单个磁盘的统计数据,显示的是系统启动以来的总信息。

    -p partition

    按照每interval一个采样的速率显示给定分区性能统计数据,显示的是系统启动以来的总信息。

    interval

    采样之间的频率

    count

    所取的样本总数

    vmstat默认显示的信息:

    image.png

    vmstat –D 显示的信息

    image.png

    部分统计信息说明

    disks

    系统中磁盘的总数

    partitions

    系统中分区的总数

    total   reads

    读请求的总数

    merged   reads

    为了提升性能而被合并的不同读请求的数量,这些读请求访问的是磁盘上的相邻位置。

    writes

    写请求的总数

    inprogress   IO

    当前正在处理的I/O总数

    vmstat  –d部分统计信息说明

    reads:total

    读请求的总数

    reads:merged

    为了提升性能而被合并的不同读请求的数量

    reads:sectors

    从磁盘读取的扇区的总数

    ms

    磁盘读所花费的时间

    vmstat –d 显示的信息:

    image.png

    6.2.2 iostat

           与vmstat相似,但它是一个专门用于显示磁盘I/O子系统统计信息的工具。iostat提供的信息细化到每个设备和每个分区从特定磁盘读写了多少个块。此外,iostat还可以提供大量的信息来显示磁盘是如何被利用的,以及Linux花费了多长时间来等待将请求提交到磁盘。

    iostat命令行选项

    -d

    只显示磁盘I/O的统计信息,而不是默认信息。

    -k

    按KB显示统计数据,而不是按块显示

    -x

    显示拓展性能I/O统计信息

    device

    若指定设备,则iostat只显示该设备的信息

    iostat设备统计信息

    tps

    每秒传输次数,该项为每秒对设备/分区读写请求的次数

    Blk_read/s

    每秒读取磁盘块的速率

    Blk_wrtn/s

    每秒写入磁盘块的速率

    Blk_read

    在时间间隔内读取块的总数量

    Blk_wrtn

    在时间间隔内写入块的总数量


    iostat –d 显示:

    image.png

    6.2.3 sar

    image.png

    6.2.4 lsof

           lsof提供了一种方法来确定哪些进程打开了一个特定的文件,除了跟踪单个文件的用户外,lsof还可以显示使用了特定目录下的进程。

    语法

    lsof [-r   delay] [+D directory] [+d directory] [file]

    lsof命令选项说明

    -r delay

    使得lsof每间隔delay秒输出一次统计数据

    +D directory

    使得lsof递归搜索给定目录下的所有文件,并报告哪些进程正在使用

    +d   directory

    使得lsof报告哪些进程正在使用给定目录下的文件

    lsof显示访问了/usr/bin下所有文件的进程

    image.png

  • 相关阅读:
    asp.net 连接 Access 的几种方法
    asp.net 连接 oracle10g 数据库
    Entity Framework实例
    LINQ链接数据库出错(There is already an open DataReader associated with this Command which must be closed first )
    Linq入门实例
    Nibatis实例(2)
    Log4net实例
    图片提交表单方法
    Nibatis实例(1)
    爱情是不离不弃吗?
  • 原文地址:https://www.cnblogs.com/tcicy/p/10080416.html
Copyright © 2020-2023  润新知