格斯文档网

您现在的位置是:格斯文档网 > 作文大全 >

2023年Cache,和,Buffer,有什么区别,附基于PCI核BUFFER模式下链式DMA设计+Oracle数据库性能优化浅析【完整版】

下面是小编为大家整理的2023年Cache,和,Buffer,有什么区别,附基于PCI核BUFFER模式下链式DMA设计+Oracle数据库性能优化浅析【完整版】,供大家参考。

2023年Cache,和,Buffer,有什么区别,附基于PCI核BUFFER模式下链式DMA设计+Oracle数据库性能优化浅析【完整版】

Cache 和 Buffer 是两个不同的概念,简单的说,Cache 是加速“读”,而 buffer是缓冲“写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。在很多情况下,这两个名词并没有严格区分,常常把读写混合类型称为 buffer cache,本文后续的论述中,统一称为 cache。

  Oracle 中的 log buffer 是解决 redo 写入的问题,而 data buffer cache 则解决data block 的读写问题。对于 Oracle 来说,如果 IO 没有在 SGA 中命中,都会发生物理 IO,Oracle 并不关心底层存储的类型,可能是一套存储系统,可能是本地磁盘,可能是 RAID 10,也可能是 RAID 5,可能是文件系统,也可能是裸设备,或是 ASM。总之,Oracle 把底层的存储系统称为存储子系统。

  在存储系统中,cache 几乎无处不在(在后面的论述中,我们统称为 cache),文件系统有 cache,存储有 cache,RAID 控制器上有 cache,磁盘上也有 cache。为了提高性能,Oracle 的一个写操作,很有可能写在存储的 cache 上就返回了,如果这时存储系统发生问题,Oracle 如何来保证数据一致性的问题。

  Oracle 数据库最重要的特性是:Write ahead logging,在 data block 在写入前,必须保证首先写入 redo log,在事务 commit 时,同时必须保证 redo log 被写入。Oracle 为了保证数据的一致性,对于 redo log 采用了 direct IO,Direct IO 会跳过了 OS 上文件系统的 cache 这一层。但是,OS 管不了存储这一层,虽然跳过了文件系统的 cache,但是依然可能写在存储的 cache 上。

  一般的存储都有 cache,为了提高性能,写操作在 cache 上完成就返回给 OS了,我们称这种写操作为 write back,为了保证掉电时 cache 中的内容不会丢失,存储都有电池保护,这些电池可以供存储在掉电后工作一定时间,保证 cache 中的数据被刷入磁盘,不会丢失。不同于 UPS,电池能够支撑的时间很短,一般都在 30 分钟以内,只要保证 cache 中的数据被写入就可以了。存储可以关闭写cache,这时所有的写操作必须写入到磁盘才返回,我们称这种写操作为 write throuogh,当存储发现某些部件不正常时,存储会自动关闭写 cache,这时写性能会下降。

  RAID 卡上也有 cache,一般是 256M,同样是通过电池来保护的,不同于存储的是,这个电池并不保证数据可以被写入到磁盘上,而是为 cache 供电以保护数据不丢失,一般可以支撑几天的时间。还有些 RAID 卡上有 flash cache,掉电后可以将 cache 中的内容写入到 flash cache 中,保证数据不丢失。如果你的数据库没有存储,而是放在普通 PC 机的本地硬盘之上的,一定要确认主机中的 RAID卡是否有电池,很多硬件提供商默认是不配置电池的。当然,RAID 卡上的 cache同样可以选择关闭。

  磁盘上的 cache,一般是 16M-64M,很多存储厂商都明确表示,存储中磁盘的 cache 是禁用的,这也是可以理解的,为了保证数据可靠性,而存储本身又提供了非常大的 cache,相比较而言,磁盘上的 cache 就不再那么重要。SCSI 指令中有一个 FUA(Force Unit Access)的参数,设置这个参数时,写操作必须在磁盘上完成才可以返回,相当于禁用了磁盘的写 cache。虽然没有查证到资料,但是我个人认为一旦磁盘被接入到 RAID 控制器中,写 cache 就会被禁用,这也是为了数据可靠性的考虑,我相信存储厂商应该会考虑这个问题。

  至此,我们可以看到 Oracle 的一个物理 IO 是经历了一系列的 cache 之后,最终被写入到磁盘上。cache 虽然可以提高性能,但是也要考虑掉电保护的问题。关于数据的一致性,是由 Oracle 数据库,操作系统和存储子系统共同来保证的。

  基于 PCI 核的 BUFFER 模式下链式 DMA 的设计 摘 要:数字电视信号的采集速度要求不低于 270 Mbit/s,为了保证如此高速的数据流持续存入主机磁盘,且不丢失任何数据,必须解决数字视频采集卡的PCI 接口设计这一关键问题。文章研究了一种基于 ALTERA 公司开发的 PCI 核PCLmt32 的链式 DMA 的设计方法。这种方式的 DMA 能够实现 BUFFER 模式下的最高传输效率,速度达到 2.112 Gbit/s,使得数字视频采集卡的 PCI 总线能够持续、高速地传输大量数据。

  关键词:PCI;链式 DMA;SOPC;Win Driver 随着数字广播电视技术的普及,人们的视觉品位要求越来越高,将数字视频信号采集到计算机中,在计算机中可以方便地对采集的视频进行各种特效处理后再播出,这样可丰富视频特效种类、提高视频的视觉效果。为了高速、实时地采集数字视频信号,必须解决外设部件互连标准( Peripheral Component Interconnect,PCI)总线接口技术这一关键问题。

   本文介绍了基于链式直接存储器访问(Direct Memory Access,DMA)方式控制点云库(Point Cloud Library,PCL)mt32 核完成 66 MHz、32 位数据传输的PCI 接口设计的方法,该设计是在 ALTERA 公司的 Cyclone II EP2C20Q240C8 为主处理芯片的电路板上完成的。

  1 SOPC 系统框架组成 采集卡的可编程片上系统(System-on-a-Programmable-Chip,SOPC)主要由3 大组件组成,主控组件是 PCI 组件、DMA 组件、自定义数据采集组件。

  PCI 组件相当于此系统的 CPU 组件,控制 DMA 组件与 data_in 自定义组件,在 PCI 组件中,bar0_Prefetchable Avalon Master,表示預取址 Avalon-MM 主端口,提供 PCI内存对 Avalon-MM 从设备的高带宽访问。Bar1_Non_Prefetchable Avalon Master,表示非预取址 Avalon-MM 主端口,提供 PCI 内存对 Avalon-MM 从设备的低延时访问。Control Status Registers Avalon Slave,表示控制状态寄存器,包含了很多与 PCI-Avalon 总线配置有关的寄存器,通过对它们的设置订制所需的功能。PCI Bus Access Avalon Slave,表示 PCI 总线通道,可以通过程序设定,映射为程序申请的内存空间。

  2 DMA 控制器 在实现 DMA 开始工作时,对主机产生一个中断,此时,主机 CPU 参与响应中断,在 DMA 工作后,不需要 CPU 参与,可以自行进行数据传输,采用 DMA方式进行数据传输,可以大大减轻 CPU 的压力,提高设备的性能。

  在 ALTER 的 SOPC Builder 中,可定制的 DMA 分为 2 种:BLOCK DMA 和scatter-/gather DMA。Block DMA 要求主设备提供 PCI 和 Local 的起始地址、传输字节数和传输方向。主机启动 DMA 传输并当所有数据传输完成时,PCI 接口控制器将向主机申请中断。scatter/gather DMA 加入了一个描述符模块,该模块存储 PCI 和 Local 的起始地址,传输字节数和下一个描述模块的地址。其传输的过程大概如下:当启动 DMA 状态机时,PCI 接口控制首先读取 DMA 起始地址,开始完成第 1 个模块指定的数据的传输。当第 1 个模块中的数据传输完毕,DMA根据描述符先进先出队列提供的下一个模块的指针连续加载下一个模块,直到检测到“链结束位”,PCI 接口控制器向主机申请中断。

  本文设计的链式 DMA 是基于 BLOCK DMA,能过驱动控制 BLOCK DMA从而实现 scatter/gather DMA 的功能。

  2.1 DMA Core 寄存器 DMA 控制器主要有 5 个寄存器,如图 1 所示,分别是状态寄存器 status,读地址寄存器 readaddress,写地址寄存器 writeaddress,长度寄存器 length,控制寄存器 control。

  在启动DMA时,首先需要分别配置readaddress,writeaddress,length和control这 4 个寄存器,然后总线就会启动 DMA 传输,DMA 控制器向 readaddress 寄存器指向的地址中读取数据,将数据写入至 writeaddress 寄存器指向的地址,整个DMA 操作所需传输的数据个数存储在 length 中,而数据传输的模式存储在控制寄存 control 中。

  2.2 DMA BUFFER 的选择 当 DMA 工作在突发模式下,一次 DMA 传输最多传送 1 024 个 32 位宽度的数据,每传送完 1 024 个字则需要对 DMA 进行中断,频繁地对 DMA 中断会对程序计数器效率造成影响。

  当 DMA 工作在非突发模式下,一次 DMA 传输则可以传输任意大小的字, 当传输完规定的数据个数后才进行一次中断,此时传输的数据个数不受 1 024 的控制。而两种工作状态下,数据传输的效率是不一样的。

  DMA 工作在非突发模式下,经过逻辑分析仪采集的数据图,逻辑分析仪的主时钟为 PCI 的工作时钟 66 MHz,yushu_out(即 SOPC 系统中自定义组件的地址)信号每隔 5 个时钟周期进行一次地址的自增,也意味着每隔 5 个时钟周期SOPC 才接收一个动态随机存取存储器(Dynamic Random Access Memory,DRAM)的输出数据,效率变为标准的 1/5。

  DMA 工作在突发模式下,经过逻辑分析仪采集的数据图,逻辑分析仪的主时钟为 PCI 的工作时钟 66 MHz,yushu_out 信号每隔 1 个时钟周期进行一次地址的自增,也意味着每隔 1 个时钟周期 SOPC 接收一个 DRAM 的输出数据,这完全按照 PCI 的工作效率进行。

  因此,为了满足数字分量串行接口(Serial Digital Interface,SDI)的传输要求,使采集卡的传输效率达到最高,我们将 DMA 设置工作在突发模式下。

  3 结果分析 使用两种方法测试 BUFFER 模式下 DMA 操作是否正确。

  图 2 为测试方案 1,即使用数据发生器测试数据的方法。

  如图 3 所示,接收到的数据通过 PCI 的数据线输出,在 108 时刻连续输出782,783,784,785,786,787,788 等数据,一个 66 MHz 时钟周期输出一个32 位数据。

  第二种方法即可采集数字视频信号至 PC 机的内存,观察内存中的数据是否正确来判断 BUFFER 模式下 DMA 是否工作正确。

  将 10 位数据合并后 32 合所得的数据如图 4 所示,图 4 中的数据,均可以找得到,其中 EAV SAV 奇场与偶场均是不一样的,因此,其含有 EAV SAV 的数据是变化的,其他的数据均是固定周期出现的。

  连续采集合成后的视频数据,存储在起始地址为 5000000 的主机内存中,截取主机中两段视频数据。

  仔细观察数据,发现所有数据都与图 4 中标准数字视频信号数据一致。

  在采信卡采集数据时,速度完全满足 PCI 的速率要求,即每 66 MHz 时钟周期,输出一个有效的 32 位数据。根据设计原理,是将 30 位数字视频信号,在高2位补零,组成32位传输数据,因此,可以知道有效数据的传输效率为1.98 Gbit/s。

  4 结语 本文利用超高速集成电路硬件语言实现了基于 PCI 核 BUFFER 模式下的链式 DMA,并在 Altera 公司的 QuartusII 开发工具上利用嵌入式逻辑分析仪对系统进行了测试,表明 BUFFER 模式下 DMA 的快速性,并通过分析主机中所采集到的视频数据表明了链式 DMA 的正确实现。通过理论分析和测试,本设计完全可以满足數字视频信号实时采集系统的要求。

  [参考文献] [1]沈羽.基于 PCI 总线的实时高速数据记录器研究[D].北京:中国科学院研究生院,2006. [2]PCI-SIG.PCI Express Card Electromechanical Specification Revision2.0 [EB/OL].(2007-09-17)[2019-04-10]. [3]PCI-SIG.PCI Express Base Specification Revision 1.1[J].PCI Express,2005(27):272. Oracle 数据库性能优化浅析 关键词:Oracle 数据库性能优化优化策略 摘 要:随着运行时间增长、业务量增加以及硬件、操作系统、应用程序等方面原因,数据库性能在运行一段时间后均会下降, Oracle 数据库因体系结构复杂、细节庞杂,其性能优化会有不小困难。本文基于 Oracle 数据库运行情况,从数据库设计、内存参数、常驻内存、SQL 优化、锁争用五个方面入手,提出一套具有实际参考价值的数据库优化策略。

  关键词:Oracle 数据库;性能优化;优化策略 1 前言 随着信息技术快速发展,企业信息化管理程度也越来越高,几乎所有企业都会采用数据库实现海量业务数据的分类存储与管理应用。数据库作为底层核心应用系统,其性能好坏对上层业务应用起着关键作用。本文通过分析 Oracle 数据库(以下简称数据库)运行情况,探索其性能优化方法。

  2 Oracle 数据库概述 数据库由磁盘控制文件、数据文件、日志文件、参数文件等组成的物理文件集合,存储结构分为逻辑与物理存储。逻辑存储描述其内部组织和管理数据方式,物理存储展示其在操作系统中的物理文件组成情况。启动数据库实际是在服务器 内存中创建一个实例,用实例访问和控制磁盘数据文件。用户连接到数据库时,实际连接的是实例,由实例和数据库进行通信,再将处理结果反馈给用户。

  3 Oracle 优化技术 数据库优化是在同样硬件资源下提升数据库执行速度,减少系统响应与 I/O竞争,提高用户访问效率。

  3.1 数据库设计 开发应用程序,数据建模要先于所有设计任务,所有后续应用设计都会以数据建模为基础,应用程序最终性能会受到数据模型制约。数据库中,数据模型几乎无法改动,尽早对数据建模优化是项非常关键的任务。数据库设计尽可能遵循三大范式,实现冗余较小且结构合理。

  3.2 内存优化 数据库内存配置是否合理将影响数据库整体性能。Oracle 内存主要包括 SGA(系统全局区)和 PGA(程序全局区),而内存优化主要是对系统影响较大的 SGA进行合理调整。

  3.2.1 SGA 与 PGA 概述 SGA 与 PGA 都是数据库为会话而在服务器内存中分配的区域。SGA 是一组包含一个数据库实例数据和控制信息的内存结构,由所有服务进程和线程共享。PGA 是每个服务进程、线程的专用内存,不允许系统中其它进程或线程访问,是独立于 SGA 的私有空间。

  3.2.2 内存现状分析 查询数据库中执行低效的 SQL 语句,系统响应 1880ms; select executions, disk_reads, buffer_gets,round((buffer_gets-disk_reads)/buffer_gets,2) hit_radio, round(disk_reads/executions,2) reads_per_run, sql_textfrom v$sqlarea where executions>0 and buffer_gets >0 and(buffer_gets-disk_reads)/buffer_gets <0.8 調整数据库内存参数,扩充数据缓冲区...

推荐访问: Buffer 有什么区别 附基于PCI核BUFFER模式下链式DMA设计+Oracle数据库性能优化浅析 链式 标签 浅析

版权所有:格斯文档网 2010-2024 未经授权禁止复制或建立镜像[格斯文档网]所有资源完全免费共享

Powered by 格斯文档网 © All Rights Reserved.。浙ICP备19042928号