在数据库优化和存储规划过程中,总会提到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口都可以独立设置为输入或输出模式,并且可以...
网络IO是计算机科学中一个非常重要的概念,它指的是计算机与外部设备或网络之间的输入/输出操作。网络IO的基本概念和基础原理是理解计算机网络通信的基石。 什么是IO IO(Input/Output)是计算机科学中指计算机与...
《RAPIDIO嵌入式系统互连》这本书可能会详细讨论以下几个方面: 1. **协议基础**:介绍 RapidIO 协议的基本概念,包括协议架构、数据包格式、地址映射和错误处理机制。 2. **物理层与接口**:解释不同物理层实现的...
### JAVA IO流概念及其应用详解 #### 一、JAVA为何引入流的概念? 在JAVA中,引入流的概念主要是为了实现对各种类型数据的高效处理。在实际应用中,无论是从网络中传输数据还是从本地文件中读取数据,亦或是与用户...
标题"MCP23S17_spi扩展io_spi接口IO扩展_spi扩展io芯片_MCP23S17STM32_mcp23_"提到了几个关键概念,包括MCP23S17,SPI扩展IO,SPI接口,以及与STM32微控制器的关联。MCP23S17是一款由Microchip Technology制造的16位...
在实际应用中,IO-Link库文件的使用可能涉及以下几个方面: - **设备配置**:通过库文件,工程师可以定义和配置IO-Link主站以及连接的从站设备,包括传感器和执行器的参数。 - **数据交换**:利用IO-Link协议,可以...
在"RapidIO学习笔记"中,我们可以深入探讨以下几个关键知识点: 1. **协议层次结构**:RapidIO协议分为物理层(PHY)、串行链路层(SLL)和传输层(TL)。物理层处理实际的信号传输,串行链路层负责将并行数据转换...
oflag 参数可以是以下几个常数的组合: * O_RDONLY:只读打开 * O_WRONLY:只写打开 * O_RDWR:读、写打开 * O_APPEND:每次写时都加到文件的尾端 * O_CREAT:若此文件不存在则创建它 四、read 函数 read 函数...
异步IO的核心概念包括: 1. **WSAAsyncSelect**:这是WinSock异步IO模型的一种实现方式,它允许应用程序指定一个窗口句柄,当特定的网络事件发生时,Windows会发送一个消息到该窗口。例如,当有新的数据到达时,将...
Java IO的类结构主要由以下几个层次构成: 1. **根接口**:`InputStream` 和 `OutputStream` 是所有流类的基础。 2. **数据源I/O类**:如 `FileInputStream`、`FileOutputStream`、`ByteArrayInputStream` 和 `...
InTouch IO驱动文件的通讯过程通常包含以下几个步骤: 1. 配置:在InTouch工程中,用户需要配置驱动参数,如PLC的IP地址、端口号、通信协议(如DHCP、TCP/IP)等,确保InTouch能正确找到并连接到AB PLC。 2. 连接...
这些信息通常被保存在一个名为`io_state`的枚举类型对象中,其中包括以下几个关键标志位: - **eofbit**:表示已到达文件尾。 - **failbit**:表示发生了一个可恢复的输入输出错误。 - **badbit**:表示发生了一个不...
理解磁盘性能时,需关注几个核心概念:寻道时间、旋转延迟、数据传输时间以及IOPS(每秒输入/输出操作)。 - **寻道时间**:磁头定位到正确磁道所需的时间。 - **旋转延迟**:等待数据处于磁头下所花费的时间。 - *...
在提供的压缩包文件中,我们可以看到包含以下几个部分: 1. **Part1.pdf**:可能涵盖了RapidIO协议的基础概念和原理介绍。 2. **Part2.pdf**:可能详细解析了RapidIO的物理层和传输层的实现。 3. **Part4.pdf**和**...
适配过程可能包括以下几个步骤: 1. **创建WebSocket连接**:使用微信小程序的`wx.connectSocket`接口初始化WebSocket连接,并设置相关参数,如服务器URL。 2. **事件监听**:注册`onSocketOpen`、`...
Java I/O流的抽象基类主要包括几个顶层接口,如InputStream、OutputStream、Reader和Writer。这些抽象基类定义了各种流的基本操作,如read()、write()和close()等方法。 在Java I/O中,File类扮演了非常重要的角色...
Socket.IO 是一个实时应用框架,它为Web开发者提供了一种简单、高效的通信方式,支持WebSocket以及其他几种降级的传输协议。这个压缩包文件"unity-SocketIO-master"显然是关于在Unity游戏引擎中集成Socket.IO的示例...
在本文中,我们将深入探讨Socket.IO的核心概念,以及如何利用它来构建一个简单的聊天室。 首先,Socket.IO 使用WebSocket协议作为底层传输技术,但同时也提供了对其他技术(如HTTP长轮询、JSONP等)的回退支持,以...
Java IO体系结构主要由以下几个核心部分组成: 1. **流(Streams)**:Java IO的核心概念是流,它们代表数据的源和目的地。流可以是字节流或字符流,分为输入流和输出流。字节流处理单个字节的数据,而字符流处理...