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

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的更多相关文章
- Linux性能优化 第五章 性能工具:特定进程内存
5.1 Linux内存子系统 在诊断内存性能问题的时候,也许有必要观察应用程序在内存子系统的不同层次上是怎样执行的.在顶层,操作系统决定如何利用交换内存和物理内存.它决定应用程序的哪一块地址空间将被放 ...
- Linux性能优化 第七章 性能工具:网络
7.1 网络I/O介绍 Linux和其他主流操作系统中的网络流量被抽象为一系列的硬件和软件层次. 链路层,也就是最低的一层,包含网络硬件,如以太网设备.在传送网络流量时,这一层并不区分流量类型,而仅仅 ...
- Linux性能优化 第三章 性能工具:系统内存
3.1内存性能统计信息 3.1.1 内存子系统和性能 和CPU相比,内存的读写速度都大大落后于CPU.为了弥补这个差距,通常CPU会采用高速缓存的机制(高cache). 3.1.2 内存子系统(虚拟存 ...
- Linux性能优化 第四章 性能工具:特定进程CPU
4.1进程性能统计信息 4.1.1. 内核时间VS用户时间 一个应用程序所耗时间最基本的划分是内核时间与用户时间.内核时间是消耗在Linux内核上的时间,而用户时间则是消耗在应用程序或库代码上的时间. ...
- EntityFramework之原始查询及性能优化(六)
前言 在EF中我们可以通过Linq来操作实体类,但是有些时候我们必须通过原始sql语句或者存储过程来进行查询数据库,所以我们可以通过EF Code First来实现,但是SQL语句和存储过程无法进行映 ...
- React性能优化,六个小技巧教你减少组件无效渲染
壹 ❀ 引 在过去的一段时间,我一直围绕项目中体验不好或者无效渲染较为严重的组件做性能优化,多少积累了一些经验所以想着整理成一片文章,下图就是优化后的一个组件,可以对比优化前一次切换与优化后多次切换的 ...
- 【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖
系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...
- EF性能优化-有人说EF性能低,我想说:EF确实不如ADO.NET
十年河东,十年河西,莫欺少年穷. EF就如同那个少年,ADO.NET则是一位壮年.毕竟ADO.NET出生在EF之前,而EF所走的路属于应用ADO.NET. 也就是说:你所写的LINQ查询,最后还是要转 ...
- 性能优化中CPU、内存、磁盘IO、网络性能的依赖(转)
关于系统性能优化,推荐一篇不错的博客! 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试 ...
随机推荐
- Java面向对象 第1节 类和对象
一.Java 对象和类 面向对象语言三大特性:封装.继承.多态: 对象:描述客观事物的一个实体: 类:类是封装对象的属性和方法的载体,反过来说具有相同属性和行为的一类实体被称为类:类行为:方法:属性: ...
- async await 的 实质 本质
async await 的 实质 就是 用 “状态机” 来 取代 函数层层调用 . async await 的 本质 是 语法糖, 和 提高性能 什么的 没什么关系 . 为了避免理解歧义, 我把 ...
- 访问者模式-Visitor Pattern
1.主要优点 访问者模式的主要优点如下: (1) 增加新的访问操作很方便.使用访问者模式,增加新的访问操作就意味着增加一个新的具体访问者类,实现简单,无须修改源代码,符合“开闭原则”. (2) 将有关 ...
- 八、springboot(五)配置定时器
1.修改启动类 @SpringBootApplication @EnableScheduling public class DemoApplication { public static void m ...
- Tornado 文件操作笔记
import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver from torna ...
- JQuery 240中插件
http://www.cnblogs.com/Terrylee/archive/2007/12/09/the-ultimate-jquery-plugin-list.html
- 剑指offer(1)
1.二维数组中的查找在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. public ...
- 基于redis 3.x搭建集群环境
由于我团队开发的在线坐席系统,即将面对线上每周3000W的下行投放客户,产品的咨询量可能会很大,基于前期,200W的投放时,前10分钟,大概800问题量,平均一个客户大概8个问题,也就是说每分钟10个 ...
- 系统服务和普通FORMS程序共存一体的实现
要求:一个EXE,如何将它做成这样的效果:1.双击它时,像一个FORMS程序那样正常显示窗体运行.2.注册成系统服务,每次都可以从service.msc中启动它. 也就是说,没注册之前,它可以当作普通 ...
- WPF Demo19 命令、UC
命令系统的基本元素和关系WPF命令系统的组成要素:A.命令(command):WPF命令实际上就是实习了ICommand接口的类.平时使用最多的就是RoutedCommand类.B.命令源(comma ...