admin 管理员组

文章数量: 887021


2024年3月6日发(作者:arcode编程是什么)

华中科技大学硕士学位论文摘要“随着信息技术的飞速发展,存储系统在整个计算机系统中的地位日益突出,而存储“瓶颈”问题却日益严峻。为缓解这一矛盾,人们~直在不断地进行着各种研究与尝试,已经取得了不少成果和进展,但这相对于信息技术的发展来说还是远远不够的。为了缓解这种状况,以改进磁盘阵列的“O性能为出发点,在原有研究的基础上,提出了两种改进磁盘阵列IJO性能的有效途径,从而满足了某些对存储系统性能要求较高的应用需求。通过研究原有阵列体系结构,对原有阵列控制软件进行了改进,进而提出了流水写回调度策略。流水写回策略改变了常规阵列处理写命令的流程,实现了写命令的流水线式执行过程,这样不仅充分利用了系统硬件资源,使其充分合理地并行工作,而且阵列可以同时处理多个写请求,进而实现了“第一次I/0合并”。因为流水写回策略实现了在处理连续写命令过程中的主从通道并行工作,从而“隐藏”了磁盘的寻道定位时间,“第一次I/O合并”又减少了磁盘的I/O次数,所以,流水写回策略对阵列的写性能提高是很显著的。对于阵列的读性能,采用了一种自适应预取算法。该算法改变了常规顺序预取的机械、盲目的缺陷,它通过分析主机过去一段时间的读请求特性来决定是否进行预取以及预取长度。这样,对于主机的连续的顺序读请求,预取具有很高的命中率,极大地提高了阵列的读性能;对于非顺序的读请求,该算法也能够自动识别,一般不进行预取,保持了随机读的阵列性能。关键词:磁盘薛螽;流水奎貊策略;I/o.隆甏:c。艋;自窘乏预取‘本文的研究工作受到国家自然科学基金(69973017)的资助

华中科技大学硕士学位论文AbstractWiththedevelopingofinformationtechnology,storagesubsystemisbecomingmoreandmoreoutstandinginthewholecomputersystem,buttheproblemofstoragetobottleneckisbecomingacute.Inorderovercomethisstatus,manypeoplehavebeennotresearchingallkindsofways.Someconsiderableprogresshasbeenmade,butitisenou曲forOnthedevelopingofinformationtechnology.ByanalyzingtheoriginalresearchtheRAIDsystem,tWOkindsofwayshavebeenproposedforimprovingI/Oarray.aperformanceofthediskTheRAIDcontrolsoftwarehasbeenalteredandisproducedaccordingthenewpipeliningwritebackpolicyanalysisoftheoriginalRAIDarchitecture.ThepipeliningwritebackpolicychangestheprocessofthetraditionalRAIDsystemwritingexecutingcommand,anduseitexecutesthewritecommandbyapipeline.Thereby,thispolicysystem,expandstheparalleldegree.ThispolicyalsomakestheRAIDsystemCanprocessmorethanonewritecommandatthesanletime,andmakesfulloftheresourceofthethismakesthe“firstI/Ocombination”comeprincipalchannelswhichconnectthehostcalltoreality.Forthecontinuouswriterequest,tothedisksandsubordinatechannelwhichconnectstoworkparallelbypipeliningwritebackpolicyandthe’‘firstI/0combination”decreasesthenumberofdiskI/O.Sothepipeliningwritebackpolicyimprovingtheperformanceofdiskarrayisverynotable.Anauto-adaptingprefetchingalgorithmisproposedtoimprovethethediskarrayforreadrequest.Itperformanceofanalyzesthecharacteristicoftheorreadrequestsfromthehostrecently,anddecidesdemandofprefetchingthedatalengthoftheprefetching.Thisalgorithmavoidsthelimitationofsequenceprefetching.Forthesequencereadrequestfromthehost,prefetchinghashighbitratioandimprovesthereadingperformanceofdiskarraygreatly.Fortherandomreadrequest,thealgorithmCanautomaticallyidentifyitanddecidenottoprefetchforremainingtherandomreadperformance.Koywords:RAID;PipeliningWriteBackPolicy:Auto—adaptingPrefetchingI/OPerformance;Cache:+ThisresearchissupportedbyNationalNaturalScienceFoundation(69973017)11

华中科技大学硕士学位论文1序言1.1存储系统面临的挑战与机遇1.1.1传统I/O瓶颈存储系统作为计算机系统的三大组成部分之一,和其他组成部分具有同等的重要性。存储系统能否适应当今计算机处理技术和传输技术的发展,直接决定着计算机系统的整体性能。遗憾的是从第一台计算机的产生到目前为止,计算机的存储设备从最初的纸带穿;fLN目前的由高速Cache—RAM一磁盘等外存储设备构成的多级金字塔形存储系统,其性能都始终远远落后于计算机的处理能力,而且外存储系统的发展速度也不及处理器的进步速度。图1.1显示了处理器的处理能力增长速度与磁盘性能增长速度的差距。自从计算机互联网技术出现以后,信息的传输速度也得到了长足的发展。目前.具有Tbps的传输带宽已经实现,千兆位以太萋鎏鍪1998网技术已经开始进入居民生活小区,USB、Pl394、光纤通道(FC)等高速通道技术不断进步成熟【1,21,这样就保证了信息的传输19992000200120022003速度。我们把一个计算机系统的运行分为处理、传输和存储三个部分,设这三部分的执行时间百分比分别为P、T、S,M、N、L年份图l_1CPU与DISK的速度增长差距分别为某段时期中三部分的性能提高倍数,则根据著名的Amdahl法则【3】,整个计算机系统的性能加速LP,S由下式得到:黔i毒丐当M、N”L时,那么整个系统性能的提高就受限于存储系统性能的提高速度。这就是我们通常所说的存储系统“I/O瓶颈”。

华中科技大学硕士学位论文1.1.2信息数字化时代的新需求近几年来,随着信息科学的飞速发展,电子商务、无线Web、视频点播服务等数字化技术的兴起和普及,需要存储的信息量也呈爆炸式地增长,对存储系统的安全性和性能要求也是越来越高。以视频服务为例,假设视频带宽为5M赫兹,制式为队L,每秒为25帧,取样大小为24位,存储数字化每帧数据量为1.2MB。则每秒需要存储的数据总量为30MB。一段长约3分钟的新闻片段,则总的存储数据量为5,400MB:一部120分钟的电影节目的存储容量将达到210GB,即使按MPEG2标准压缩,也需要大约4.7.IOGB的存储空间,正常播放时,需要至少10Mbps的带宽‘4561。普通的磁盘在容量和速度上都很难达到这一要求。对于电子商务和金融系统来说,除了要求存储系统具有高速大容量的特点之外,作为客户数据信息的载体,企业需要更安全的存储系统。由于光通信技术的进步,光纤网络的普及使得网络带宽不再成为人们上网的“瓶颈”。今天,人们在网上浏览所需的文字信息、音乐、彩色图像、动画已成为现实。网上图书馆、博物馆、音乐会馆、公园、三维都市、各种游乐场所、各种多媒体服务等已经进入了人们的日常生活。在网上寻找一本书、~件商品、一条信息,只需几秒钟。而在过去,通过传统方式所花费的时间会以天为单位,效率提高了几百倍、几千倍。这样就对传统的外存储设备提出了一个新的要求,即适应网络应用需求,同时对性能的要求也就更高。1.1.3存储产业的兴起具调查,2001年,存储及其相关产品占整个服务器花费的70.80%,企业已经由传统的根据服务器配置选择存储系统转变为根据存储系统选择服务器产品。人们对存储产品及其服务需求的快速增长,无疑给存储技术的进步和存储服务产业的发展提供了良好的契机。由此而出现了很多知名的以存储设备为龙头的IT企业,如Qlogic,LSI,EMC,DECCorp.等,一些传统的计算机行业巨头如IBM,HP,COMPAQ等也都推出了自己的存储类产品,并且占有相当比例。软件方面,专注于开发存储管理软件的VERITAS公司已经成为全球10大软件公司之一。根据IDC(Intemational

华中科技大学硕士学位论文DataCorporatiOnl的测算,2000年全球用户的存储市场总值就以达356亿美元。所有这些都说明存储系统已经为业界高度重视,预计在未来的几年里,全球存储产业还会有更大的发展。1.2常见的存储解决方案磁盘阵列(RAID)磁盘阵列[781是一种在专用服务器中接入多个磁盘(专指硬盘),以磁盘阵列方式组成~个超大容量、响应速度快、可靠性高的存储子系统。通过对数据分块和交叉存取两项技术的使用,使CPU实现通过硬件方式对数据的分块控制和对磁盘阵列中数据的并行调度等功能。使用RAID可大大加快磁盘的访问速度,缩短磁盘读写的平均排队与等待时间。我们将在1.3节中详细介绍这项技术。附网存储(NetworkAttachedStorage,NAS)附网存储p·10,“1的基本思想是将存储设备直接连接到网络上,它是解决常规文件服务器模型中存在的速度缓慢和服务中断现象的一条途径。文件服务器模型的缺点在于,将文件服务器安放在存储系统的前端,而存储系统一般通过并行接线配置中的SCSI总线【12I与磁盘阵列相连。多台文件服务器对来自用户和其他服务器的存储请求进行读写操作,并且只有一台服务器访问保存文件的磁盘阵列。因此,这台服务器有可能形成单故障点或瓶颈(bottleneck)。NAS有效地将存储的数据从服务器后端移出,直接将数据放在传输网络上。NAS设备使用网络接口卡来传输LAN上的数据流和存储数据。由于这类存储设备不需要文件服务器,消除了低速的文件服务器硬件或操作系统造成的任何延时。NAS设备采用通用文件服务器访问协议,因此它们可以处理来自网络上各个系统的请求,运行多种操作系统。NAS还降低了由于文件服务器的使用将服务器与存储磁盘连接起来的并行SCSI总线而引起的物理复杂性。NAS减少了作为文件服务器部署一部分的并行接线、主机总线适配器和终端的麻烦的设置。尽管有许多优于文件服务器模型的优势,但NAS没有解决一个备份过程中的带宽消耗这个关键性问题,系统扩展能力受到网络带宽的限制。附网存储是存储系统朝着存储局域网络发展的一个步骤。存储区域网(StorageAreaNetworks,SAN)存储区域网【131是一种高速的专用3

华中科技大学硕士学位论文网络,它将各种数据存储设备和相应的数据服务器互连起来,并允许所有用户通过服务器进行访问。它是建立在服务器、磁盘阵列和磁带库之间的一种直接连接。它像扩展的存储器总线一样,将专用的集线器、交换器以及网关或桥路互相连接在一起。硬件结构上它有--+层面,其中心为存储设备,互联成网:第二层为服务器,作为用户端与存储域之间的中介桥梁,最外层面为用户。这样的存储结构为大规模网络及其存储带来了极大的开放性、灵活性和可扩展性,同时也提高了网络的可用性与可靠性。SAN常使用光纤通道。一个SAN可以是本地的或者是远程的,也可以是共享的或者是专用的。SAN主要有如下特点:便于出现失败后的恢复;提高SCSI接口I/O的效率;方便批量安装;共享存储器资源;扩充存储器容易。存储器簇(StorageCluster)存储器簇f】4l是将多个存储设备或存储子系统用互联网连接起来,统一调度,以实现数据的超大容量存储和高速传输的分布存储系统。它可归并为两大类。一类是在PCCluster或workstationCluster中将分散的存储设备用局域网连接,形成一个物理载体分散、存取调度集中的存储系统,它依附在PCCluster或者工作站网中;另一类是将附网存储设备通过局域网连接,形成~个集中的海量存储系统,它可作为高性能计算机或工作站的存储子系统。存储器簇具有可扩展性,有利于系统的并行访问,系统可以根据I/0请求的分布进行负载均衡和智能调度。1.3磁盘阵列(RAID)技术简介RAID技术的产生是为了解决I/O瓶颈,而它的思想和其他很多技术领域的思想一样,磁盘存储器的设计者认识到,如果使用~个组件(磁盘)对性能推进有限,那么可以通过使用多个并行组件来获得额外的性能提高‘”’161,这就导致了独立地、并行运行的磁盘阵列的研究。通过多个磁盘,多个独立的I/O请求可以并行的进行处理,只要它们所需要的数据驻留在不同的磁盘中。此外,如果要访问的数据块分布在多个磁盘上,I/O请求也可以并行地执行。术语RAID(RedundantArrayof[ndependemDisks)最初是在加利福尼亚大学伯克利分校的D.A.Patterson教授的~篇论文参考文献f71中提出的。当时RAID缩写代表廉价磁盘冗余阵列(RedundantArrayot’lnexpensiveDisks),是相对于

华中科技大学硕士学位论文I.3.3RAID4级采用块交叉方式独立存储,即在扇区一级进行数据交叉,使用一个专用的冗余盘存放奇偶检验信息。RAID4的数据存放格式如图1.4所示。由5:RAID4使用了一个专有的校验磁盘,所以,RAID4在处理写请求时有一个内在的瓶颈,考虑F{qRAID写额外开销所引起的性能问题,这是一个双倍性能损失。因为RAID4支持对所有磁盘的独立访问,阵列中的多个写操作都要读出校验数据,再重写到单个磁盘,因此,校验磁盘必须支持所有等待的写操作,这种对校验磁盘的依赖性是一个系统瓶颈,随着磁盘数量和交叉操作数目的增多,对校验磁盘的访问速度变得越来越慢。由于这个原因,RAID4子系统支持的磁盘和磁盘臂的数量受到一定的限制,因此,RAID4在灵活性和扩展性方面就受到限制,这使RAID4并不是很不常见。1.3.4RAID5级采用块交叉方式独立存储,将校验信息分散存放在阵列中所有盘上,解决了争用RAID-4中专用校验盘瓶颈问题。根据校验信息存放策略不同,/LAID.5可分为左对称、左不对称、右对称、右不对称、平面左对称等多种结构。RAID.5中多个盘可以并行读/写,是纠单错磁盘阵列中性能价格比较优的一种阵列结构。图1.5是RAID5左对称结构数据存放示意图。1.3.5RAID6级RAID6采用分块交叉技术及双磁盘驱动器容错技术。如图1.6所示,由于它有两个磁盘驱动器用于存放检、纠错冗余代码,即使在双盘出错的情况下,仍能保证数据的完整性和有效性,因此,它有很高的数据有效性和可靠性。数据和校验信息分块交叉存储在所有磁盘上,多个磁盘可同时读写,170传输率较高。但每次写入数据时要对三个磁盘驱动器(一个数据盘和两个校验盘驱动器)访问两次,因此写性能比RAID一5差。通常的RAID.6是采用RS(Reed—Solomon)彤q错的结构。

华中科技大学硕士学位论文照霸感鼎龠翮用期吲划削幽剖h矧h忑卅际嗣而『简lh葛卅R赢卅R蕊一世=:!纠世兰!!{}!竺:lL:JI、嘉FlU竺纠l、i丽7l乜竺列出竺■世!刿雌:!!纠嶂兰纠卜————一卜————一卜———一卜————一h————1i陌F.k—wk召陌Idl—wk翻陌鬲翻I阳赢百Il二|II,IIH·Kk4{i‘“·Nk’Jl阳面再Ii11lz·I,’J翮翮翮霈鞫—观图14RAID4数据存放格式h————一h————卅p—————卅、————一1h————卅r————一1‘hI.wkJIi,4·Hk5IlhI·《kf·j—l、J-j’IP————卅l““Mk?Ihi·“Klr————卅?—————lr————叫Ip————卅卜————卅卜—————1、—————1卜————吉1Il¨坩k·’ll兀舡rIlj、I¨tHkI”llhLw-klIJIh——√h———√h———√k_h——√h—。..。—1hhKkI:Ilr——..——1HI二15,llI■·wkIJIr——————d、——————1N·”k14jlr——————1Nwk皓JIni6.191llhhH'kI^lltd们k}?|b“《kt“I1114悄-ktvl图1.5P,AID5左对称结构数据存图冈酗霞鳓慝鳓筒=≥瞬瞬鳓冈圈陶卜————卅卜—————1卜—————1卜—————1卜———卅卜、————1lI■IKkI●llI■·KkIIlbI‘Kk二I【仆wk‘llINO-5)I1a0-3}jIh—————叫卜—————一卜—————叫卜—————●卜—二。—卅卜——.,卅l_·NkJIlIH_HkjflhhHkn|}n4一:+lla4∞IIhkKk7lIb—.——卅卜————卅卜————一卅■————一一卜—.——卅卜————卅Id例'kRllI■州k。’flp13-ll}I}Q墨Il’{lI■叫kⅢI1F.k_-k11IlI.k*kt2lhh.——,—ilh—.——,—oPIt;峙lIlql:.15}lh—,————?h—。——,一一h————.oi^———..oj}岫HkI,}I¨#AIJI|l目州k搏I图1.6RAID6数据存放格式1.3.6RAJDlO级RAID10是一种采用分块与镜像技术相结合的阵列级别,它实际是RA【D0-1-RAIDl。由于采用了分块技术,多个盘可以并行操作,镜像技术则保证了高的容错能力,是一种比较理想的阵列级别。但由于采用了镜像技术,也带来了写性能的降低和较高的容错代价。RAD方案包括的这些不同级别并没有高低之分,它们表明了不同的设计结构,这些设计结构有三个共同的特性:I.RAID是一组物理磁盘驱动器,操作系统把它看作是一个单独的逻辑驱动器:2.数据分布在物理驱动器阵列中;3.使用冗余的磁盘容量保存奇偶校验信息,从而保证当一个磁盘失败时,数据具有可恢复性(RAID0除外)。不同的RAID级别中,第二个特性和第三个特性的细节不同:RA[D0不支持第

华中科技大学硕士学位论文三个特性。1.4本文研究的目的和意义1.4.1国内外研究概况自从20世纪80年代磁盘阵列的概念提出以来,国外许多厂家不惜投入重金,致力于磁盘阵列技术研究。这些厂家分为两类:只生产用于其专有主机系统的RAID与出产可用于通用平台的RAID系统。前者包括SUNMicrosystem,DECCorp.,IBM等,其产品特点在于充分利用了如高速系统总线等专用平台的优势,容量大,数传率高。以SUNMicrosystem的Fiber2000为例,其总存储容量可达Pera(1Pera=1000Tera)级,同时数传率也达到了100MB/s左右,但价格极其昂贵。属于后一类的厂家有EMC,Mylex,Accusys,Adaptec,LS[等公司,它们的产品价格也比较高,但适用面广。随着高速外围通道技术的不断进步,基于FC,P1394接口的阵列也已出现,同时廉价的EIDE阵列也己占有已部分市场,但目前RAID主流产品仍然是采用SCS[通道,其通道数传率已达到320MB/s。在国内,已经有不少高校、科研院所和计算机产品供应商开始关注存储领域,但由于缺乏基础,他们大都还处于起步阶段。由我们实验室自行研制的集成式磁盘阵列已经获得国家专利,成功的推出了国产磁盘阵列产品。这种阵列具有价格便宜、维修方便、容易升级等诸多优点,在国内属于领先水平。在随后的研究中,我们实验室又发明了“基于协议变换的异构双通道的网络磁盘阵列”,受到有关专家的一致好评。在存储系统性能研究方面,人们提出了很多提高性能的策略,其中研究最多的是Cache技术‘22‘281和预取技术【29301。在预取技术中,美国CMU大学的G.A.Gibson教授领导的研究小组提出了信息透明预取技术【3L32I,具有较好的性能,但目前尚处于研究阶段。另外,基于SCSI接口的磁盘阵列的I/O多线程技术‘33】己经在很多阵列产品中实现,在我们自行研制的集成式磁盘阵列中还实现了I/O合并技术|34351。

华中科技大学硕士学位论文1.4.2本文研究的目的与意义虽然我们已经推出了自己的阵列产品,但是,其速度性能一直是制约我们进一步开发研究的一大障碍。随着信息化的不断进步,IT业界对磁盘阵列的需求越来越大,同时也对磁盘阵列的性能提出了新的要求。以视频服务为例,要能满足无压缩的视频播放和实时采集功能,除了要求阵列具有相当的容量之外,其稳定的数传率至少要达到30MB/s。此前我们的阵列是无法满足这以要求的。为此,我们采取了一系列的新技术和新方法,对现有的磁盘阵列进行技术改造,采用新的调度策略和Cache技术,加之高速通道和集/散(Gather/Scatter)技术,达到了提高阵列的//O性能,满足应用需求之目的,也为我们的研究成果进一步走向市场打下良好的基础。与此同时,这些研究成果也为我们的基于协议变换的EIDE阵列和异构双通道的网络磁盘阵列在性能改进方面提供了重要的参考价值。本文基于国家自然科学基金“直接联网的海量存储系统组成原理与核心技术研究”(69973017)和全国优秀博士论文专项基金展开研究的。1.5本文研究的主要内容1.分析原有的基于实时操作系统的集成式磁盘阵列体系结构,并对其软件结构进行改造。描述了改进后的各软件模块间的相互关系。2.对阵列执行主机的命令请求的调度过程进行了分析,找出了其中影响系统性能的不足之处。3.提出了并实现一种新的流水写回式调度策略,并进行了测试。通过分析测试结果,总结了该策略的优越性。4.分析了常用Cache地址映射、替换算法和预取算法的优劣,提出了自适应预取算法。5.运用Cache的策略实现了这种自适应并行预取Buffer的管理,并分析比较了该自适应预取算法与常规顺序预取算法的优劣。O

华中科技大学硕士学位论文2基于实时操作系统的磁盘阵列系统结构2.1实时操作系统简介2.1.1实时系统特性实时系统是指系统中任务要求在指定的时限内完成,如果任务没能在这个时限内完成就认为系统出错。实时系统还可以进一步分为硬实时系统和软实时系统。在硬实时系统中,如果任务的执行时间超过了规定的时限将会发生灾难性的后果,如在实时控制系统中超时可能会导致设备损坏甚至是人员伤亡:在软实时系统中的超时没有硬实时系统那么严重的后果,但也是很不希望发生的p…。在实时系统中,如果采用基于优先级的调度,一般会采用单调频率(ratemonotonic)调度算法[t9】以保证周期性的任务在规定的时限内完成,调度程序总是选择具有最高优先级的就绪任务,这在通用操作系统中是不可接受的,因为这样会出现低优先级的任务“饿死(starving)”现象,但在实时系统中如果不这样就会出现因为低优先级的任务的执行导致高优先级的任务超时。单调频率调度原理仅适用于在独立的任务调度,如果两个或多个任务需要通过信号量或其他进程间通信方式保持同步,就会出现优先级倒置的现象,这也会影响高优先级的任务的及时完成。为了解决优先级倒置问题,在实时系统调度中又引入了优先级继承协议(BasicInheritanceProtocol,BIP)和优先级限制协议(PriorityCeilingProtocol,PCP)。在BIP协议中,当最高优先级的任务等待一个被低优先级任务占有的信号量时,低优先级的任务的优先级会暂时提升至最高直到它释放该信号量,释放信号量后它的优先级复原。BIP虽然能够解决优先级倒置问题,但是不能预防死锁,而PCP贝,tJ可以预防死锁和链式等待。PCP为每个信号量设置一个优先级上限,也即访问该信号量的任务的最高优先级,使用这个优先级上限系统就会拒绝那些会导致死锁或链式等待的任务申请该信号量。从性能上讲,实时操作系统和普通的操作系统的区别主要是在“实时”二字上””。实时操作系统一般具有软件代码的高质量和高可靠性,任务切换时间短,中断响应及时等显著的性能优势。因此,在很多工业控制系统、航天设备、智能仪表、

华中科技大学硕士学位论文仿真系统中都采用了实现操作系统。在磁盘阵列系统中,因为需要面向I,O任务,I/O中断和任务切换都很频繁,所以一般也选用实时操作系统。2.I.2实时Linux系统Linux从诞生至今不过短短的10年时间,但在这10年中它却得到了飞速地发展,特别是1997年刮起的Ljnux旋风,不仅使Lillux在服务器市场上大出风头,在智能数字终端操作系统这个才显端倪的市场上,Linux更是大有先声夺人之势。事实上,除了智能终端领域外,Linux在移动计算平台、智能工控设备、金融终端系统,甚至军事领域都有广泛的应用前景。这些Linux称为“嵌入式Linux”,其中很多还具有实时性,称为“嵌入式实时Linux”ij“。Linux之所以在嵌入式实时系统领域获得如此快的发展,与它自身的优良特性密不可分:1.开放源代码,软件资源丰富,节省了开发时间;2.高效、稳定、多任务的强大内核:3.支持包括x86、ARM、MIPS、ALPHA、SPARC等多种体系结构;4.完善的网络通信、图形和文件管理机制;5.支持大量的周边硬件设备,驱动程序丰富;6.大小功能都可以定制,一般整个系统所占的空间不会超过几兆大小:正是由于Linux的这些特性使得目前不少国内外大学、科研机构和知名公司都加入到嵌入式实时Linux的研究开发工作中,较成熟的嵌入式Linux产品不断涌现,如RT-Linux、HardHatLinux、uClinux等。RT-Linux是美国新墨西哥理工学院开发的基于标准Linux的嵌入式操作系统,已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图象处理等广泛的应用领域。RT-Linux提供了一个精巧的内核,并把标准Linux核心作为实时核心的一个进程同用户的实时进程一起调度,这样就对标准的Linux改动小,充分利用了Linux下的丰富的软件资源。HardHatLinux是MontaVistaSoftware公司推出的功能强大的嵌入式Linux。它具有很好的可靠性和实时性,有很友好的交叉开发环境,并且提供gjpSOS、VxWorks2

华中科技大学硕士学位论文HardHatLinux的软件代码移植工具,极大地减少了程序开发、移植的工作量。UClinu)(是专门用于微控制领域的嵌入式Linux操作系统,已经被成功地移植到很多硬件平台上。它的最大特点就是体积小和没有内存管理单元模块。2.1.3商用VxWorks实时系统VxWorks是美国WindRiverSystems公司推出的优秀的商用实时操作系统。VxWorks具备一个高效的微内核。微内核支持实时系统的一系列特征,包括多任务,中断支持,任务抢占式调度和循环调度。微内核设计使VxWorks缩减了系统开销并加速了对外部事件的反应。内核的运行非常快速和确定,例如,在68K处理器上上下文切换仅需要3,8微秒。中断等待时间少于3微秒。VxWorks具有可伸缩性,开发人员能按照应用需求分配所需的资源,而不是为操作系统分配资源。从需要几K字节存储区的嵌入设计到需求更多的操作系统功能的复杂的高端实时应用,开发人员可任意选择多达80种不同的配置。WindRiverSystems公司为VxWorks配套发行的开发工具包Tornado。Tornado包括强大的开发和调试工具,尤其适用于面对大量问题的嵌入式开发人员。这些工具包括C和c++远程源码级调试器,目标和工具管理,系统目标跟踪,内存使用分析和自动配置等,很容易增加和交互式开发。VxWorks还支持广泛的工业标准如POSIX1003.ib等。这些标准促进多种不同产品间的互用性,提升了可移植性,保护用户在开发和培训方面的投资。2.1.4商用pSOSystem实时系统pSOSystem是集成系统有限公司(IntegratedSystems,Inc.)研发的世界上最早的实时系统之一,也是最早进入中国市场的实时操作系统。该公司在2000年2月16日与WindRiverSystems公司合并,被并购的同时包括其旗下的DIAB—SDS,DoctorDesign和TakeFiveSoftware,两公司合并之后已成为小规模公司林立的嵌入式软件业界里面的巨无霸。目前pSOSystem的最新版本是pSOSystem3。pSOSystem是一个完全可扩展的嵌入式实时操作系统,它包含单处理器支持模块(pSOS+),多处理器支持模块(pSOS+m),文件管理器模块(pHILE),TCP/IP通讯包

华q-科技大学硕士学位论文(pNA),流式通讯模块(OpEN),图形界面,JAVA,HTTP等,这些功能模块完全独立,开发者可根据应用要求扩展系统功能和存储容量。DSOSystem是微内核结构的操作系统,内核提供快速、确定的上下文切换,I/O驱动程序和一些高级的系统服务都不是在内核而是作为进程实现的。pSOSystem采用了单调频率调度,在二元信号量上实现了BIP协议,并且在信号量和条件变量上实现了PCP协议。它还提供了多种其他通用进程同步、通信机制p“。2.1.5磁盘阵列控制器中操作系统的选择选择磁盘阵列控制器的操作系统,我们从以下三个方面考虑:1.对现有软件的兼容性,主要是考虑实验室已经开发的SCSI适配器驱动程序在该系统下的可用性;2.实时性,因为磁盘阵列控制软件中任务间的切换比较频繁,为了提供磁盘阵列的性能,要求系统的实时性好,进程上下文切换时间尽可能的短;3.系统自身容量,由于最终的产品要求系统和控制软件捆绑在一起固化,所以操作系统自身要求的存储容量不能超过100KB。在pSOSystem、Linux和其他实时操作系统中,Linux虽然满足条件1但很难满足实时胜的要求,而实时性好的HardHatLinux费用又很昂贵,其他实时性好,体积小的系统如QNX和VxWorks虽然能够满足后面两条但为了满足第~条,还需要相当的大的工作量。只有pSOSystem基本满足上述3个条件,虽然在实时性方面不如QNX好,也没有Linux的源代码完全开放的优势。所以我们的改进工作就是在基于pSOSystem操作系统的控制软件的基础上展开的。下面对pSOSystem中的一些概念和任务调度作简要的说明。2.1.6pSOSystem中几个基本概念任务(Task)在pSOSystem中,任务是最小的运行单元,也是参与资源竞争(如CPU、Vlemory、I/0devices等)的基本单位,它有自己的地址空间。pSOSystem为每个任务构造了一个虚拟的、隔离的环境,从而在概念上,一个任务与另一个任务之间可以相互4

华中科技大学硕士学位论文并行、独立地执行。任务与任务之间的切换、任务之间的通信都是通过发系统调用(在有些情况下是通过ISR)进入pSOSystem内核,由pSOSystem内核完成的。DSOSystem系统中任务包括系统任务和用户任务两类。关于用户任务的划分并没有一个固定的法则。但很明显,划分太多将导致任务间的切换过于频繁,系统开销太大,划分太少又会导致实时性和并行性下降,从而影响系统的效率。一般说来,功能模块A与功能模块B是分开为两个任务还是合为一个任务可以从是否具有时间相关性、优先性、逻辑特性和功能耦合等几个方面考虑。优先级(Priority)每个任务都有一个优先级。pSOSystem系统支持0~255级优先级,0级最低,255级最高。O级专为IDLE任务所有,240~25j级为系统所用。优先级在任务被创建时指定,在运行时,任务(包括系统任务)的优先级可以通过t—setpri系统调用改变。任务控制块(TaskControlBlockTCB)任务控制块TCB是pSOSystem内核建立并维护的一个系统数据结构,它包含了pSOSystem内核调度与管理任务所需的一切信息,如任务名、优先级、剩余时间片数、当前寄存器状态等。在有的实时操作系统中,任务的状态与任务TCB所处的队列是等同的。pSOSystem操作系统将二者分为两个概念,例如任务处于阻塞状态,但它的TCB却处于消息等待队列、信号灯等待队列、内存等待队列、超时队列之一。pSOSystem启动时,将根据系统配置表中的参数kc—ntask建立一个包含kc—ncask个TCB块的TCB池,它表示最大并行任务数。在创建一个任务时,分配一个TCB给该任务,在撤销一个任务时,该TCB将被收回。对象、对象名及ID号pSOSystem内核是一个面向对象的操作系统内核,pSOSysten系统中对象包括任务、内存域段(MemoryRegions)、内存分区(MemoryPartitions)、消息队列和信号灯等。对象名由用户定义(4位ASCII字符),并且在该对象创建时作为系统调用obj_CREATE的一个入口参数传给pSOSystem内核。PSOSystem内核反过来赋予该对

华中科技大学硕士学位论文象一个唯一的32位ID号。除obj—CREATE和obj—IDENT外,所有涉及对象的系统调用都要用到对象ID号。创建对象的任务通过obj—CREATE就已经知道了该对象的ID号,其余任务可通过obj—IDENT或通过全局变量(如果已经为孩任务的ID号建立了一个全局变量的话)获取该对象的ID号。对象ID号隐含了该对象控制块(如TCB、QCB)的位置信息,这一位置信息被pSOSystem内核用于对浚对象的管理和操作,如挂起/解挂一个任务、删除一个消息队列等。任务模式字(ModeWord)每个任务带有一个任务模式字,用来改变调度决策或执行环境。主要有以下四个参数:PreemptionEnabled/Disabled.RoundrobinEnabled/DisabledInteruptsEnabled/Disabled.ASREnabled/Disabled:每个任务有一个通过as-catoh建立起来的异步信号服务例程ASR。异步信号类似于软件中断。当ASR位为1时8.S—catch所指向的任务将会被改变执行路径,先执行ASR,再返回原执行点。2.1.7pSOSystem的任务调度机制任务调度是操作系统的一个很重要的功能。pSOSystem下启动后的任务有就绪(Ready)、运行(Running)、阻塞(Blocked)三种可能状态并处于这三个状态之一,它们之间的变迁如图2.L所示。pSOSyaem采用优先级+时间片的调度方式。有两个因素将影响动态调度的效果:一是优先级可变(通过t_setpri系统调用改变任务的优先级);二是任务模式字中的preemptionbit位和roundrobinbit位。preemptionbit位决定不同优先级的任务是否可抢占,并和roundrobinbit位~起决定任务的时间片轮转是否有效。6

华中科技大学硕士学位论文图2.1任务的状态转换图(E、R、B分别表示运行、就绪和阻塞)pSOSystem系统中引起调度的原因有两条:1.在轮转方式下时间片到;2.pSOSystem系统调用引发任务调度。该系统调用可能是ISR发出的,也可能是某个任务发出的。pSOSystem任务调度的结果有两种:1.引起运行任务切换,这指的是某个就绪态的任务投入运行,而当前运行的任务被阻塞或进入就绪队列等待运行;2.不引起运行任务切换,这指的是不论任务调度是否引发运行任务切换,都有可能引起一个或多个任务状态变迁。pSOSystem系统中任务的切换时机有三个:1.在时间片轮转方式下(此时任务模式字的roundrobinbit与preemptionbit均为enable),运行任务TaskA的时间片用完,且就绪队列中有相同优先级的其它任务,则TaskA退出运行。2.在运行任务TaskA的Modeword的preemptionbit位为enable的前提下,若TaskA发出的某条系统调用引发一个优先级高于TaskA的任务TaskB从阻塞状态进入就绪状态,则将TaskB投入运行。3ISR使用I_RETURN系统调用,则[SR退出运行,pSOSystem内核选择就绪队列中优先级最高的任务投入运行(这一任务并不~定是被ISR打断的前运行任务)。17

华中科技大学硕士学位论文2.2磁盘阵列硬件结构利用我们现有的集成式磁盘阵列研究成果,保持原有的硬件体系结构,对某些通用板卡(如SCSI适配器)进行升级构成高性能磁盘阵列的硬件体系结构,如图2.2所示。……………………………………………………1主机叫五W图中53C875、53C895均为SYM53CSXX系列的FCI—SCSI适配器,直接插在主机板的PCI插槽上。其中每个SYM53C875连接多个磁盘驱动器,形成一个磁盘串,我们称之为串控制器,也称主通道:SYM53C895用于和主机进行通讯,称之为从通道适配器,简称从通道。阵列控制卡插在主机板的ISA插槽上,卡上带有EPROM,用于固化阵列控制软件。RAM用于装载阵列控制软件,同时提供一定的空间作为磁盘Cache和各种缓冲区(Buffer)。这种采用系统集成的方式比专用板卡方式有很多优越的地方[40】:1.可扩展~方恧作为串控制器的SCSI适配器在主机板上PCI插槽范围内可以增加,在普通的Pc机板上就可以达到6串;另一方面每个SCSI适配器SYM53C875可以连接多达lj个SCS[磁盘,这样单台阵列的容量就是相当可观的,而且我们还可以将图中的SCSI磁盘换成阵列,这样容量又可以翻几翻:o”糠

华中科技大学硕士学位论文2.易维护、升级我们使用的都是计算机市场上通用的计算机部件,出现问题可以及时修复更换,而且随着这些部件的更新换代阵列的性能也会随着提高;3.价格便宜这种集成的方式构成的阵列比同等级的专用板卡阵列一股来说要便宜很多;4.开发周期短和开发专用板卡方式的阵列相比,集成方式节省了硬件开发调试时间;在这里,阵列的主从通道都采用的是SCSI接口,从通道(连接主机)的峰值数传率可达80MB/s,主通道(连接磁盘设备)的峰值数传率达到了40MB/s,根据应用的需要,还可以对这些通道进行升级,如采用峰值数传率达160MB/s的LSl53Ci010卡:相反的,为了追求低价位,从通道可以采用USB接口,主通道用IDE接口,这样就可以满足那些容量需求不是很大,性能要求不是很高,挂接/拆卸频繁的应用需求。当然,这种结构也有其不足之处,具体表现在某些共享的功能部件由于只能在独占方式下工作而成为系统的瓶颈,如系统中的RAM,由于被CPU、主从通道所共用,而同一个时间段内只能为他们一个所访问,这样就限制了系统的并行性。这些也是我们要进一步研究改进的主要目标。2.3磁盘阵列控制软件结构2.3.1软件模块功能介绍磁盘阵列控制软件构建于pSOSystem操作系统之上,控制主、从通道实现在主机、外设间进行数据交换、存储之功能,它还负责阵列的I/0调度,Cache-Buffer管理等。为了实现这些功能,同时满足高性能的应用需求,我们对原有的阵列控制软件作了较大改进。改进后的阵列控制软件主要包括一下几个功能模块【41,421:1.阵列参数设置、初始化模块:提供一个浏览、配置阵列参数的人机交互接口,根据用户的配置设置对阵列控制软件中的相关参数进行初始化,这些参数包括阵列级别、数据分块大小、校验存放策略、阵列中的串数及盘数等,

华中科技大学硕士学位论文它们是阵列有效容量计算、逻辑地址与物理地址相互转换的依据。2.从通道控制模块:控制阵列中的从通道适配器(SYM53C895)完成主机和阵列的消息、命令、数据的交互;将来自主机的Uo命令按顺序进行排队以等待命令分解模块和其他模块处理。3.命令分解,数据分块重组模块:根据设定的阵列参数,从从通道控制模块生成的命令队列里取出的SCSI命令按一定的规则分解为独立磁盘上的子命令,同时将读写数据进行分块重组,形成数据链,附属于相应的命令结构中。由于我们实现了数据聚/散(Scatter/Gather)技术,数据分块重组只需要对数据指针进行操作而不需要真正的数据移动。4.Cache—Buffer管理模块:该模块提供了三种可供用户根据实际应用的数据请求特点进行选择的Buffer策略,即写回策略(Write—back)、写直达策略(Write—through)、自适应的顺序预取策略。Cache-Buffer管理模块的主要目的是减少实际的磁盘I/O次数,达到快速响应用户的数据请求,从软件上最大限度地提供磁盘阵列盼性能。j.i/o调度模块:依次扫描各子命令队列.对这些子命令经过Cache-Buffer管理模块过滤后,将需要磁盘操作的子命令按优先级分组,然后按优先级从高到低逐组分派给各主通道控制模块并行地完成磁盘操作请求。该模块是整个阵列控制程序的控制核心,其他模块几乎都要和它发生交互。6.主通道控制模块:调度、控制阵列中的串控制器完成磁盘I/O操作,并且负责向上层模块报告rio完成情况和磁盘状态。7.容错功能模块:包括数据重构(Reconstruct)和磁盘数据的重建(Rebuild)修复。前者是指在阵列运行于有容错功能的级别下单盘失效时阵列降级运行,利用冗余的校验信息重新生成失效盘上的数据以响应主机的I/O请求:后者指的是在有盘失效的情况下,当系统检测到有新的磁盘被换上时,系统在后台将失效盘上的数据恢复到新盘上。2.3.2软件模块间的相互关系上节介绍的阵列控制软件7个功能模块的关系如图2.3所示:

华中科技大学硕士学位论文图2.3阵列控制软件模块关系幽阵列参数设置、初始化完成以后,进入工F常运行阶段。正常运行阶段由从通道控制块、命令分解数据分块重组、I/O调度模块形成一个环,完成主机的I/0请求。具体的,从通道控制块从主机接受命令/数据将它们排队并提交给命令分解数据分块重组模块,命令分解数据分块重组模块将命令/数据处理后提交给I/O调度模块,I/0调度模块调用Cache—Buffer管理模块和主通道控制模块完成各个子命令,在阵列运行于容错级别并且有盘失效的情况下还要调用容错模块,完成这些子命令后I/O调度模块将数据(如果有)和状态(对于非写命令)信息提交给从通道控制块,从通道控制块再将必要的数据和状态信息返回给主机,进入下一个循环。2.3.3阵列170调度流程I/O调度作为阵列控制软件的核心,它负责控制协调各功能模块的正确运行,完成主机的I/O请求任务。其流程如图2.4所示。I/0调度任务从命令队列取到主机的一个I/0请求命令以后,首先进行命令分解,派生出对各个磁盘的子命令。图中的控制是从命令分解之后开始的。对于写命令,对具有容错功能级别的阵列来说调度是相对比较复杂的,因为在准备启动磁盘进行数据写操作之前要更新容错校验信息,这一般包括读磁盘上原有的数据和校验

华中科技大学硕士学位论文信息,计算校验,写校验等过程。对于Oxl2,Oxla这一类型的获取磁盘参数信息的命令,只需要访问阵列中的一个磁盘驱动器就可以完成命令,相对比较简单。对于读类型的命令,我们采取了一种自适应的并行预取策略(在第4章有详细地介绍),首先要判断是否需要预取(即Cache是否全命中),如果不需要预取则从Cache中取数据返回给主机,如果需要预取,则需要启动磁盘进行并行预取。对于具有容错功能的阵列级别,在读写过程中如果有磁盘失败,则通过容错信息进行命令的重构(即通过校验信息生成失败盘上的数据或通过修改校验信息达到完成校验盘上数据写功能),此时阵列运行于降级模式。在控制读写完成之后,判断是否有盘失败,如果有,则检测是否有新盘换上,如有,则派生重建任务进行重建。2.4本章小节本章首先介绍了实时操作系统的一般概念与特性和常见的实时操作系统,根据高性能磁盘阵列控制软件对操作系统的要求,我们选择了pSOSystem作为我们的开发平台:然后介绍了基于pSOSystem实时操作系统的集成式高性能磁盘阵列的软硬件体系结构。在硬件上,这种磁盘阵列具有可扩展、易维护、易升级、开发周期短,价格便宜等显著特点;在软件上具有模块化结构,各模块之间接口明确,控制简单等优点。,.2舳●‰蕊

华中科技大学硕士学位论文图2.4阵列I/O调度流程

华中科技大学硕士学位论文3流水写回调度策略及实现流水线技术和Cache是提高计算机系统性能的两项重要技术a在磁盘阵列中,我们运用Cache技术来管理Buffer,因此Buffer也称为Cache。本章根据SCSI命令的执行过程,综合流水线技术和Cache技术,提出了并在磁盘阵列系统中实现了一种流水写回(Write—Back)调度策略。测试结果证明该策略对阵列的写性能有很大的提高。3.1SCSI命令执行过程SCSI(SmallComputerSystemInterface)的前身是美国ShugartAssociates公司开发的小型硬盘和软盘驱动器接口SASI(ShugartAssociatesSystemInterface),发展至今已形成SCSI.1至SCSI.3系列标准。由于SCSI协议的特性,它很适合用作磁盘阵列的通道。SCSI总线阶段(BusPhase)是总线在完成I/O操作的整个过程中的不同状态,由SCSI总线上的控制信号C/D、SEL、MSG、BSY、ATN等决定,原则上分别八种不同阶段:总线空闲(BusFree)、总线仲裁(ArbitrationPhase)、选择阶段(SelectionPhase)、再选阶段(ReselectionPhase)、命令阶段(CommandPhase)、数据阶段(Da诅Phase)、状态阶段(StatusPhase)和消息阶段(MessagePhase),其中命令、数据、状态、消息阶段又统称为信息传输阶段。每个SCSI命令执行时都要经过这几个SCSI总线阶段。SCSI总线阶段转换图如图3.1所示¨“。直接存取设备的SCS[命令主要有:FormatUnit、Read(6)、Read(t0)、ReadCapacity、Inquiry、Write(6)、Write(10)、TestUnitReady等,所有SCSI命令的正常执行都要从总线空闲到仲裁阶段,再到选择阶段或再选阶段,再到一个或多个信息传输阶段,通常以消息输入阶段结束,由此传送一个Disconnect或CommandComplete消息,然后返回总线空闲阶段。例如,在写类型命令fWrite(6),Write(10))SCRIPTS程序执行过程中,总线阶段变化过程为:空闲一选择一消息输出一命令阶段一数据输出一状态阶段一消息输入一空闲;在读类型命令(Read,ReadCapacity,Inquiry等)正常执行时,总线阶段变化为:空闲一选择一消息输出一命令

华中科技大学硕士学位论文阶段一数据输入一状态阶段一消息输入一空闲,而TestunitReady、StartStopUnit等无数据输入、输出的命令,则直接由命令阶段转换为状态阶段。图3.1scsl总线阶段转换图3.2流水写回策略的提出3.2.1流水线技术简介流水线方式是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。在计算机系统中,通常按照流水线使用的不同级别,可以把流水线分为功能部件级、处理机级和处理机间级等多种类型。计算机的这种工作方式与工厂中的生产流水线十分相似,它有如下特点阻43l:1.在流水线中处理的必须是连续的任务,只有连续不断地提供任务请求才能充分发挥流水线的效率。磁盘阵列的任务恰好满足这一条件。用户的一个文件请求对于磁盘阵列就是一系列的连续I/O任务。2.把~个任务分解为几个有联系的子任务,每个子任务由一个专门的功能部件来实现,这些专门的功能部件能够并行工作。磁盘阵列系统中CPU和主从通道均为功能部件,都能够独立的完成特定功能。3.在流水线的每个功能部件的后面都要有一个缓冲存储器,用于保存本段的执行结果。在我们的阵列系统中RAM可以用于满足此要求。

华中科技大学硕士学位论文3.2.2常规阵列控制软件处理I/0请求的缺陷根据上节介绍的SCSI命令执行过程,常规的基于图2.2的磁盘阵列处理I/O请求的过程主要有以下步骤:1.SYM53C895接收主机的一条SCSI命令并把它保存在RAM中;2.SYM53C895接收SCSI命令相应的数据(写请求);3主处理器(CPU)对l步所接收的命令进行分解,派生对应于具体磁盘的I/O子任务,对2步所收到的数据进行分块(写请求);4I/O子任务启动各个串控制器来控制磁盘进行数据读写;5如果是输入请求,则主处理器对读出的数据进行重组,然后将控制权交给SYM53C895,使其协调SCSI总线将数据上传给主机(读请求):6最后,SYM53C895回送给主机一个I/0请求完成状态;从上面的描述的处理过程可以看出,这个过程中虽然第4步中三个SYM53C875I/O处理器可以并行操作,但他们不能和主处理器、从通道控制器并行,这样就不能充分发挥系统的并行性,造成一定的资源浪费,限制了系统的性能。3.2.3常规磁盘阵列系统写回策略的不足缓存技术是解决计算机I/O设备速度不匹配问题的一种方法,磁盘阵列系统一般也采用缓存技术来提高系统性能。常规阵列系统采用写回式Buffer策略对来自主机的写请求一般的处理过程是:SYM53C895接收来自主机的命令和数据:主处理器对命令进行分解,对数据进行分块,然后判断Buffer是否命中,命中则覆盖旧数据,不命中则寻找空闲Buffer块,将数据写到写入其中,如果这时找不到空闲的Buffer区则进行Buffer腾空。从中可以看出,这种处理方法存在三个不足之处:1.不管Buffer是否命中,数据在内存中都有一次从初始位置到Buffer的移动操作,对于普通的内存,这个操作是很费时的:2.当Buffer填满时就要等待Buffer腾空之后才可以响应下一个请求,这样在Buffer很大的情况下腾空过程中就有相当长的一段时间不能响应主机请求,这是在那些实时性要求较高的应用(如实时视频流数据的采集)中所不

华中科技大学硕士学位论文允许的,但Buffer太小又难于达到提高性能的目的;3.在Buffer腾空过程中,当磁盘进行磁头寻道定位操作时主处理器、SYM53C895以及CPU、RAM都处于空闲状态,造成资源浪费;要解决这些问题,需要对这种写回策略进行改进,因此我们提出了一种流水写,回式策略,一方面提高系统资源利用率,另一方面弥补常规写回缓存策略的不足,最终达到提高阵列系统性能的目的。3.3流水写回策略的设计在磁盘阵列系统中,我们把阵列接收到主机发来的I/0请求命令到阵列处理完该请求返回正确的数据和状态信息这段时间为一个I/O周期。根据SCSI命令执行过程,在常规的非流水工作方式下阵列系统的一个I/0周期一般为:命令接收一数据接收(写命令)一命令分解处理一磁盘I/0一数据回送(读命令)一状态回送。在一个I/0周期内整个系统只为一个单一的I/0请求服务,我们称之为单一I/0服务模式。流水写回策略是将流水线技术和缓存写回策略相结合的一种阵列I/0调度策略。它引入流水线工作方式,改变了常规阵列的单一I/0服务模式,使得阵列可以同时为多个I/O请求服务。为了实现流水线技术,缓存写回策略是必须的。3.3.1流水线设计为了在阵列系统中实现流水线技术,首先要在现有硬件的基础上划分出可以并行的功能模块,然后还要考虑各模块间的通信机制。在图2.2所示的阵列硬件系统中,4个SYM53C8xx卡都带有自己的处理器,能够执行自己的Script指令,它们除了和主处理器共享RAM外,它们还带有自己的小容量的内部存储器,用于存储Script指令,这样它们就可以和主处理器(CPU)独立并行工作,为实现流水线技术提供了硬件支持,但是它们在进行数据传输的过程中需要用RAM作为缓存,而主处理器在执行指令的过程中~般离不开RAM,由于RAM的这种共用关系,又对整个系统的并行性提出了一定的限制。根据SCSI命令的执行过程,对于读类型的命令,必须经过数据返回后才进入

华中科技大学硕士学位论文状态阶段,对于磁盘阵列来说,如果读缓存不命中,就必须待磁盘操作完成,取出了需要的数据之后才能返回数据和状态,进入下一个命令周期,在这种情况下就不能实现流水线技术。对于写类型的命令,只要数据到了阵列缓存,就可以返回状态,进入下一个命令周期,而真正的磁盘操作可以滞后进行,这样正好满足流水线的要求。因此,我们设计的流水线只是针对写命令的工作方式。基于上述分析,对于写命令我们设计了如下图所示的流水线:在图3.2所示的流水线中,从通道负责不断地从主机接收命令和数据并把它们按顺序存储在缓存RAM中;主处理器负责对缓存中的命令进行分解,数据分块,同时它还负责全局调度;由主通道(PCI.SCSI适配器)负责控制磁盘的数据I/0。流7K线中的三个阶段既相互独立,又紧密相关。图3,2写命令执行流水线3.3.2写回式策略从上面的分析不难看出,要实现写命令的三级流水过程,从通道就要能够连续不断地接收从主机命令和数据,而根据SCSI命令的执行过程,在写命令的数据阶段之后必须有一个消息输入阶段才能进入下一个命令阶段。对于磁盘阵列来说在没有将数据写到磁盘上并返回正确的状态给主机之前就不会接收到下一个命令和数据,这样就不可能实现三个独立的功能部分并行工作,也就不会出现流水式的工作方式。为了实现流水线工作方式,我们采用了写回式Buffer管理策略。事实上在主通道接收到写命令和数据之后,对于这个命令而言,阵列端就可以独立的工作了,不再需要主机的干预,所以我们可以把命令、数据暂存在Buffer里并返回一个命令完成消息给主机,这样主机就可以转入下一个命令周期,而对于磁盘阵列来说实际的

华中科技大学硕士学位论文写命令并没有完成,这也就是通常所说的写回式Buffer策略。3.4流水写回策略的实现为了实现流水写回式调度策略,对应于流水线的三个阶段,我们设计三个相应的进程:1.接收/回送进程:接收主机的I/0请求命令,把它加入命令缓冲队列尾;如果是数据输出请求(写命令),则为数据分配缓存空间,以便把数据直接传输到该缓存内,减少了一次数据在内存间的移动操作,数据接收完成对于写回策略意味着操作完成,回送完成状态给主机,这样主机就可以发下一个I/O请求;如果是数据输入请求,则要等到输入数据上传完毕后再回送完成状态给主机;它对应于从通道功能模块。2.主控进程:从缓存命令队列头取出一条命令作为当前命令进行分析,如果是写命令,当队列内还有后续写命令时,则进一步判断这些命令和当前的命令是否可以合并,如果可以合并,形成~个新的当前命令,这样可以减少磁盘操作的次数:对最终的当前命令进行分解,派生对应磁盘的分命令,如果是写命令则同时对数据进行分块;它对应于主处理器功能模块。3.磁盘I/O进程:根据命令处理进程派生的分命令控制磁盘进行数据读/写:它对应于磁盘操作功能模块。这三个进程可以并行,当磁盘I/0进程还在执行上一个I/0请求时,另两个进程可以接收处理后续的请求,形成流水处理过程。其中接收/回送进程既是流水线的入口,又包括了写回策略的实现,从而成为整个流水线的关键点。3.4.1从通道功能模块实现依照流水线功能的设计要求,从通道功能模块必须要解决命令缓冲、数据缓冲地址的分配,命令队列的管理,向主机发送命令完成消息,与其他功能模块的同步等问题。为了管理命令、数据缓冲,完成命令的排队功能,定义了一个CmdQue的数据

华中科技大学硕士学位论文结构,实现按队列的方式来管理这些缓冲。由以下的定义和数据结构表示:#defineCMDNUM100//命令队列最大长度typedefstructCmdNode{unsignedcharCmdRecieve[12】;//命令缓冲区unSignedchar*DataRecieve;//数据缓冲区指针intmcmdlen;//SCSI命令长度1CmdNode"typedefstnlctCmdQue{intQhead;//命令队列头intQtail;//命令队列尾CmdNodeQcmd[CMDNUM];//队列存储区】CmdQue;在这些定义和结构中,CMDNUM是预先指定的命令队列的最大长度,其值可以根据系统资源配置情况设定,它决定了用于实现写回策略的缓存大小。医为主机在正常读写阵列上数据的时候每个命令要求存取的数据长度有一个确定的最大值(如通用操作系统Windows系列中为64KB),而且超过98%的命令数据存取长度都等于这个最大值,这样缓冲区的大小可以确定为:Sbut=最大请求长度×CMDNUM。CmdNode结构定义了命令队列中每个结点包含的数据域。CmdRecieve用于存放从主机接收到的SCSI命令,mcmdlen为SCSI命令长度。DataRecieve用于指向存放从主机接收到的数据的缓冲区,该缓冲区是预先分配好的,这样可以避免数据在内存中的移动。CmdQue结构中Qhead、Qtan分别为队列的首、尾指针,Qcmd为CmdNode结构类型的数组,用于保存命令和相关的数据指针。为了能够在命令处理进程中实现命令的第一次合并而不需要数据移动,因此需要分配数据指针指向一片连续的内存区域作为缓存Buffer,并将其分成大小为最大请求长度的相等的块,每个指针指向一个块首,形成如下图3.3所示的缓冲结构:

华中科技大学硕士学位论文DataRecieveQmdOIDataRecieve8AM一,’QmdQmd}、●rL’2DataReciewl堋圈鼯荨习/DataRecieveQcmd[N-1】DataRecieve图3.3命令队列缓冲结构图利用这个命令队列,接收/回送进程就可以很容易地完成命令、数据的接收和管理工作。接收/回送进程工作流程如图3.4所示。在初始化命令队列结构过程中完成缓存空间的分配并创建图3.3所示结构的队列。当主机读写命令达到时会产生一个硬件中断通知该进程停止等待而进入命令接收阶段。对于收到的命令,分写命令和非写命令(主要是读命令)两种情况进行处理:对于写命令我们采用流水方式处理,即收到数据后返回状态给主机,将命令和数据一起放入命令队列,进入下一个命令周期;对于非写类型的命令,由于要返回数据给主机,在没有准备好数据之前不能进入下一个命令周期,所以必须等待该命令处理完毕准备好数据后才能返回数据和状态给主机。这里采用了一个队列资源信号量来完成与主控进程的同步,每当完成一个命令的接收就使信号量资源加~,构成一个“生产者一消费者”模型。3.4.2主控进程功能实现主控进程主要完成的是命令分解、数据分块/重组、磁盘FO子任务的派生及调度等

华中科技大学硕士学位论文图34接收/回送进程流程图功能,在文献[40,4l】中有比较详细地介绍。这罩主要研究与实现流水线和提供阵列32簸

华中科技大学硕士学位论文性能相关的新增功能,包括它与接收/回送进程的交互和同步、写命令的第一次合并等。1.同步主控进程要从命令队列取出命令和数据,首先要访问该队列的资源信号量,访问成功就将队列头结点取出处理并调整队列头指针。对于读类型的命令,主控进程在收到磁盘I/O进程返回的数据并把它们重组后提交给接收/回送进程,同时还发出一个数据准备完成消息给接收/回送进程。2.写命令第一次合并合并I/0操作(Combination//0Operation)亦称贪婪读写(GreedRead/Write)是基于减少I/O次数以达到降低I/O服务时间提出的,它的基本思想是将几个请求地址连续的相同类型的命令合并为一个该类型的命令,其请求长度是被合并的几个请求长度之和…。在文献[41】中详细地介绍了命令分解过程中的I/O合并,这里称之为第二次I/O合并。因为在命令分解之前,在命令队列里就可以进行写命令的工/O合并,称为写命令第一次合并。它的思想是依次扫描命令队列中相邻的写命令,如果它们的请求地址连续并且请求长度等于最大请求长度(正好等于缓存分块的大小),那么这些命令所要写的数据在缓存中也是连续的,这样就可以将这些相邻的命令合并而不需要数据移动。在RAID0级的情况下,主机的一个I/O请求经过第二次I/O合并后每个磁盘上最多只有一个I/O请求,设阵列中磁盘数为n,第一次合并的写命令数为L,则正常情况下经过第一次合并后的磁盘I/O次数减少了"×(三一1)次,在RAID5级的情况下减少的磁盘I/O次数达2n×(L一1)次,同时系统中进程上下文的切换次数也减少了。可见第一次I/O合并在几乎不增加系统开销的情况下极大地提高了系统性能。3.4.3磁盘I/O进程功能实现磁盘I/0进程功能相对比较简单,主要是向磁盘驱动器发出读写命令,等待磁盘完成读写命令,判断读写状态,最后把数据和状态一起提交给主控进程。其基本流程如下:1.根据命令分解过程派生到该磁盘驱动器上的分命令填写磁盘读写命令结构,33

华中科技大学硕士学位论文包括SCSI命令、SCSI命令长度、命令请求数据长度等;2.如果是写命令,为写命令构造数据“聚/散”指针链表;3.启动主通道适配器控制磁盘I/O:4.检查I/O状态,如果有错,则置出错标志,以便容错模块完成错误恢复;5.置I/O完成标志:6.检查所有磁盘i/o完成标志,如果所有I/O均完成,则通知主控进程进行善后女^理。3.5测试为了检验流水写回策略对阵列IlO性能影响,我们分别对采用了流水写回策略和常规的写策略的阵列进行了写性能的测试。3.5.I测试环境测试环境要求一台主机和一台磁盘阵列机,我们用普通的CPU为PIIl866的PC机作为主机,配有128MB内存,另加~块SYM53C895PCI—SCSI适配器用于连接磁盘阵列,其最大传输率为80MB/s。磁盘阵列机采用普通华硕主板外加三块SYM53C875PCI—SCSI适配器作为主通道控制器用于连接磁盘,一块SYM53C895PCI—SCSI适配器作为从通道适配器用于和主机连接,128MB内存,CPU为IntelCeleron700。磁盘阵列机配带3块10000r/m的型号为SEAGATESTl73404LC的SCSI磁盘。阵列设置为0级,分块大小为22KB,阵列中磁盘串数为3,每串磁盘数为l。3.5.2测试工具我们采用Intel公司发布的通用的计算机I/0系统性能测试工具一lometer。lometer测试程序主要有I/o负载发生器(产生并执行I/O任务以使系统达到满负荷运行)和测试器(测试并记录系统I/O性能以及I/o对系统的影响)。它提供图形界面用户接口,用户可以配置I/O负载来模拟应用程序或Benchmark所产生的负载,而且它还可以产生混合负载,以达到综合测试系统性能的目的。lometer可以用于测试:磁盘性能和网络适配器、总线的带宽和延迟性能、网络吞吐率、共享总

华中科技大学硕士学位论文线性能、系统级硬盘性能、系统级网络性能等。3.5.3测试说明这里我们主要是侧重于对写性能的测试,因为流水写回策略对读性能没有影响。对于顺序写、随机写的不同比例关系,我们都进行了测试。对完全顺序写的负载情况下,我们还采用了限制第一次I/O合并次数的方法特别测试了“第一次I/O合并”对性能的影响。3.5.4测试结果表3.1记录了在顺序写请求的情况下,限制最大的“第一次I/O合并”数为不同的值的情况下测试的结果(其中的I/0请求大小为64KB):表3l不同命令合并投的测试结果\测试\趣目流水写同策略平均响应时间(ms)\数传率(MB/s1最大合并数\12263562.46832.4203423.7025.3I25.8026.103.3947表3.2记录了分别对采用流水写回策略和非流水写回策略的阵列0级的写性能用lometer在Windows2000环境下测试的结果(其中的I/O请求大小为64l(B):3.6性能分析响应时间是系统对某个给定的输入做出反应所需要的时间。磁盘阵列相对于主机来说是一个IlO设备,所以我们关心的也就是其I/o响应时间。对于磁盘阵列来说,I/O响应时间是指主机发出工/0请求到主机收至qI/O完成状态所需要的时间。在我们的集成式多串scs!控制器组成的RAID系统中,110响应时间由排队等待时间和I/O服务时间两部分组成。35

华中科技大学硕士学位论文表3.2两种策略对写请求的测试结果\\策略\流水写回策略常规策略\平均响应时间数传率平均响应时间数传率顺序百分比(ms)fMB/s)fms)(MB/s)0%2.958021154.149815.0210%289792l545098712.2620%3189219.894709213.1230%3.406418.124.438014.0740%3.397618464160114.9850%3294218.933.913l15.9660962.963521.023.647017.1370%2.667223.【83.476817.9580%2.601323.553.2753190790%2.459125.4l3.113620.04100%2.394926093031220.58设主机I/O请求按泊松分布到达,请求到达率为^,每个I/O请求的平均比I服务时间为乙,,那么根据M/G/I排队模型,平均等待时间f,:Tw=(20"2+五‰,2)/20—2T,。),其中。是k,的方差135】。可见排队等待时间随I,0服务时间的增大而增大,I/O响应时间主要取决于f/O服务时间。所以这里我们主要讨论I/ON务时间。3.6.1“第一次I/O合并”性能分析从表3.1记录的结果可以看出,结果s/0合并,对磁盘阵列的写性能有明显的提高,因为每经过一个I/o合并,系统启动磁盘的次数将减少(2-1)×3=3次,以此类推,合并的命令数越多对性能的提高将是越显著的。图3.5反应了这种性能提高趋势:

华中科技大学硕士学位论文∞与拍∞一巧‘簿号船互/H■“箬;o∞业■/7//.-//中/——一一…一最大命令合并数图3.5命令合并数与写性能对比趋势图图中最大命令合并数为1时表示没有命令合并的情况。当合并数增加到2时(表示最多只进行了一次合并),阵列的顺序写性能有了显著的提高,以后随着合并次数的增加,阵列的写性能也随之提升。我们假设阵列中3个磁盘的负载是均衡的(如果不均衡也可以通过改变分块大小使之均衡),而这3个盘又可以并行操作,所以当一个盘的I/O读写完成我们即可认为I/O完成。设磁盘平均定位时间为T。(包括平均寻道时间和平均旋转延迟),磁盘的数据传输时间为T,=b/rN,其中b为请求长度,r为磁盘旋转速度,N为一个磁道中的字节数。因此,磁盘阵列对主机的平均I/0服务时间T。:T。:z+旦rN则在合并了L条命令的情况下平均服务时间T:,:至+上Lrh所以阵列的顺序写数传率S与命令合并数L的函数关系可表示为:sr£)'!丝rNT,+厶,S(L)对L求一次导数得S。(£):

华中科技大学硕士学位论文s’(三)=丽br丽2N3.5)也反应了这一结论。3.6.2流水写回策略性能分析2TV因此,可以得出结论:阵列的顺序写性能随着合并的命令数增加而增加,但这种增加趋势随着合并数的增加而减小。从我们实际测得的结果作出的趋势图(图采用了流水写回策略的阵列比常规的阵列系统并行度提高了,性能提高也是必然的。图3.6是根据我们在完全顺序写的情况下的一组测试结果对比:图3.6两种不同策略性能对比图从图中可以看出,对于顺序写采用了流水写回策略的阵列比常规阵列的写数传率平均提高了近6MB/s。但实际的应用中并不能保证主机I/O请求的顺序性,然而我们的测试工具Iometcr提供了模拟实际应用的功能,在使用Iometer进行磁盘测试的时候可以方便的设置主机I/0请求的特性。根据我们对不同顺序性的I/O请求的测试结果,我们作出了两种策略下随着请求顺序性的不同阵列性能变化趋势图(图3.7)。从该图中可以看出:1.不论什么情况下,{/0性能随着请求ⅢⅢ序性增加而增加:2.流水写回策略的性能总是比常规策略的性能好;

华中科技大学硕士学位论文3.在请求顺序性低于30%的情况下4.在请求顺序性超过60%的情况下逐渐增大。流水写回策略的性能优势更加明显;流水写回策略和常规策略的性能差距又262422盖20三燮,e鼎161412406080100顺序写百分比(oi)图3.7阵列性能随请求特性变化趋势图对于主机的写请求,I/O服务时间主要包括命令与数据接收时间耳、命令分解数据分块时间死、磁盘I/O时间乃三部分。图3.8(1)是常规RAID系统响应主机输出请求的I/Oa昆务时序图。常规RAID系统响应主机输出请求过程中命令与数据接收、命令分解数据分块、磁盘!dO是串行操作的,所以常规RAID系统响应主机输出请求的I/0服务时间R,:艮r=L+乃十Ta图3.8(2)是采用流水写回式策略的RAID系统1iON务时序图,它和常规的流水线时序图相比有一个最大的特点就是由于写回技术中的I/O合并,即把命令缓冲中几个请求地址连续的SCSI命令合并成一个请求长度较大的命令,这样就可以做到几个请求只做一次处理。在没有合并命令的情况下.UO服务时间瓦∥L。,=n+品+n—t’(其中t’是流水线重叠时间)

华中科技大学硕士学位论文I/O序号时间常规I/O服务时序图I/O序号▲_i》一.一_÷I—÷一!l—哼I—’:一卜…》巴.三:二:三一——一——+时间(2)流水写回I/O服务时序图图3.8I/O服务时序图设平均合并的命令数为N,每个命令的请求数据长度都相等,N个命令合并后形成的新命令的命令分解和数据分块时间为瓦’,磁盘I/O时间为乃’,则主机输出请求的I/O平均服务时间zo’:兀。,t:L+—Tp'+l—S'-t'.V磁盘I/O时间乃可以分为磁头定位时间玩,和数据传输时间丁;。两部分。定位磊

华中科技大学硕士学位论文时间与磁头当前位置和请求访问位置有关,传输时间与请求数据长度成正比,与磁盘的传输带宽成反比。在实现了聚/散(scatter/gather)功能以后,N个命令合并后形成的新命令的和单独的一条命令的命令分解和数据分块时间相差不大,其差值可以忽略。所以:乃’=乃+(N一1)兀一昂’=昂在理想的情况下,流水线重叠时间f’和磁盘定位时间ro相等:ftz匆,则孔卢n+Z埘+n删+nm『、。,·:n+n。+卫Ⅳ对于磁盘FO操作.磁头定位时IN,Pgx,]-较长,而在随机读写时磁盘的定位时间相对于顺序读写就更长,减少定位时间可以显著改善系统性能。而流水写回式策略恰好隐藏了磁头定位时间,所以极大的提高了PAIl2)系统性能。这也说明了为什么在随机写比例很高的情况下流水写回策略对性能的提高更显著。3.7本章小节本章在介绍SCSI接口和SCS[命令执行过程的基础上,根据SCSI命令的执行过程,结合计算机中常用的流水线技术和缓存技术,提出了一种新的RAID写策略——流水写回策略。根据我们阵列现有的软件特性,在基于pSOSystem的磁盘阵列控制软件中实现了流水写回策略,在实现中我们还提出了“第一次I/O合并”技术,并且经过测试验证,结果证明该策略能够缩短阵列对写请求的服务时间,数据传输率提高了近30%,有效地改善了阵列的写性能。经过分析,得出以下结论:1.常规阵列系统没有充分挖掘系统现有资源的潜力,造成资源闲置,系统并行度不高,从而影响了系统性能;2.常规的缓存写回技术需要数据在内存中的移动操作,在缓存腾空过程中还会造成用户的I/O响应延时增大;3.“第一次FO合并”技术通过减少磁盘操作次数来减少平均I/O服务时间,阵列的写性能随着合并的命令数增加而提高,这种提高的趋势则随着合并的

华中科技大学硕士学位论文命令数的增加而减小;4.流水写回策略充分利用了系统资源,提高了系统并行性,写回队列技术避免了数据移动,流水技术消除了腾空等待延时,隐藏了磁头定位时间。

华中科技大学硕士学位论文4磁盘阵列系统中的预取技术及实现预取技术是在计算机系统设计中为提高系统性能而通常采用的一项重要技术。在磁盘阵列系统中采用有效的预取技术可以缩短主机读请求的平均响应时间,提高阵列的数据吞吐率。本章在研究了一些主要应用模型的数据请求特性的基础上,提,出并实现了一种自适应的预取算法,实验证明该预取技术对主机的连续大量数据读请求是十分有效的。4.1磁盘阵列中的Cache技术Cache技术是利用存取局部性原理,解决计算机系统中功能部件或模块间速度不匹配的关键技术[231。在一个计算机系统中,不同层次有不同的Cache[24I,处理机(CPU)中的Cache,一般包括指令Cache和数据Cache;主机适配器中的Cache;设备控制器中的Cache;嵌入设备控制器中的Cache,磁盘驱动器Cache;主机内的文件系统Cache,又称文件缓冲(Buffer)。与处理机的硬件Cache不同,外围设备I/0路径上的Cache面临的数据量更大,而后备存储器延时更长,一般由软件实现和管理。Cache的性能取决于其参数和管理技术,主要包括Cache地址映射方法与Cache替换策略。在磁盘阵列系统中,我们用Cache策略来管理Buffer,它对主机是透明的,因此,这种Buffer也称为磁盘阵列系统的Cache。4.1.1Cache地址映射地址映射方式决定着数据存放在Cache的什么地方的问题。它直接影响着Cache的命中率和性能。具体的,在磁盘阵列的Cache中,地址映射就是把磁盘地址空间映射到内存(RAM)地址空间,把从磁盘中驭出的数据按照某种规则存入RAM中,并建立磁盘地址与内存地址之间的对应关系。一般常用的Cache地址映射有3种:全相联(Fullassociative),直接相联(Directmapped),组相联(Setassociative)[22l。在我们的磁盘阵列系统中采用的是~种变化了的组相连映射方式。在这种映射方式中,用一定容量的RAM作为一组磁盘的Cache,由于这组磁盘被管理映射为~个逻辑上的大磁盘,破坏了原有磁盘的物理、逻辑均连续的特性,使每个磁盘的物理上连续的空间在逻辑上不再连续,为了保持|1

华中科技大学硕士学位论文的效率,我们没有遵循逻辑上连续的要求,而是按照磁盘的物理空间来分派Cachea具体的,我们把cache分组,每个物理磁盘对应一组Cache,构成全局上的组相联的地址映射方式。在组内,还可以进一步采用3种Cache地址映射方式,构成如下图4.1所示的映射关系图:嚏噍组啦GGC图4.1阵列Cache地址映射图图中Cache的组数正好和磁盘阵列中的盘数相等,Cache行的大小和阵列中的数据分块大小一致,物理上独立的每个磁盘从逻辑上正好对应于一个Cache组,这样在组内就可以和通常的组相联一样采用全相联,也可以实现组相联和直接相联。这种设计有如下几点好处:1.Cache组数和磁盘数对应,Cache行大小等于阵列数据分块大小,避免了很多数据分解移动工作,方便管理;2.每个Cache组对应一个物理磁盘,有利于在组内再实现不同的地址映射方式÷提高Cache命中率;3.每个磁盘对应的Cache在物理上是连续的,便于实现预取技术;4.在实现写回策略时方便数据合并,减少磁盘I/O次数,提高了Cache一致性

华中科技大学硕士学位论文的管理效率。4.1.2Cache替换策略Cache替换策略是决定Cache效率的另一个关键因素。好的替换策略能极大的发挥Cache的效用.提高系统性能,而不当的替换策略,如某种策略经常导致抖动,则不仅不会提高系统性能,反而会降低系统性能。常见的Cache替换算法有随机算法(Randomalgorithm,RAND),先进先出算法(First.infirst.outalgorithm,FIFO),近期最少使用算法(Leastfrequentlyusedalgorithm,LFU),最久没使用算法(LeastrecentlyusedalBodthm,LRU)和最优替换算法(Optimalreplacemantalgorithm.OPT)等5种。其中最优替换算法是一种理想的替换算法,通常用来衡量其他替换算法的优劣。如果哪一种替换算法的命中率与最优替换算法最接近,那么它就是一种比较好的替换算法。在磁盘阵列系统中,由于一组磁盘操作具有并行性,比较有效的替换算法是纵横LRU替换算法㈤。在磁盘阵列中,数据除了有Cache组内相关性外,还具有很强的组间相关性。对于主机的大块数据请求,当第i块数据在第j个盘上时,第i+1块数据肯定在第(j+1)modN个盘上(N为磁盘总数),如果第i块数据在第j组Cache中失效,那么第i+l块数据在第(j+1)roodN组Cache中也发生失效。这也就说明了数据在物理磁盘上的横向相关性很强,因此在第j组Cache需要进行腾空替换时仅该组Cache进行处理(纵向替换),那么接着就要进行第(j+1)modN组Cache的替换腾空工作,这样就没有发挥磁盘并行的特性,导致性能较低。因此,若将这种纵向替换扩展为纵横替换,即在第j组Cache需要进行腾空替换时,除了替换该组Cache外,还同时将与该组Cache可以并行腾空替换的Cache也同时进行替换,这样就实现了Cache的并行腾空替换,具体替换算法采用LRU算法,所以称为纵横LRU替换算法。4.2磁盘阵列中的预取技术和Cache技术相结合的预取技术是缩短阵列对主机读请求的响应时间的重要方法。在没有预取技术的Cache管理过程中,只有在请求数据在Cache中缺失时才从

华中科技大学硕士学位论文后备存储器中取数据并存入Cache中,称为被动Cache技术,常用的LRU,FIFO技术都属于这一类。由于程序的执行及其访问的数据均具有局部性,有些应用还具有典型的数据请求特性,例如视频数据就具有很强的顺序性,为此,在Cache管理中采用主动预取技术,可进一步提高Cache命中率。4.2.1常用预取算法目前,国内外已经有不少学者对磁盘阵列的Cache预取算法进行了研究,已采用或提出的Cache预取算法有顺序预取算法、基于磁道的预取算法和TIP算法。下面对这些算法进行扼要的介绍:1.顺序预取算法1251这种算法的基本思路是来自Cache预取算法,其策略是当读取磁盘第i簇时,将第i+1簇预读入Cache。这种算法的优点在于简单易行,是目前磁盘Cache中采用的最主要的预取算法。在主机数据请求地址连续的情况下,该预取算法具有很好的性能,但是,文件在磁盘上的存放不一定都是顺序存放,因此在访问第i簇后,下一个访问的簇往往不是第i+l簇,从而导致Cache的命中率不高。2.基于磁道的预取算法田】这种算法的基本策略是在读取磁盘的第i扇区时,把第i扇区所在的磁道甚至是柱面的所有扇区都读入Cache中。这种算法的特点是简单易行,研究表明【23】在~次磁盘存取的过程中,一次读取整道或整个柱面的数据不需要额外的寻道延迟,可以较为充分地利用磁盘带宽,提高磁盘阵列的性能。它也是目前磁盘阵列中较为广泛地采用的一种预取算法。其缺点和顺序预取算法~样,在请求不具有顺序性的情况下Cache性能较差。3.概率预测预取算法【291该算法的思想是根据过去一段时间的请求历史信息,预测下一个将要被访问的各磁盘域的概率,选取概率最大的簇读入Cache。这种算法的特点是避免了预取的盲目性,可以适当的提高命中率.但预测的准确率决定了算法的效率。4.TIP(TransparentInformedPret’etching)算法13I.321这种算法的基本思想是在虚用程序级上由应用程序对下一次要访问的数据地址提供提示,磁盘管理程序根据提示进行预取,这种算法可以大大提高Cache命中率,但在实现时要46

华中科技大学硕士学位论文对主机的操作系统作一些改动,使得应用程序的编译系统能够做到自动对应用程序将要读的下一个地址产生提示,否则其算法无法实现对应用程序员透明,对于磁盘阵列来说,还要有一种机制从主机得到这个地址信息,因此该算法还处于研究阶段,尚未得到使用。4.2.2自适应并行预取技术顺序预取和基于磁道的预取算法都是一种盲目预取,在请求地址完全不连续的情况下,预取数据基本失效,预取就成了额外的开销,这样不仅不会提高性能,反而使性能降低很多。概率预测预取算法中预测技术很难得实现。为此,我们提出了一种基于顺序的自适应并行预取算法。该算法在顺序贪婪预取算法的基础上,实时统计Cache命中率,根据统计的结果,决定下一次预取的长度,当命中率很高时就增加预取长度,以达到很高的读性能,当命中率较低的时候就适当地减少预取长度直到不作预取,这样既实现了顺序读时的高性能,又保证了原有的随机读的性能。由于阵列中Cache组间数据的强相关性,所以自适应并行预取技术也借鉴了纵横LRU替换算法的思想,当某一组Cache不命中时,除了对该组Cache对应的磁盘进行预取外,还对阵列中所有其他数据盘进行并行预取,这样所有Cache组的数据组合就成为用户所看到的大逻辑盘的一个滑动窗口(如图4.2所示),随着请求的变化这个窗口在逻辑盘上滑动。设阵列中有效磁盘数为N,一次在单个磁盘上的预取长度为L(包括当前请求数据长度),从单个磁盘读出L长度的数据的时间开销为T,在进行多个磁盘并行操作时磁盘启动间隔为At,则:如果在预取过程中没有采取并行技术,即通常的被动预取,在最坏情况下(各个磁盘轮流预取),实现一次窗口滑动的时间开销为:扛NXT,在最好情况下时间开销为:r=T+(N一1)×At,在多数情况下的时间开销介于二者之间。如果采用了并行预取技术的情况下,实现一次窗口滑动的时间开销为:f=T+fⅣ一1)×At。进行一次磁盘操作的平均时间~般为几个毫秒.而实时系统进行一次上下文切换的所花时间是微秒级的,即T)>△t,由此可见并行预取比没有并行的被动预取的J7

华中科技大学硕士学位论文性能要优越很多。顺序贪婪预取算法中影响性能的一个重要参数是预取长度,预取长度和性能往往就是一对矛盾。在自适应并行预取算法中,则较好的解决了这一矛盾。在自适应并行预取算法中,把理想的完全顺序性请求情况下Cache的命中次数作为标准,当作为磁盘窗口的Cache滑动到某一位置时,根据该窗IZI的大小,就可以计算出理想情况下Cache的命中次数儡,在窗口滑动之前,统计出Cache命中次数Ho这样就可以得到Cache命中率P:P=日/琢。定义命中率的函数/㈣。设当前窗口长度为£。,,滑动后的长度为£。r,则:L。。=Lc,,r×,(P),如果L。。f>MaxCacheSize,则L,mt=MaxCacheSizea其中/}彤函数具有特性:,酬是P的增函数,且当P>O5时,/¨PJ>,,当P<O5时,删<J。这样,当Cache命中率较高时,窗口不断增大,直到达到系统允许的最大值(MaxCacheSize):当Cache命中率较低的时候,窗口大小不断减小,直到为0(没有预取)。\/lCacheICache2Cache3Cache4k卜呻Ii上滑动DIsk2Disic3Disk4图4.2并行预取Cache映射

华中科技大学硕士学位论文4.3自适应预取技术实现在原有阵列控制软件的基础上,保持与原有软件结构的兼容性,我们新增加了一个预取及其Cache的管理模块,这样既减少了程序的调试工作,又有利于以后的维护和升级。在实现中,在每个Cache组中不再分块,这样~个Cache组就是一个大小可变的对应与磁盘上连续若干个扇区的Cache行。4.3.1数据结构与定义为了实现自适应并行预取技术,预定义了以下一些值:#define#define#define#defineMAXPRELENGTHNEEDNONEEDEXTCACHEGROUPS2048//单盘上最大预取长度(单位://扇区)0//窗口不需要滑动1//窗口需要滑动6//Cache组数,和阵列中磁盘数//一至单盘上最大预取长度是我们根据实验得出的一个结果,它和具体的磁盘物理参数有关,一般取值为磁头数×每道的扇区数为最佳。NEEDNO表示本次主机请求Cache全命中,不需要进行窗口滑动,NEEDEXT表示请求不完全命中,窗口需要向本次请求方向滑动。为了访问、管理Cache,定义了如下的数据结构:typedefstruct{unsignedlongunsignedlongbufferlen;//记录当前Cache内有效数据长度,//(以磁盘/区为单位)Startid;//记录当前Cache内数据对于磁盘上的//起始扇区号】Cachemanage;Cachemanagecachemanager[CACHEGROUPS】;利用这个数据结构,只要将请求的磁盘地址和长度与结构中记录的值相比较,我们就可以快速的查找出当前请求的数据是否在Cache中,实现了快速查找,减少了Cache管理的开销。和Cache相关的还有两个很主要的数据结构:可pedefstruct{unsignedlonglength;blockid;unsignedunsignedlongchar+data;//数据长度//磁盘扇区号//数据指针,指向DataBuffer


本文标签: 数据 命令 磁盘 系统 任务