`
jimmee
  • 浏览: 529284 次
  • 性别: 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与物理IO逻辑IO与物理IO逻辑IO与物理IO

    RAPIDIO嵌入式系统互连

    内容简介:本书具体说明开发RapidIO技术的历史背景,介绍RapidIO逻辑层、传输层协议和物理层技术。本书还描述RapidIO在企业存储、无线基础设施等实际系统中应用的实例,评估与RapidIO相关的编程模型,说明RapidIO...

    rapidio1.3.rar

    rapidio V1.3 协 议 specifications pdf 全 套 协 议,包含容错、交互、物理层、逻辑层、传输层协议

    srio协议分析 逻辑层 物理层

    RapidIO协议定义了3个层:逻辑层、传输层和物理层逻辑层定义了操作协议和相应的包格式。

    论文研究-RapidIO接口IP核的设计与验证 .pdf

    RapidIO接口IP核的设计与验证,吴冰冰,张建华,摘要:介绍了一种基于RapidIO协议的接口IP核设计,着重研究了逻辑层协议处理、事务匹配、物理层包缓存和队列管理的实现。设计支持逻

    IO管理 5.2IO核心子系统1

    引入目的改进设备分配步骤;用户编程时使用逻辑设备名(设备类型)来申请设备,操作系统实现从逻辑设备到物理设备名的映射(通过LUT)逻辑设备表(LUT)的设置整个系

    初谈SQL Server逻辑读、物理读、预读

     要理解逻辑读、物理读、预读这三个概念,先要搞懂SQL Server的数据存储方式。  SQL Server数据库包括数据文件和日志文件,一个数据库可以有一个或多少数据文件、日志文件。所有的数据存储在数据文件中,数据...

    5.1.4_IO软件层次结构1

    ①向上层提供统一的调用接口(如 read/write 系统调用) ②设备的保护 ③差错处理 ④设备的分配与回收 ⑤数据缓冲区管理 ⑥建立逻辑设备名到物理设备名的

    关于Oracle数据库优化的几点总结

    个人理解,数据库性能关键的因素在于IO,因为操作内存是快速的,但是读写磁盘是速度很慢的,优化数据库关键的问题在于减少磁盘的IO,个人理解应该分为物理的和逻辑的优化, 物理的是指oracle产品本身的一些优化,...

    Ramdisk.Ult.6.1.0.rar

    由于物理内存的访问速度远远超过物理硬盘,因此虚拟硬盘具有非常高的数据读写速度,从而突破系统IO瓶颈,飞速提升计算机性能。 Primo Ramdisk 具有一系列强大的功能和选项以使性能最大化,并使软件具有广泛的应用性...

    Lyh1997GH#LYH1997GH.github.io#2019-03-23-查看CPU核数 1

    1.公式 2.查看物理CPU个数 3.查看每个物理CPU中core的个数(即核数) 4.查看逻辑CPU的个数

    matlab同步采样代码-TwinCat3_CPP_Examples:TwinCat3CPP示例

    C++模块的实现,该模块使用了一个IO模块映射到物理IO。 本示例描述了快速入门,目的是创建一个 C++ 模块,该模块在每个周期递增一个计数器并将计数器分配给数据区中的逻辑输出“值”。 数据区可以分配给物理 IO 或另...

    新华DCS培训

    它能够处理控制逻辑和点记录,通常连接I/O卡件,远程IO等硬件。 功能站:具有某种特定功能的站,如工程师维护功能,操作员功能等。一台物理计算机可以对应一个功能站,也可以对应多个功能站,即具有多种功能站的...

    微机学习要求答案

    8086采用IO独立编址方式,注意X86中IO接口的寻址方式,X86的IO操作指令,IN和OUT指令的端口地址、IN/OUT指令只能是端口与累加寄存器AX(或AL)进行传送; 6、系统的复位后内部寄存器的状态(除CS=0FFFFH外,其他寄存器...

    amccool.github.io:IO页面

    每个人似乎在同一事物上使用不同的术语,因此将数据库文献与分布式系统的内容连接到与开源世界有关的各种企业软件阵营,这有点令人困惑。 尽管如此,这里还是一些大致的指示。 学术论文,系统,讲座和博客: 很好...

    IBM X3850X5 阵列卡安装配置手册

    Scan Devices:重新扫描物理,逻辑设备 Virtual Disks:配置虚拟磁盘,选择此选项可以配置,修改,删除虚拟磁盘 Physical Drives:配置物理磁盘,选择此选项可以查看物理盘状态,配置热备份 Configuraiton Wizard:...

    TDH_Socket_Plugin_for_MySQL.zip

    TDH_Socket 是一个MySQL daemon 插件, 类似于HandlerSocket。现在TDH_Socket能接受客户端的... 由于采用读写分开以及物理读和逻辑读的线程分开策略使在有大量物理读的时候也能提供比较高的性能 能对物理读进行流控

    微型计算机原理及应用基本学习要求2018

    8086采用IO独立编址方式,注意X86中IO接口的寻址方式,X86的IO操作指令,IN和OUT指令的端口地址、IN/OUT指令只能是端口与累加寄存器AX(或AL)进行传送; 6、系统的复位后内部寄存器的状态(除CS=0FFFFH外,其他寄存器...

Global site tag (gtag.js) - Google Analytics