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默认显示的信息:

vmstat –D 显示的信息

部分统计信息说明

disks

系统中磁盘的总数

partitions

系统中分区的总数

total   reads

读请求的总数

merged   reads

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

writes

写请求的总数

inprogress   IO

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

vmstat  –d部分统计信息说明

reads:total

读请求的总数

reads:merged

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

reads:sectors

从磁盘读取的扇区的总数

ms

磁盘读所花费的时间

vmstat –d 显示的信息:

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 显示:

6.2.3 sar

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下所有文件的进程

Linux性能优化 第六章 性能工具:磁盘I/O的更多相关文章

  1. Linux性能优化 第五章 性能工具:特定进程内存

    5.1 Linux内存子系统 在诊断内存性能问题的时候,也许有必要观察应用程序在内存子系统的不同层次上是怎样执行的.在顶层,操作系统决定如何利用交换内存和物理内存.它决定应用程序的哪一块地址空间将被放 ...

  2. Linux性能优化 第七章 性能工具:网络

    7.1 网络I/O介绍 Linux和其他主流操作系统中的网络流量被抽象为一系列的硬件和软件层次. 链路层,也就是最低的一层,包含网络硬件,如以太网设备.在传送网络流量时,这一层并不区分流量类型,而仅仅 ...

  3. Linux性能优化 第三章 性能工具:系统内存

    3.1内存性能统计信息 3.1.1 内存子系统和性能 和CPU相比,内存的读写速度都大大落后于CPU.为了弥补这个差距,通常CPU会采用高速缓存的机制(高cache). 3.1.2 内存子系统(虚拟存 ...

  4. Linux性能优化 第四章 性能工具:特定进程CPU

    4.1进程性能统计信息 4.1.1. 内核时间VS用户时间 一个应用程序所耗时间最基本的划分是内核时间与用户时间.内核时间是消耗在Linux内核上的时间,而用户时间则是消耗在应用程序或库代码上的时间. ...

  5. EntityFramework之原始查询及性能优化(六)

    前言 在EF中我们可以通过Linq来操作实体类,但是有些时候我们必须通过原始sql语句或者存储过程来进行查询数据库,所以我们可以通过EF Code First来实现,但是SQL语句和存储过程无法进行映 ...

  6. React性能优化,六个小技巧教你减少组件无效渲染

    壹 ❀ 引 在过去的一段时间,我一直围绕项目中体验不好或者无效渲染较为严重的组件做性能优化,多少积累了一些经验所以想着整理成一片文章,下图就是优化后的一个组件,可以对比优化前一次切换与优化后多次切换的 ...

  7. 【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

  8. EF性能优化-有人说EF性能低,我想说:EF确实不如ADO.NET

    十年河东,十年河西,莫欺少年穷. EF就如同那个少年,ADO.NET则是一位壮年.毕竟ADO.NET出生在EF之前,而EF所走的路属于应用ADO.NET. 也就是说:你所写的LINQ查询,最后还是要转 ...

  9. 性能优化中CPU、内存、磁盘IO、网络性能的依赖(转)

    关于系统性能优化,推荐一篇不错的博客! 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试 ...

随机推荐

  1. py-day2 python 列表

    1.列表的基本格式: 2.列表中可以嵌套任何类型: 中括号括起来.逗号分割每个元素. 列表中的元素可以是:数字/字符串/列表/布尔值 等等,所有的都能放进去. 集合内部可以放置任何东西. 3.通过索引 ...

  2. JMeter - Perfmon - ServerAgent

    −Table of Contents 1 - Installation 2 - Usage and commands 2.1 - PerfMon Metrics Collector Listener ...

  3. eclipse web项目没有run on server

    如下图,将 Dynamic Web Module和Java勾选上

  4. golang database sql DSN (Data Source Name)中的timeout, readTimeout

    golang 语言,在打开mysql DB时,有时会用到timeout,readTimeout两个参数. 1.timeout 建立连接超时时间 例如, "30s", "0 ...

  5. Linux vi文本编辑器

    vi文本编辑器 1.最基本用法 vi  somefile.4 1/ 首先会进入“一般模式”,此模式只接受各种命令快捷键,不能编辑文件内容 2/ 按i键,就会从一般模式进入编辑模式,此模式下,敲入的都是 ...

  6. OpenWrt挂载移动硬盘实现脱机下载

    一.编译选项选好好usb存储驱动,参考http://www.cnblogs.com/smbx-ztbz/p/4418245.html 并且选上kmod-usb-hid,用于usbhub. 二.编译选项 ...

  7. 使用MATLAB对数据进行位操作以及RGB图片显示

    fd = fopen('video_test_pattern_avalon_generator_source_data.txt'); //打开像素源文件 A = fscanf(fd,'%d'); // ...

  8. SQL2000服务端配置-如何让外网访问SQL2000

    刚刚写了个DEMO,在内网来测试SQL2000后完全正常.现在想测试外网是否正常,毕竟路由器IP不固定,所以选择了路由器+花生壳免费域名(koma.5166.info),所以先安装花生壳客户端软件.下 ...

  9. camtasis studio 未能创建视频内存资源。

    camtasis studio failed to create a video memory resource.camtasis studio 未能创建视频内存资源. 在工具--选项中取消GPU加速 ...

  10. DS二叉树--叶子数量

    题目描述 计算一颗二叉树包含的叶子结点数量. 提示:叶子是指它的左右孩子为空. 建树方法采用“先序遍历+空树用0表示”的方法,即给定一颗二叉树的先序遍历的结果为AB0C00D00,其中空节点用字符‘0 ...