(计算机科学与技术专业论文)ia64+linux内核跟踪机制研究与实现.pdf_第1页
(计算机科学与技术专业论文)ia64+linux内核跟踪机制研究与实现.pdf_第2页
(计算机科学与技术专业论文)ia64+linux内核跟踪机制研究与实现.pdf_第3页
(计算机科学与技术专业论文)ia64+linux内核跟踪机制研究与实现.pdf_第4页
(计算机科学与技术专业论文)ia64+linux内核跟踪机制研究与实现.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国防科学技术大学研究生院学位论文 摘要 l i n u x 作为一种免费的源码开放操作系统,正越来越受到人们的重视,随着i n t e l i a - 6 4 架构在高端服务器市场的广泛应用,基于该架构应用的开发及移植的展开, 使得研究改善其性能问题非常重要,特别是对捕捉一定时间段内系统事件序列流, 获得关于系统活动精细细节的要求越来越高,研究内核跟踪机制势在必行。 本文深入分析了操作系统跟踪机制基本原理,研究了内核跟踪机制实现中涉及 的关键技术r e l a y f s 、d p r o b e s ,与此同时,本文重点关注了跟踪机制的探测机制、事 件定义法则及相关处理函数、数据分析等方面的研究。 在已有研究的基础上,本文提出了n 一6 4l i n t t x 内核跟踪机制l k t m ( l i n u x k e r n e lt r a c em e c h a n i s m ) 的基本框架,并对其实现过程进行了详细的阐述。该机制不 仅能够跨越固定时间段重构系统行为,为用户提供精确事件信息,而且能够利用友 好清晰的图形方式观察系统动态。然后通过性能评估,证明l k t m 运行开销低廉, 对系统性能的影响较小。 最后,本文总结了课题的研究成果,进一步阐述下一步研究工作的方向。 关键词:l i n u x ,性能分析,动态探针,跟踪 国防科学技术大学研究生院学位论文 a b s t r a c t l i n u xh a sb e c o m em o r ea n dm o r ep o p u l a rb e c a u s ei ti saf r e ea n do p e ns o u r c e o p e r a t i n gs y s t e m w i t ht h ea r c h i t e c t u r eo fi a 6 4a p p l i e dw i d e l yo nh i g h e n d ss e w e r s , a n dt h eo u t s p r e a do fa p p l i c a t i o n sd e v e l o p i n ga n dp o r t i n gb a s e do ni a 一6 4 ,p e o p l e n o w a d a y sh a v ea l li n c r e a s i n gd e m a n do np e r f o r m a n c ei m p r o v e m e n t i tl e a d st om u c h r e s e a r c hi nt h ed e v e l o p m e n to ft o o l su s e dt oi m p r o v et h ep e r f o r m a n c eo fo s i ti s i m p o r t a n tt oc a p t u r ee v e n t ss t r e a ma n da t t a i n d e t a i l sa b o u ts y s t e ma c t i v i t y s o ,t h e r e s e a r c ho fk e r n e lt r a c em e c h a n i s mi si m p e r a t i v eu n d e rt h es i t u a t i o n i nt h i sp a p e r , w ea n a l y z et h eb a s i cp r i n c i p l eo fo p e r a t i n gs y s t e mt r a c em e c h a n i s m a n ds t u d yr e l a t e dk e yt e c h n o l o g yo fi m p l e m e n t a t i o n w ea l s of o c u so ns o m ei m p o r t a n t f a c t o r s ,s u c ha st h ep r o b em e c h a n i s mo ft r a c e ,e v e n t sd e f i n i t i o na n di t sf u n c t i o n ,d a t a a n a l y s i s t h i sp a p e rp r e s e n t sab a s ef r a m eo fk e r n e lt r a c em e c h a n i s mo fi a 一6 4l i n u xb a s e d o nc u r r e n tr e s e a r c ha n dd e s c r i b e si t si m p l e m e n t a t i o ni nd e t a i l l k t mp r o v i d e si t su s e r w i t ha l lt h ee x a c ti n f o r m a t i o nw h i c hi sr e q u i r e dt or e c o n s t r u c tas y s t e m sb e h a v i o rd u r i n g ac e r t a i np e r i o do ft i m e a n di ta l s oo f f e r sac o n v e n i e n tg r a p h i c a ld i s p l a ya n da n a l y s i s t o o lw i t hw h i c hu s e r sc a l lk n o we x a c t l yt h ed y n a m i cb e h a v i o ro fas y s t e m ,f u r t h e r m o r e , w ea n a l y z ei t sp e r f o r m a n c e t h er e s u l ts h o w st h a tl k t mi s s t i l lal o wo v e r h e a d m o n i t o r i n gt o o t i th a sl i t t l ee f f e c to ns y s t e mp e r f o r m a n c e f i n a l ly ,w es u m m a r i z eo u rm a i nw o r k sa n di n t r o d u c eo u rr e s e a r c hw o r k si nt h e f u t u r e k e y w o r d s :l i n u x ,p e r f o r m a n c ea n a l y s i s ,d p r o b e s ,t r a c e n 雪堕坠兰茎銮奎兰至塞兰壁兰垒鎏兰 图目录 i a - 6 4i 抽u 】【内核概览。1 0 l 1 r 基本结构1 2 l k t m 总体结构1 5 u ( t m 各组件交互过程1 6 l k t m 综合探测结构1 8 中断处理跟踪数据结构和跟踪宏2 0 头部信息数据结构 l k t ma l i g nu p 宏定义。 2 1 2 1 积木式动态探针结构组成2 3 k p r o b e 数据结构。2 4 m p r o b e 数据结构。2 4 探针插入流程一2 5 探针处理流程2 6 r c 】a v f s 结构2 8 无锁机制记录日志过程图解3 0 缓冲分布3 1 t r a c e _ s t r u c t 数据结构3 2 r e l a y 趣通道记录事1 串实现3 3 l k t m _ l o g _ e v e n t 0 跟踪函数流程3 3 l k t m _ i o c t l 0 函数流程3 4 d p r o b e 接口结构3 5 i o c t l 0 函数定义,3 8 数据分析流程3 9 事件交互图4 0 进程分折4 0 原始跟踪数据一4 0 面向连接的s o c k e t 工作漆程4 2 在线守护进程实现模型4 2 进程交互图形4 4 进程原始事件列表,4 4 进程性能分析4 5 系统整体性能分析4 5 ik 孙d 应用补丁开销评估4 8 u c 讧允许跟踪开销评估4 8 u ( n i 写入磁盘开销评估4 9 进程切换开销比较( 一) 4 9 2 3 4 5 6 7 0 9加儿j蝤佰仃堪d扎丝抖笛拍凹勰凹如儿强鲥努弘图眦配卧匿图图图图图图图图图图固图图图圈图图圉图图图图图图图图图图图图咽 篁堕墼兰苎当盔兰譬耋兰墼兰堡鎏三 图3 7 进程切换开销比较( 二) 。5 0 图3 8 四种配置打开,关闭文件开销比较,5 0 垦塑垒兰丝垄查耋玺耋圭堡主丝垫兰 表目录 表1 t f i l l i a n 项目成员及主要贡献8 表2 i a 一6 4 数据模型,9 表3 1 a - 6 4 i a - 3 2l i n u x 关键属性对比,1 0 表4i a 一6 4l i n u x 虚地址空间1 1 表5 内核静态探测跟踪事件歹n 表1 9 表6l k t mi o c t l 0 函数定义3 4 表7刨建事件函数3 5 表8 记录事件函数3 6 表9删除事件函数3 6 表1 0 跟踪代码枚举类型3 8 表1 l 运行命令测试结果一4 7 表1 2l m b e n c h 处理器、进程相关测试结果。4 7 表1 3l m b e n c h 进程切换测试结果4 7 独创性声明 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特剔加以标注和致谢曲地方外,论文中不包含 其他人已经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示谢意。 学位论文题目:! 叁= ! 坠i 望坚凼捷退壁狃剑班窥生塞爨 学位论文作者签名:醢函邀日期:尹年仔月膨日 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留、使用学位论文的规定。本人授权 国防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子 文档,允许论文被查阅和借阔;可以将学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密学位论文在解密后适用本授权书。) 学位论文题目:! 垒= ! 垦i 婴! 由趑堡照狃剑盟究生塞塑 学位论文作者签名: 作者指导教师签名: 区巫邀 亥勉位 日期:沙d 牛年二月多日 日期:刎年,乙月肛日 国防科学技术大学研究生院学位论文 第一章绪论 1 1 课题研究背景 分析操作系统性能对于提高管理计算机硬件资源、逻辑资源效率,方便用户使 用资源以及改善性能提供了重要依据,而仅仅通过操作系统本身提供的工具分柝其 性能,很难满足用户的需求,因此国内外很多团体都正致力于研究操作系统性能分 析技术,寻找能够精确刻画系统行为、反应系统执行情况的方法。近来,l i n u x 操 作系统无论在市场份额还是在用户的认可程度上,都已经进入主流平台的领域,在 全球很多关键领域的应用已经得到普及。根据权威机构报告,它已经成为全球第二 大操作系统,在服务器市场上,l i n u x 在未来几年内将以每年2 5 的速度增长,中 国的l i n u x 市场更将保持4 0 左右的增长速度。随着i n t e li a 6 4 架构的推出和在高 端服务器市场的应用,i n t e l 性能方面的优势私r r 业界的地位将使得l i n u x 借n 一6 4 的东风进一步占领高端和企业级用户市场。n 6 4 架构的先进性毋庸置疑,但它面 临着缺乏应用开发的尴尬境地,如果希望大规模普及,则基于i 站6 4i a n u x 开发相 应的软件应用至关重要,改善n 一6 4l i n u x 的性能迫在眉睫,迫切需要对n 6 4l i n u x 的性能分析技术进行研究。目前,基于i a 6 4 的l i u x 性能研究还处于起步阶段, 各种相关技术还不是很成熟,本课题的研究,将在该领域进行一定的技术探索,为 m 6 4l i n u x 的性能分析提供有力的借鉴。 能否调谐系统运转达到更好性能,关键是理解系统的行为,能够通过量化分析 找出影响系统性能的瓶颈。做到这一点,除了需要对l i n u x 内核组件有广泛的理解 之外,还必须利用专门的跟踪机制,深入理解造成瓶颈的l i n u x 内核源代码。目前 l i n u xr a s 计划 1 和一些研究机构正在这方面着手进行研究,实现了一些机制,使 得用户能够运用它们测试、调试、改善系统性能。l i n u xr a s 研究小组还试图建立 业界支持实现r a s 的标准,为其能进入l i n u x 内核作出努力。但是,其中许多研究 项目都只是针对原有的i a - 3 2 体系结构设计和实现,缺乏对基于i a - 6 4 架构进行深 入研究。因此本项目立足于研究i a - 6 4l i n u x 下开销低廉、对系统性能影响较小、 为各种情况提供详尽信息的跟踪机制,希望以此为契机,能够更加有效的发挥i a - 6 4 l i n u x 的优势。 另外,计算机学院承担的8 6 3 项目“服务器操作系统内核”需要完善的内核跟 踪机带协助内核开发,而且另外两项工程也确定使用i n t e l 的i t a n i u m 2 微处理器。因 此设计出合理的n 一6 4l i n u x 内核跟踪机制,对于解决这些实际工程的性能问题、 程序调试也有着重要的意义。 1 2l i n u x 性能研究技术 l i n u x 体系开放,开发团队人员分散,支持的软件和硬件越来越多,内核发展 越来越迅速,如何及时发现内核存在的性能瓶颈,保证它的可靠性、可用性、稳定 性、健壮性、易用性等等是性能技术研究的关键问题。性能方面的研究技术范围广 第1 页 国防科学技术大学研究生院学位论文 泛,大致分为三种:测试技术、调试技术和数据采集技术。 1 2 1 内核测试技术 内核测试是利用测试机制迅速检测故障原因及位景,例如s g i 、i b m 、o s d l 、 b u l l 和w i p r ot e c h n o l o g i e s 合作的l i n u xt e s te r o j e c t ( l t p ) 2 1 项目,它是开放源代 码团体提供测试l i n u x 内核与相关组件的工具集合。通过自动化的内核测试,检测 l i n u x 的可靠性、健壮性和稳定性,帮助改进l i n u x 内核。当前,l t p 套件中包 含2 0 0 0 多个测试用例,涵盖了内核的大多数接口,如系统调用、内存、i p c 、i o 、 文件系统和网络等。测试套件每月都会更新发布,支持多种体系结构,目前公布l t p 测试套件测试结果的体系结构就有1 1 种: i 3 8 6 、i 缸6 4 、p o w e r p c 、p o w e r p c6 4 、 s 3 9 0 、s 3 9 0 x ( 6 4 b i t ) 、m i p s 、m i p s e l 、c r i s 、a m do p t e r o n 等。 1 2 2 内核调试技术 内核调试是利用调试机制方便快捷的对故障进行调试,例如k e r n e ls o u r c el e v e l d e b u g g e r ( k g d b ) 【1 0 】调试工具,它是使用串行连接的l i n u x 内核远程g d b 调试 机制。使用k g d b 需要两台机器:一台是开发机器,另一台是测试机器。需要调试 的内核在测试机器上运行,g d b 在开发机器上运行,两台机器通过串行线进行通信。 用户可以深入到内核中,设置断点、检查数据并进行其它操作( 类似于在应用程序 上使用g d b 的方式) 。这个程序的主要特点是运行g d b 的开发机在引导过程中就 连接到测试机器,能够尽早开始调试。 1 2 3内核数据采集技术 内核分析是利用性能分析技术获得性能分析的详细数据,是研究跟踪机制的关 键技术,它涵盖的技术范围较广,本文将在下文中详细介绍。 1 2 3 1 采样技术 使用采样技术测量系统性能首先是周期性中断程序或者操作系统内核,获取当 前的p c 值,累计一段时间之后,通过统计分析就可以得到有关性能的精确结果,了 解程序到底在哪里花费了时间。这种性能测量方法非常简单,不需要另外增加探测 代码,而且对系统性能干扰很小。覆盖分析工具、p r o f i l e r 工具【1 1 】、c o m p a q 的p r o f i l i n g ( d c p i ) 系统、a l p h a 的m o r p h l 3 】和i n t e l 的v t u n e 1 7 1 都是操作系统级和用户级采样工 具,它们能够获得程序执行时的精确的指令数、进程需要的时间,可以在规定时间 段内进行采样,统计决定每一个函数花费的时间,分析和显示性能数据。一些 p r o f i l e r s 采用硬件性能计数器还能获取更多和标准相关的采样数据。 采样技术实现简单,但是也存在一些缺陷,它建立在中断机制的基础之上,不 精确的中断机制会导致不能正确分配指令引起的事件;而且采样量度固定,使得采 样受限于采样点,仅适合于针对某一特殊目的有限的性能分析。采样的时间标准限 制了它只能反映采样进程活跃的时间,当发生进程切换时,时间记录还有可能误记。 第2 页 国防科学技术大学研究生院学位论文 采样定时执行,需要额外访问系统定时器,频繁使用中断,开销较大。采样只能描 述统计信息,提供系统快照,无法刻画不同进程间的交互信息,不能理解和观测系 统的动态状况。 1 2 3 2 探测技术 探测技术,是将测量代码增加到源码中,通过这些探测点获得衡量系统性能的 信息。这种方法可以根据测量需求定制测量代码,安排探测点,获得广泛而精确的 性能数据,能够获得包括进程活跃、睡眠等所有状态的更加完整的时间信息。它采 集数据不依赖于中断机制,不需要周期访问定时器。但是使用探测技术需要增加探 测代码,会产生一些开销,对系统性能造成干扰。而且如果采用静态探测方法,还 存在测量集固定、操作不灵活的问题,增删探测点都要待重新编译启动内核后才有 效。 静态探测 静态探测技术通常是指直接在源代码中特定位置插入显式的跟踪代码,以生成 跟踪信息。使用这种方法进行跟踪时,需要重新编译之后再运行原程序。在内核跟 踪过程中,静态探测方式首先将跟踪补丁应用于内核源码,然后重新配置编译内核 才能启用,启用之后无需进行其它设置,跟踪立即生效,运行效率很高。o p e r s y s 公司和l i n e o 公司合作研究的l i n u xt r a c et o o l k i t ( l t t ) 1 4 1 、h i t a c h i 公司的l i n u x k e r n e ls t a t et r a c e r ( l k s t ) 1 6 1 以及s g i 项目l i f l u xk e r n e lc r a s hd u m p ( l k c d ) 1 7 1 都采用的是静态探测技术。 l t r 在内核中插入静态探测点,记录事件日志保存到磁盘。它通过获得的信息 重构一定时间段内的系统行为,为用户提供系统动态以及精确事件信息。l 1 t 记录 事件信息详尽,可以根据守护进程的命令选项灵活配置跟踪方式。跟踪开销低廉, 跟踪系统核心事件时开销小于2 5 。 l k s t 通过静态探测为内核编程人员提供所需的调试信息,而且扩展了这些调 试信息的可用性。通常情况下它只记录基本事件,以避免不相关组件的开销,一旦 处理程序检测到不正常的进程,即刻通知用户进程,并可根据用户要求改变记录事 件掩码,获得更多的信息。使用这种机制时并不需要停用一些重要服务。 l k c d 是检测、保存、测试系统故障的可靠方法,当系统由于软件故障崩溃时, 它保存内核存储映象:当系统重启后,它恢复内核存储映象。它在内核中增加代码 完成故障转储、分析内存存储映象的工作。内存映象保存在转储设备中,一旦系统 启动备份,在交换分区加载之前,转储由l k c d 用户级应用程序恢复,生成的报告 保存在v a r l o g d u m p 下。通过转储文件可以研究导致故障的原因,提高l i n u x 的承 载能力。 从以上介绍的三个采用静态探测技术的项目中,可以看出静态探测通常是生成 永久保存的跟踪信息文件,方便利用其它数据分析工具进行统计分析。如果遇到系 统崩溃,也能根据它分析故障原因。但是,静态探测也存在一些问题,首先是增加 了代码开销和执行开销,当探测需要不断精化时,总是需要重新编译和启动,而且 第3 页 国防科学技术大学研究生院学位论文 为了避免过高的开销,不能定义过多的探测点,因此记录事件的范围受到了限制, 记录信息的全面性及详细性有所欠缺,不能完全反映系统行为。其次静态探测缺乏 灵活性,当探测需求变化时,需要重新定义探测操作,因此最好是在跟踪之前对所 需的结果和数据考虑周全,避免进行重复的配置编译内核工作。 动态探测 与静态探测不同,采用动态探测方式i 加l 对系统进行跟踪时不需要预先修改源代 码,编写被跟踪模块时无需考虑将来是否要插入动态探测点,即探测点的定义、插 入与撤除等等与模块编写过程完全无关。跟踪时,调试器采用莱种方式记录需要插 入探测点的地址以及对应该探测点所定义的处理方式,代码不作任何改动。只有被 调试程序载入内存准备执行时,才利用相关技术,动态修改代码。一些流行的动态 探测机制基于t r a p 指令,替换被t r a p 指令跟踪的指令,将控制权转移至定制的内核 处理程序,这些处理程序能够识别探测点,选择执行恰当的代码。 最早有关动态探测的研究工作是t o p s 2 0 平台上d e c d d t 调试器的内核版本 一一k d d t “j ,但是这项工作以及关于它用法的研究都没有晟终公布,只知道k d d t 和d d t 一样,主要用于条件断点和跟踪。 另外一个比较早的内核探测工具是i n f o r m e r 3 5 】,它通过在操作系统内核插入性 能探测代码对内核进行细粒度探测。但是它运行在研究平台s d s 9 4 0 上,只有3 个 寄存器机器和1 4 位地址空间;采用了指令拼接技术,在探测点后增加有关探测的指 令序列。这种方法从设计到实现都是针对特殊平台有效,不能移植到其它平台使用, 只能作为一种探测技术参考。 s o l a r i s 操作系统包含的工具l o c k s t a t 3 6 l 使用动态探测可以探测内核中的锁程序。 它利用用户程序l o c k s t a t 和内核驱动d e v f i o c k s t a t 通信,将单独的指令替换为两个变 量来探测内核。第一个变量,指定锁程序的返回指令被替换为n o p ,它将例程的返 回指令返回到在其后插入的探测代码中,探测代码返回锁例程的下半部分后结束。 第二个变量,替换分支指令的返回代码,这种方法在函数结束后探测代码还没有立 即开始时使用,实际发生在几个例程共享探测代码时。它使用的探测技术很简单, 但需要修改内核,探测代码需要预先编译进内核,而且它只能探测内核中很小的子 集,不能对内核中任意位置进行探测。 i b m 的d p r o b e s 技术【8 l 【1 8 【1 9 1 是x 8 6 平台l i n u x 上的一种粗粒度探测技术,它 最初由0 s 2 中不需要修改源代码实现动态跟踪点技术发展而来,它能够在执行代 码模块中动态插入软件探针,收集诊断信息,不需要安装用户模块就可以进行调试。 当探针未激活时,没有性能开销。探针激活时,即执行用户编写的探针处理器指令, 这些指令使得探针处理器能够访问硬件寄存器、系统数据结构和内存。采用这种技 术,可以调试一些极端的软件环境下的软件问题,例如,内核页面管理问题,其它 实验室或生产环境中无法重现的问题等。 采用动态探测方式进行内核跟踪时不需要重新编译和启动内核,也不需要开发 人员预先考虑所要获得的结果,可以在运行时刻灵活的向各种位置插入动态探测点, 获取具有针对性的详细的信息。通过相关命令可以激活或者屏蔽动态跟踪,当没有 第4 页 国防科学技术大学研究生院学位论文 显式的调用时,对系统没有性能影响。动态探测克服了静态探测的缺点,但是完全 采用动态探测机制,当激活大量的探测点时,开销较为明显,而且一旦误用动态探 测,可能导致整个系统崩溃。 1 3 内核跟踪机制 内核跟踪机制是操作系统性能研究技术的核心技术,它是一个强大的系统内部 行为观测机制。实际应用中,它采用一定的探测技术捕捉具有时间戳的系统事件序 列流,提供关于系统活动精细级别的细节,借助它,开发人员可以很容易理解什么 事件正在发生、谁对此负责、事件什么时候发生以及它们影响系统的原因和方式, 分析系统内核的执行行为,从而定位和分析内核性能问题,找出影响程序性能的瓶 颈和主要原因,决策如何改进才能获得最大收益。 在一个计算机系统中,c p u 、内存、硬盘和网络是影响系统性能的主要因素, 因此性能优化的关键在于如何在这些资源中获得某种平衡,以满足人们对系统性能 的期望。性能优化需要很多技巧、知识以及经验,其中很重要的一个方面就是分析 统计数字和图表,通过跟踪机制提供的跟踪事件日志,能够对系统资源利用率进行 正确评价。另外借助于跟踪机制中的分析工具,可以找到诸如如何确定在特定时间 段实际访问硬盘的对象;当应用程序接收到数据时,发生了什么;在一个给定的应 用程序中,u o 延迟发生在什么地方;一个特定的应用程序何时真正读盘;为什么 某些同步问题会发生等等问题的答案,反映系统动态行为。跟踪机制除了主要提供 跟踪、分析功能之外,在设计时一般考虑到尽可能降低其自身开销,从而不影响正 确分析系统性能。而且,最终的跟踪结果可以通过友好的方式与用户交互。 1 4 研究目标及主要工作 本课题的研究目标是基于i a - 6 4 架构l i n u x 操作系统,设计实现具有开销低廉、 对系统性能影响轻微、能全面提供详尽信息等特性的跟踪机制。该机制能够反映系 统动态行为,验证并找出限制i a - 6 4l i n u x 性能的瓶颈,为改善性能提供依据。 课题工作主要包括以下内容: 系统地对各种内核跟踪机制基本原理、关键技术、研究方法以及该领域最 近的研究工作进行分析和总结: 提出了适合于i a - 6 4l i n u x 内核的跟踪机制一i k r i m ( l i n u xk e r n e lt r a c e m e c h a n i s m ) 的基本框架; 基于l k t m 框架,研究内核探测的方法,完善现有的动态探测技术,以及 其他已有跟踪调试程序的接口机制; 设计实现更加完善的数据分析监测工具,支持图形化显示系统动态行为和 在线、离线使用两种方式; 对l k t m 进行功能和性能评估,分析运行l k t m 的开销,验证该机制的有 效性。 在攻读硕士学位期间,以第一作者在计算机工程与科学和计算机工程 第5 页 国防科学技术大学研究生院学位论文 n i i 暑暑j l i i i i 写;i i 暑;暑昌冒昌;高;高皇暑;写i 暑暑暑i 宣宣昌暑;i 暑e 宣昌;i 昌e i 暑暑i i i ;罱 杂志各发表文章一篇( 见本文附录) 。 1 _ 5 论文结构 本文的内容共分为七章,各章的内容安排简要描述如下: 第一章“绪论”部分,主要介绍了课题研究背景、l i n u x 性能研究现状,确定 了课题的研究目标和内容。 第二章“基于n 6 4 架构l i n u x 内核跟踪机制设计”在总结i t a n i u m 2 处理器特 点及i a - 6 4l i n u x 的特性的基础上,结合分析l t t 和k 4 2 跟踪机制的原理,根据跟 踪机制的设计要求,提出了l k t m 的总体框架。接下来豹三章详细介绍了框架中各 模块的关键技术研究和实现流程。 第三章“内核探测技术研究与实现”提出了结合动态探测和静态探测的l k t m 综合探测机制和积木式动态探针技术,并在此基础上,介绍了内核探测模块的关键 数据结构和相关函数实现。 第四章“数据收集技术研究与实现”首先介绍了支持l k t m 数据收集模块的 技术,对数据从内核空间传送到用户空间进行了详细的论述,然后完成了相关实现, 这部分是跟踪机制的核心。 第五章“内核辅助跟踪工具设计与实现”给出了内核跟踪时在用户空间运行的 守护进程和数据分析工具的设计与实现,分为在线和离线两种使用方式,这一部分 是跟踪机制和用户交互的关键部分。 第六章“l k t m 性能评估”采用两种方式对l k t m 进行了性能评测,详细分析 了运行l k t m 各个步骤所产生的性能开销。 第七章为“结束语”,在总结论文的基础上,提出了下一步的研究方向。 第6 页 国防科学技术大学研究生院学位论文 第二章基于i a - 6 4 架构l i n u x 内核跟踪机制设计 评估内核运行性能时,用户经常会碰到这样的问题:同一内核运行在不同的机 器环境下,得出的性能结果完全不同,甚至在配置较低的机器中某些性能指标反而 有所提高。问题出在哪里,性能瓶颈如何确定,如何改善提高系统性能,这些都需 要合适的内核跟踪机制协助用户理解系统运行时的性能特征。 标准i a - 6 4l i n u x 内核中并未提供跟踪机制,因此本课题的研究目标定为在 i a - 6 4l i n u x 下实现开销低廉、对系统性能影响轻微、能全面提供详尽信息的跟踪机 制。能够反映系统动态行为,验证并找出限制i a - 6 4l i n u x 性能的瓶颈,为改善性 能提供依据。本章在分析已有跟踪机制原理的基础上,根据i a - 6 4i a n u x 的特点和 跟踪机制的设计要求,提出了基于i a - 6 4 架构的内核跟踪机制一一i k i m 的总体框 架。 2 1i a 6 4 架构简介 2 1 1i a 6 4 架构特点 i a - 6 4 架构【1 4 】是一种经济高效、伸缩自如、性能卓越的6 4 位计算平台。从技术 角度看,它被认为是r i s cc p u 和大量寄存器文件的结合。认为i a - 6 4 类似于r i s c , 是由于采用了和r i s c 一致的存取模型,在操作数据之前必须将其装载到寄存器。 而与r i s c 不同的是,n 6 4 架构的主要特色是采用了e p i c ( e x p l i c i t l yp a r a l l e l i n s t r u c t i o nc o m p u t i n 曲即显式并行指令计算体系结构。在这种体系结构中,编译器从 源代码中尽量挖掘应用程序的指令级并行性,并通过生成的机器语言以显式方式指 导硬件执行程序,使得更多资源花费在实际的执行中,c p u 的运行效率获得极大提 高:认一6 4 架构具有数量更多的寄存器,它还基于功能对寄存器文件进行分类,有 专门的寄存器文件用于保存预测和分支目标地址;同时,i a - 6 4 还采用了崭新的指 令预测和推断执行技术,大大降低控制指令以及存储延迟所带来的开销,使性能得 到改善。 内在的可伸缩性 新一代处理器架构设计的主要目标在于:根据不同的性能和成本需要提供一系 列微处理器。i a - 6 4 架构从开始设计时就注意到了“内在的可伸缩性”,其架构及指 令格式兼容一系列微处理器,这使得通过i 冬6 4 系列产品、附属功能部件和其他微 处理器资源对扩展机器的“宽度”成为可能。并且,由于其增强了指令执行的并行 度,使得系统性能发生了革命性的提高。 显式的并行性 显式的并行性是指编译器在微处理器执行指令之前就对整个程序的代码做出优 化安排,使得微处理器在执行编译后的指令时更好地利用程序中的并行性a 认一6 4 采 用的e p i c 结构把微处理器硬件特征暴露给编译器,由编译器进行指令的优化调度, 尽量挖掘出应用程序的指令级并行性,并通过生成的机器语言以显式方式指导硬件 第7 页 国防科学技术大学研究生院学位论文 执行程序。 指令预测技术 分支指令带来了控制相关,目的地址的不确定是微处理器的指令并行能力的主 要障碍。分支处理一直都是提高i l p 的关键。i a 6 4 采用了全新的指令预测技术, 与传统r i s c 体系结构的条件指令扩展不同,它是一种完全预测结构,它准备好分 支语句后面两个可能的指令执行集合,实际执行中由寄存器中的预测位进行控制, 将符合要求的指令集合的控制预测位打开,即可完成执行。采用指令预测技术不仅 去掉大量的分支语句,简化指令调度,而且减少分支预测中的失误,避免了错误带 来的额外开销。在几个通用检测程序上做的一项测试表明,使用指令预测技术减少 5 0 的分支语句,同时将分支预测的失误率降低4 0 b a i o 推断执行技术 就目前技术而言,存储器的存取速度远慢于c p u 的运算速度,因此执行存储操 作时会暂停微处理器的运转,令微处理器一直闲置到数据存取完毕。存储器访问延 迟已经成为系统性能的一个主要瓶颈。提高微处理器的性能,需要充分考虑到如何 将存储器的延迟所带来的影响降低到最小。队6 4 架构中采用了控制与数据推断技 术,令编译器通过存储器访问和指令的重叠执行来隐藏存储器访问延迟。控制推断 是指一条指令在其尚未知道程序的动态控制流之前就提前执行,它使用专门的 s p e c u l a t i v el o a d 指令以避免推断错误,当推断正确时这些指令和正常的l o a d 指令相 同,一旦发生推断错误,他们在目标寄存器中置特殊位,并不引发故障使指令执行 停顿。数据推断克服了编译器不能改变l o a d 和s t o r e 指令在原来的程序中指定的顺 序的局限性,使得l o a d 指令可以在s t o r e 指令之前执行。i a 一6 4 所独有的技术是在l o a d 的原始位置设置了一条检查指令,该检查指令验证是否发生了地址重叠,使数据载 入获得极大的提前,有效的减少了存储器延迟对程序执行性能的影响。 以上介绍的是有关n 6 4 用户级指令集的内容,另外还有一些软件约定及系统 结构,和操作系统实现密切相关的内容,本文将在下一节结合i a - 6 4l i n u x 进行具 体介绍。 2 1 2i a 6 4l i n u x 最初的i a - 6 4l i n u x 研究始于1 9 9 8 年3 月,在h i 实验室进行,目标是建立完 全优化的基于i a 6 4 平台的l i n u x 内核。1 9 9 9 年,i t a n i u m 处理器推出之后,i n t e l 公司联合h p 、s g i 、r e d h a t 、v a l i n u x 和i b m 启动了 _ n t e li a - 6 4 的t r i l l i a n 项目【1 2 】, 该项目旨在完成l i n u x 基于i a - 6 4 平台的移植,同时保证a p i 与x 8 6 架构兼容,并 使6 4 位l i n u x 性能最优化。许多成员为该项目做出了贡献,如表1 所示。 表1t r i l l i a n 项目成员及主要贡献 攀熬糕然燃l 器臣鬻灏燃l 燃i 麟蘩l 麟i 囊蠹纛鬃i 瓣l g 蕤簇蠹i 熬耱 h p 内核,g e e ,g a s ,l d ,e m a c s 初始 i b m 性能工具,评测,分析 i n t e l 内核,队一3 2 ,平台,a p a c h e ,e f i ,f p s w a ,s c s i ,s m p , l i b m 第8 页 国防科学技术大学研究生院学位论文 r e d h a t ( c y g n u s )g n u - p r o 工具包( g e e ,g + + ,g d b ) s g i 编译器,k d b ,o p e n g l v al i n u xs y s t e m s 内核,x f r e e 8 6 ,命令,库文件,b o o t l o a d e r ,s m p ,i a 一3 2 c a l d e r a版本 c e r ng l i b e r e d h a t命令,g n o m e ,版本 s u s ek d e ,发布 t u r b o l i n u x性能计数器,版本 目前,r e d h a t 、t u r b o l i n u x 、c a l d e r a 和s u s e 都已发布了支持队6 4 架构的l i n u x 版本,l i n u x 已成为支持i a - 6 4 架构的重要操作系统之一。认一6 4l i n u x 项目由h p 公司的d a v i d m o s b e r g e r 负责维护和管理,已经融入到l i n u x 标准内核中。 2 1 2 1 整体属性 为保持与i a - 3 2 l i n u x 的兼容性,i a - 6 4 l i n u x 仍旧采用了l i t t l e e n d i a n 字节顺序。 c 语言数据模型采用的是l p 6 4 模型,即l o n g 和v o i d 类型的宽度都定义为6 4 。如 表2 所示,表中列举的是基本c 数据类型的完全列表,它们的宽度和对齐要求依据 表格指定的参数。这个表格提供的信息仅仅在于:移植c 程序不需要依赖于类型, 例如i n t 和l o n g 具有特殊的宽度。若类型需要指定特殊的宽度,最好是指定程序专 门设计。例如标准c 程序中提供的s t d i n t h 头文件,其中又定义了几种不同长度的 i n t 类型【“1 。 从表中可以看出基本数据类型必须依据它的宽度自然对齐。例如l o n g 型变量必 须开始于8 的倍数的地址。这意味着,i a - 6 4 基本数据类型必须自然对齐,表中没 有指定浮点类型的具体格式,可是软件约定其使用i e e e 的单精度格式。d o u b l e 类 型使用双精度格式。l o n gd o u b l e 类型和操作系统相关,l i n u x 使用8 0 位,从一6 4 也 支持8 0 位,1 2 8 位格式必须在软件中仿真。 表2i a 一6 4 数据模型 缫黧鏊甏颡疆麟黼黼涨糕鬻 囊趱巍鹱萋,蠹羹 瓣藜篱 c h a r11f 1 0 a t 44 s h o r t2 2d o u b l e88 i n t 44v o i d *88 l o n g i n t 88 l o n gd o u b l e 1 0 1 6 1 6 l o n gl o n gi n t 88 由于i a 6 4 具有大量的寄存器,因此可以针对某个目的单独使用一些寄存器, 以避免内存和重新装载的延迟。在内核里,我们固定使用一些寄存器,例如,r 1 3 存放当前进程指针( 线程指针) ,a n k o 存放延续的f o 基址,a t k s 存放浮点高端分 区的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论