`
jimmee
  • 浏览: 538677 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

物理IO与逻辑IO

阅读更多

IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多种优化以后,瓶颈最终会落到IO。而IO性能的发展,明显落后于CPU的发展。Memchached也好,NoSql也好,这些流行技术的背后都在直接或者间接地回避IO瓶颈,从而提高系统性能。

 

IO系统的分层:

 

  1.   三层结构

上图层次比较多,但总的就是三部分。磁盘(存储)、VM(卷管理)和文件系统。专有名词不好理解,打个比方说:磁盘就相当于一块待用的空地;LVM相当于空地上的围墙(把空地划分成多个部分);文件系统则相当于每块空地上建的楼房(决定了有多少房间、房屋编号如何,能容纳多少人住);而房子里面住的人,则相当于系统里面存的数据。

 

  • 文件系统—数据如何存放?

 

对应了上图的File System和Buffer Cache。

File System(文件系统):解决了空间管理的问题,即:数据如何存放、读取。

Buffer Cache:解决数据缓冲的问题。对读,进行cache,即:缓存经常要用到的数据;对写,进行buffer,缓冲一定数据以后,一次性进行写入。

 

  • VM—磁盘空间不足了怎么办?

 

对应上图的Vol Mgmt。

VM其实跟IO没有必然联系。他是处于文件系统和磁盘(存储)中间的一层。VM屏蔽了底层磁盘对上层文件系统的影响。当没有VM的时候,文件系统直接使用存储上的地址空间,因此文件系统直接受限于物理硬盘,这时如果发生磁盘空间不足的情况,对应用而言将是一场噩梦,不得不新增硬盘,然后重新进行数据复制。而VM则可以实现动态扩展,而对文件系统没有影响。另外,VM也可以把多个磁盘合并成一个磁盘,对文件系统呈现统一的地址空间,这个特性的杀伤力不言而喻。

  • 存储—数据放在哪儿?如何访问?如何提高IO速度?

 

对应上图的Device Driver、IO Channel和Disk Device

数据最终会放在这里,因此,效率、数据安全、容灾是这里需要考虑的问题。而提高存储的性能,则可以直接提高物理IO的性能

 

    2. Logical IO vs Physical IO

 

逻辑IO是操作系统发起的IO,这个数据可能会放在磁盘上,也可能会放在内存(文件系统的Cache)里。

物理IO是设备驱动发起的IO,这个数据最终会落在磁盘上。

      逻辑IO和物理IO不是一一对应的。

 

这部分的东西在网络编程经常能看到,不过在所有IO处理中都是类似的。

IO请求的两个阶段

       等待资源阶段:IO请求一般需要请求特殊的资源(如磁盘、RAM、文件),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源。

       使用资源阶段:真正进行数据接收和发生。

       举例说就是排队服务。

 等待数据阶段,IO分为阻塞IO和非阻塞IO。

       阻塞IO:资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。

       非阻塞IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用

 使用资源阶段,IO分为同步IO和异步IO。

       同步IO:应用阻塞在发送或接收数据的状态,直到数据成功传输或返回失败。

       异步IO:应用发送或接收数据后立刻返回,数据写入OS缓存,由OS完成数据发送或接收,并返回成功或失败的信息给应用。

 

 

按照Unix的5个IO模型划分

 

  • 阻塞IO
  • 非阻塞IO
  • IO复用
  • 信号驱动的IO
  • 异步IO

从性能上看,异步IO的性能无疑是最好的。

 

各种IO的特点

  • 阻塞IO:使用简单,但随之而来的问题就是会形成阻塞,需要独立线程配合,而这些线程在大多数时候都是没有进行运算的。Java的BIO使用这种方式,问题带来的问题很明显,一个Socket需要一个独立的线程,因此,会造成线程膨胀。
  • 非阻塞IO:采用轮询方式,不会形成线程的阻塞。Java的NIO使用这种方式,对比BIO的优势很明显,可以使用一个线程进行所有Socket的监听(select)。大大减少了线程数。

 

  • 同步IO:同步IO保证一个IO操作结束之后才会返回,因此同步IO效率会低一些,但是对应用来说,编程方式会简单。Java的BIO和NIO都是使用这种方式进行数据处理。
  • 异步IO:由于异步IO请求只是写入了缓存,从缓存到硬盘是否成功不可知,因此异步IO相当于把一个IO拆成了两部分,一是发起请求,二是获取处理结果。因此,对应用来说增加了复杂性。但是异步IO的性能是所有很好的,而且异步的思想贯穿了IT系统放放面面。

Oracle:

LOGICAL AND PHYSICAL I/O
LOGICAL I/O 是ORACLE 内核从DATABASE BUFFER CACHE 取得数据。如果内核不能从CACHE中得到数据它将请求操作系统取得数据。
PHYSICAL I/O 是ORACLE 内核从操作系统取得数据,因为不能从DATABASE BUFFER CACHE中取得数据了。
请注意物理I/O不一定就是磁盘读取,因为操作系统内部也有BUFFER CACHE,但是从OARCLE观点来看,这些读取都是物理I/O 

其实实际上我们应该减少的是逻辑I/O而不是物理I/O 

1. 逻辑I/O需要LATCHES 或者序列化设备,这些东西严重的影响了系统的扩展性
2. 如果减少了逻辑I/O,物理I/O就会自然的执行因为逻辑I/O如果不能成功的话,那么物理I/O就会起作用
3. 物理I/O并不像想象的那么花费时间,因为大多数的情况下,操作系统的CACHE都能够满足要求。 

逻辑I/O有下面两个部分组成
1. CONSISTENT GETS
2. DB BLOCK 或者CURRENT GETS

分享到:
评论

相关推荐

    逻辑IO与物理IO 逻辑IO与物理IO 逻辑IO与物理IO

    逻辑IO与物理IO的主要区别在于对IO端口的处理方式。在一些体系结构中,例如PowerPC、m68k等,IO端口被映射到内存空间中,称为内存映射方式,CPU可以直接使用内存访问指令与这些端口交互。这种方式简化了CPU与外设的...

    RapidIO V3.0

    在这一部分中,详细描述了RapidIO协议的基础逻辑,包括数据包的格式、传输协议、流控制机制、错误检测和纠正策略、以及如何在物理链路上传输数据。RapidIO采用分层结构设计,其中逻辑层定义了整个数据传输机制,包括...

    RapidIO 4.0协议标准

    - **逻辑规范**:这部分定义了RapidIO 4.0协议的基本逻辑层,包括消息格式、数据路径控制、错误检测与纠正机制等。 - **物理层规范**:详细规定了信号传输的技术参数,如电压电平、时序要求、接口类型等。 - **链路...

    串行RapidIO技术介绍

    3. RapidIO与传统技术比较 相较于以太网和PCI Express,RapidIO在协议数据传输效率和有效带宽方面具有优势,尤其在10Gb/s的带宽需求下,RapidIO表现出色,更适合高性能嵌入式系统。 4. RapidIO协议结构 RapidIO...

    RapidIO-Specification-4.0.pdf

    《RapidIO互连规范4.0》是RapidIO组织发布的一份详细的技术文档,主要针对RapidIO(快速输入/输出)协议的逻辑层面进行了深入阐述。RapidIO是一种高性能、低延迟的串行互连技术,常用于嵌入式系统、数据中心和通信...

    S7-1500与ET200SP分布式IO进行Profinet_IO通信具体组态步骤.rar

    在工业自动化领域,西门子S7-1500系列PLC(可编程逻辑控制器)和ET200SP分布式I/O模块是常见的设备,它们通过Profinet IO通信协议进行高效的数据交换。Profinet IO是一种基于工业以太网的实时通信标准,能够实现高速...

    CODESYS 之IO模块的添加和配置.doc

    这些模块将处理与现场设备的物理连接和数据交换。 3. 配置 IO 模块的关键步骤是建立变量映射。双击输入模块,你会看到变量映射区域。在这里,你可以为每个通道分配信号,例如,将第一个通道映射为名为 "input1" 的...

    RapidIO Embedded System Interconnect

    #### 五、RapidIO与其他互连技术的比较 与其他流行的嵌入式系统互连技术(如PCI Express、InfiniBand等)相比,RapidIO在某些方面具有独特的优势: - **低延迟**: RapidIO通常能够提供更低的延迟,对于实时性要求极...

    RapidIO教程.docx

    RapidIO 协议由逻辑层、传输层和物理层构成。逻辑层定义了 RapidIO 的协议和信号格式,传输层定义了数据包的传输机制,物理层定义了信号的传输和接收机制。 RapidIO 的主要特点是高带宽、低延时、高可靠性和低功耗...

    基于FPGA的RapidIO总线接口设计与实现技术.pdf

    RapidIO支持高速串行传输,它采用三层分级体系结构:逻辑层、传输层和物理层。逻辑层负责定义接口协议和包格式;传输层定义地址空间和数据传输所需路由信息;物理层则定义了接口的电气特性以及低级错误管理。 在...

    扩展接口与FPGAIO接口电路图

    "扩展接口与FPGA IO接口电路图"可能涉及以下几个关键知识点: 1. **FPGA IO接口**:FPGA的输入/输出单元(IOBs)是连接外部世界的关键。IOBs可以配置为各种输入或输出模式,例如推挽、开漏、三态等,以适应不同的...

    RapidIO_Introduction.pdf

    RapidIO的逻辑规范、传输规范和物理规范构成了其层次化架构。逻辑规范定义了全局共享内存、消息传递和I/O系统。传输规范关注的是不同节点间的通信协议,而物理规范则涵盖了实际的信号传输细节,如接口速率、电气...

    Profinet分布式IO模块说明书和配置软件.zip

    在工业自动化领域,Profinet是一种基于以太网技术的工业网络标准,由德国西门子公司提出,主要用于实现PLC(可编程逻辑控制器)与现场设备之间的高速、高效通信。分布式IO(Input/Output)模块则是Profinet网络中的...

    Linux下RapidIO子系统的分析与实现.pdf

    RapidIO规范包括逻辑层、传输层和物理层三个层次,每层都有其特定的功能和作用。 1. **逻辑层**:这是RapidIO协议的最高层,负责定义应用程序如何通过RapidIO进行通信。它规定了协议和包的格式,提供了端点设备发起...

    Oracle数据库服务器IO高的分析方案.docx

    - **BLOCK**:Oracle数据库中数据文件的基本存储单元,类似于逻辑卷管理器中的物理分区(PP)。每个BLOCK大小默认为8KB,用于存储用户表的数据记录。 - **AWR报告**:Oracle数据库自带的一种性能诊断工具,能够收集...

    altera's rapidIO solutions

    RapidIO规范版本2.2不仅支持高达5.0和6.25Gbaud的速率,还引入了IDLE2序列长控制符号,这个控制符号与可应用于穿越具有高损耗的背板的RapidIO链接的决策反馈均衡(DFE)技术兼容。同时,RapidIO II MegaCore功能也...

Global site tag (gtag.js) - Google Analytics