【转载地址】;http://sishuok.com/forum/blogPost/list/1036.html
在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下,个人认为对这个概念的熟悉程度也决定了对数据库与存储优化的理解程度,以下这些概念并非权威文档,权威程度肯定就不能说了。
读/写IO,最为常见说法,读IO,就是发指令,从磁盘读取某段扇区的内容。指令一般是通知磁盘开始扇区位置,然后给出需要从这个初始扇区往后读取的连续扇区个数,同时给出动作是读,还是写。磁盘收到这条指令,就会按照指令的要求,读或者写数据。控制器发出的这种指令+数据,就是一次IO,读或者写。
大/小块IO,指控制器的指令中给出的连续读取扇区数目的多少,如果数目很大,比如128,64等等,就应该算是大块IO,如果很小,比如1, 4,8等等,就应该算是小块IO,大块和小块之间,没有明确的界限。
连续/随机IO,连续和随机,是指本次IO给出的初始扇区地址,和上一次IO的结束扇区地址,是不是完全连续的,或者相隔不多的,如果是,则本次IO应该算是一个连续IO,如果相差太大,则算一次随机IO。连续IO,因为本次初始扇区和上次结束扇区相隔很近,则磁头几乎不用换道或换道时间极短;如果相差太大,则磁头需要很长的换道时间,如果随机IO很多,导致磁头不停换道,效率大大降底。
顺序/并发IO,这个的意思是,磁盘控制器每一次对磁盘组发出的指令套(指完成一个事物所需要的指令或者数据),是一条还是多条。如果是一条,则控制器缓存中的IO队列,只能一个一个的来,此时是顺序IO;如果控制器可以同时对磁盘组中的多块磁盘,同时发出指令套,则每次就可以执行多个IO,此时就是并发IO模式。并发IO模式提高了效率和速度。
IO并发几率。单盘,IO并发几率为0,因为一块磁盘同时只可以进行一次IO。对于raid0,2块盘情况下,条带深度比较大的时候(条带太小不能并发IO,下面会讲到),并发2个IO的几率为1/2。其他情况请自行运算。
IOPS。一个IO所用的时间=寻道时间+数据传输时间。 IOPS=IO并发系数/(寻道时间+数据传输时间),由于寻道时间相对传输时间,大几个数量级,所以影响IOPS的关键因素,就是降底寻道时间,而在连续IO的情况下,寻道时间很短,仅在换磁道时候需要寻道。在这个前提下,传输时间越少,IOPS就越高。
每秒IO吞吐量。显然,每秒IO吞吐量=IOPS乘以平均IO SIZE。 Io size越大,IOPS越高,每秒IO吞吐量就越高。设磁头每秒读写数据速度为V,V为定值。则IOPS=IO并发系数/(寻道时间+IO SIZE/V),代入,得每秒IO吞吐量=IO并发系数乘IO SIZE乘V/(V乘寻道时间+IO SIZE)。我们可以看出影响每秒IO吞吐量的最大因素,就是IO SIZE和寻道时间,IO SIZE越大,寻道时间越小,吞吐量越高。相比能显著影响IOPS的因素,只有一个,就是寻道时间。
分享到:
相关推荐
首先,我们需要了解IO口的基本概念。IO口是单片机与外部世界交互的重要接口,它能够读取外部设备的状态(输入)或向外部设备发送信号(输出)。在大多数单片机中,每个IO口都可以独立设置为输入或输出模式,并且可以...
NIO引入了通道(Channel)和缓冲区(Buffer)的概念,以及选择器(Selector),使得一个线程可以同时处理多个连接,适用于服务器端高并发的场景。 序列化是将对象状态转化为字节序列的过程,以便存储或在网络上传输...
标题“2个IO实现6个按键”指的是通过某种技术手段,只使用2个IO端口就能够检测和处理6个按键的状态。这通常涉及到硬件和软件的结合,例如使用矩阵键盘扫描、编码器或者其他创新的电路设计。 具体来说,通过构建一个...
编程时,我们需要编写一个循环,依次使能每一行,然后读取列的状态,根据低电平出现的位置来判断哪个或哪几个按键被按下。 在实际应用中,这样的设计可以广泛应用于各种嵌入式设备,如遥控器、游戏控制器、小型仪器...
而在X86这样的体系结构中,物理IO采用I/O映射方式,有一个独立的I/O地址空间,不同于RAM的物理地址空间。CPU使用特定的指令(如IN和OUT)来访问这个独立的I/O端口空间,这使得地址空间更为清晰,但同时也增加了访问...
网络IO是计算机科学中一个非常重要的概念,它指的是计算机与外部设备或网络之间的输入/输出操作。网络IO的基本概念和基础原理是理解计算机网络通信的基石。 什么是IO IO(Input/Output)是计算机科学中指计算机与...
在电子设计中,IO按键扫描电路是一个常见的技术挑战,尤其是当资源有限且需要处理大量按键输入时。本文探讨了一种高效的方法,通过5个IO口驱动25个按键,大大节省了硬件资源。 首先,传统的按键扫描方法通常采用行...
扫描法则涉及使用一个或几个IO口进行扫描,逐个检测所有按键。 例如,在这里可能采用的是扫描法,通过两个IO口交替改变状态来扫描六个按键。其中一个IO口作为扫描线,另一个作为数据线。当扫描线为高时,数据线可以...
用四个IO口控制16个按键,可以大大的节省IO口,适用于接口较少的CPU
通过对上述几种不同扫键方法的探讨,我们可以看到,在有限的IO口条件下,通过巧妙的设计和合理的电路布局,确实可以在一定程度上增加可检测的按键数量。这些方法不仅适用于雕刻机等设备,也适用于其他需要高效按键...
在电子设计领域,高效利用微控制器的输入/输出(IO)口来驱动大量LED是一个常见的挑战。本话题探讨了一种名为Charlieplexing的创新方法,它允许使用较少的IO口来驱动更多的LED,从而节省资源并提高系统效率。 首先...
《RAPIDIO嵌入式系统互连》这本书可能会详细讨论以下几个方面: 1. **协议基础**:介绍 RapidIO 协议的基本概念,包括协议架构、数据包格式、地址映射和错误处理机制。 2. **物理层与接口**:解释不同物理层实现的...
这里我们将深入探讨同步IO、异步IO、阻塞IO和非阻塞IO的概念,理解它们的工作原理以及在实际应用中的差异。 1. 同步IO与异步IO: - **同步IO**:在同步模式下,应用程序执行I/O操作时会等待操作完成。这意味着程序...
在电子设计领域,尤其是单片机应用中,IO口(Input/Output接口)的数量往往有限,但有时我们需要控制更多的设备,比如在这个例子中,要通过3个IO口实现4*4键盘的控制。这种设计思路是利用巧妙的扫描算法来扩展单片机...
### 四个IO口控制16个按键的程序解析 #### 概述 在嵌入式系统设计中,经常需要处理多个输入信号的情况,比如通过有限数量的输入/输出(IO)口来检测多个按键的状态。本文将详细介绍如何利用四个IO口实现对16个按键...
3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)3-IO输出-...
这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更...
首先,我们从基本概念出发,理解这两种IO方式。 **文件IO**是Linux系统中最常见的IO模型,它基于系统调用接口,如`open()`, `read()`, `write()`, `close()`等。文件IO允许程序直接与文件系统交互,执行打开、读取...
4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)4-IO输出-...
PlatformIO是一个强大的开源开发平台,专为嵌入式系统设计,支持多种硬件平台和软件框架。它提供了一种统一的、跨平台的方式来管理编译、调试和上传固件到各种微控制器,如ESP32和ESP8266。在本资源包中,你将找到...