一、啥是块设备呢

回答:I/O设备大致分为两类:块设备和字符设备。块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其它块而读写。磁盘是最常见的块设备。在大多数的UNIX操作系统中,块设备只支持以块为单位的访问方式,如磁盘等
 

二、啥是flash卡呢

回答:固态硬盘(Solid State Disk、IDE FLASH DISK)是由控制单元和存储单元(FLASH 芯片)组成,简单的说就是用固态电子存储芯片阵列而制成的硬盘(目前最大容量为32GB),固态硬盘的接口规范和定义、功能及使用方法上与普通硬盘的完全 相同,.在产品外形和尺寸上也完全与普通硬盘一致。广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空等、导航设备等领域。
 

三、磁盘参数对性能有哪些影响

  回答:
  Ø  磁盘转数

我们现有磁盘的转速基本都是10k/min,15k/min的磁盘较少,除非特殊情况,一般可以忽略该配置。

Ø  磁盘容量

常见的磁盘容量有73GB、146GB、300GB。较大的磁盘容量单盘片数据密度较高,磁头寻道时间较短,磁盘性能较好。

Ø  磁盘接口

常见磁盘接口有SCSI、SATA、SAS,其中以SAS接口的磁盘性能最好。

Ø  预读RA

系统预读,对于随即读为主的业务,由于读取的数据存储较为分散,建议调小该预读值;相反以顺序读为主的业务,应该调大该值。

在随机度为主的业务中,调小该值可以明显看到iostat统计到的r/s值明显降低,vmstat统计到的bi值同时降低。

Ø  RAID级别

现有机器的RAID级别只有两种:RAID1+0和RAID5,RAID1+0的I/O性能好于RAID5

Ø  RAID读写比率

只有HP的RAID卡有读写比率的概念,Dell的RAID卡没有这个概念。

Ø  Swap分区

Swap分区对系统性能影响较小,可以忽略。大小可以通过free查看

Ø  磁盘碎片

对于ext2文件系统来说,磁盘块的分配会根据一定的算法尽量使得同一目录下的文件放在同一块组,即尽量保持连续性。多线程的随机读写会导致文件在磁盘上的存放连续性较低。磁盘连续性越低,导致磁盘寻道频繁,降低了系统的I/O性能。磁盘连续性可以通过plblk工具查看。

四、监控IO的常用命令为iostat

[work@jx-testing-ps1933.jx.baidu.com ~]$ iostat -x
Linux 2.6.9-52bs (jx-testing-ps1933.jx.baidu.com)       07/30/2008

avg-cpu:  %user   %nice    %sys %iowait   %idle
           0.71    0.00    0.22    0.01   99.05

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda             0.01   0.26  0.40  1.01   50.25  152.31    25.12    76.15   144.46     0.02       12.24   0.65   0.09

io相关的参数含义

参数 解释
rrqm/s 每秒进行 merge 的读操作数目
wrqm/s 每秒进行 merge 的写操作数目
r/s 每秒完成的读 I/O 设备次数
w/s 每秒完成的写 I/O 设备次数
rsec/s 每秒读扇区数
wsec/s 每秒写扇区数
rkB/s 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节
wkB/s 每秒写K字节数。是 wsect/s 的一半
avgrq-sz 平均每次设备I/O操作的数据大小 (扇区)
avgqu-sz 平均I/O队列长度
await 平均每次设备I/O操作的等待时间 (毫秒)
svctm 平均每次设备I/O操作的服务时间 (毫秒)
%util 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的

五、排队论和IO

    举一个例子,我们在超市排队 checkout 时,怎么决定该去哪个交款台呢? 首当是看排的队人数,5个人总比20人要快吧? 除了数人头,我们也常常看看前面人购买的东西多少,如果前面有个采购了一星期食品的大妈,那么可以考虑换个队排了。还有就是收银员的速度了,如果碰上了连钱都点不清楚的新手,那就有的等了。另外,时机也很重要,可能 5 分钟前还人满为患的收款台,现在已是人去楼空,这时候交款可是很爽啊,当然,前提是那过去的 5分钟里所做的事情比排队要有意义。

I/O 系统也和超市排队有很多类似之处:

r/s+w/s 类似于交款人的总数

平均队列长度(avgqu-sz)类似于单位时间里平均排队人的个数

平均服务时间(svctm)类似于收银员的收款速度

平均等待时间(await)类似于平均每人的等待时间

平均I/O数据(avgrq-sz)类似于平均每人所买的东西多少

I/O 操作率 (%util)类似于收款台前有人排队的时间比例。

六、其他资料

linux性能系列--块设备的更多相关文章

  1. Linux显示列出块设备

    Linux显示列出块设备 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOI ...

  2. Linux Shell 判断块设备节点是否存在

    /************************************************************************* * Linux Shell 判断块设备节点是否存在 ...

  3. 深入理解Linux内核-块设备驱动程序

    扇区: 1.硬盘控制器将磁盘看成一大组扇区2.扇区就是一组相邻字节3.扇区按照惯例大小设置位512字节4.存放在块设备中的数据是通过它们在磁盘上的位置来标识,即首个扇区的下标和扇区的数目.5.扇区是硬 ...

  4. linux性能系列--内存

    一.啥是内存呢? 回答:内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁.计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大. 内存(Memory)也被称为内存储器, ...

  5. linux下的块设备驱动(一)

    块设备的驱动比字符设备的难,这是因为块设备的驱动和内核的联系进一步增大,但是同时块设备的访问的几个基本结构和字符还是有相似之处的. 有一句话必须记住:对于存储设备(硬盘~~带有机械的操作)而言,调整读 ...

  6. linux内核对块设备的使用

    1 partition table 这里的分析以经典的MBR为例. 在MBR里面有partition table,每一项对应一个逻辑的块设备,partion table中的每一项是16个字节. 第一个 ...

  7. linux系统下块设备驱动程序

    顾名思义,块设备驱动程序就是支持以块的方式进行读写的设备.块设备和字符设备最大的区别在于读写数据的基本单元不同.块设备读写数据的基本单元为块,例 如磁盘通常为一个sector,而字符设备的基本单元为字 ...

  8. linux 创建虚拟块设备,制作文件系统并挂载,用于测试lustre

    1.制作块文件 3 个 [root@localhost yaoxu]# [root@localhost yaoxu]# [root@localhost yaoxu]# 2.创建回环设备 [root@l ...

  9. linux下的块设备驱动(二)

    上一章主要讲了请求队列的一系列问题.下面主要说一下请求函数.首先来说一下硬盘类块设备的请求函数. 请求函数可以在没有完成请求队列的中的所有请求的情况下就返回,也可以在一个请求都不完成的情况下就返回. ...

随机推荐

  1. 大数据sql引擎

    Hive:把sql解析后用MapReduce跑 SparkSQL:把sql解析后用Spark跑,比hive快点 Phoenix:一个绕过了MapReduce运行在HBase上的SQL框架 Drill/ ...

  2. 【转】Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  3. HA_Mirror 数据库镜像

    环境准备: 虚拟机3台,INTER-DC, INTER-SQLA, INTER-SQLB 创建域帐户 INTER\MSSQLSERVER.SERVICE,分别添加到INTER-SQLA和INTER-S ...

  4. KnockoutJS Select 标签 Options绑定

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  5. 简单封装axios api

    可以在代码逻辑中写axios请求,处理请求结果,但是随着项目越来越大,代码会很繁琐,不容易维护,所以,可以把一些在所有请求中都要处理的逻辑抽取出来,封装成api方法.比如每次请求中都要判断是否有权限, ...

  6. Java开发学习--Java 中基本类型和包装类之间的转换

    Java 中基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之 ...

  7. IO实战-RandomAccessFile在本地实现伪断点续传

    准备:在磁盘中 准备一个目录文件 实现:将该文件复制到目标路径中,关掉程序,再重新打开可以在原位置继续复制. 需求如下: 过程中显示文件的拷贝的百分比 复制过程中关掉程序. 重新启动该程序时,若上次没 ...

  8. 【SSH网上商城项目实战23】完成在线支付功能

     转自: https://blog.csdn.net/eson_15/article/details/51464415 上一节我们做好了支付页面的显示,从上一节支付页面显示的jsp代码中可以看出,当用 ...

  9. 最简单的java多线程代码(重写thread或者runnable的run方法)

    http://blog.csdn.net/testcs_dn/article/details/42526549 java线程使用示例——最简单的线程 线程使用示例一: [java] view plai ...

  10. POJ 1258(最小生成树+知识)

    用kruskal算法,利用w[i]给r[i]间接排序,从而r[i]可以按照边大小保存序号,同时要判断是否在一个集合里面 #include <cstdio> #include <ios ...