- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《LINUX向多核的扩展性分析》
单位代码 10006
学 号 分 类 号 TP391
密 级
毕业设计(翻译)
LINUX
向多核的扩展性分析
院(系) 名 称 计算机学院
专 业 名 称 计算机科学与技术
学 生 名 称
指 导 教 师
2013 年 6 月
摘 要
本文分析了七个系统 应用程序(Exim,memcached,Apache,PostgreSQL,
gmake,Psearchy 和 MapReduce)在运行于 48 核计算机的 Linux 上的可扩展性。
除了 forgmake,所有的应用程序都触发了最新 Linux 内核的可扩展性瓶颈。运用
标准的并行编程技术,本文介绍了一项新的技术——粗略计数器(sloppy counter),
这样瓶颈可以从内核中移除或者可以通过少量改变应用来被避免。优化内核总共
需要修改 3002 行代码。通过本次分析,我们推断还没有因为可扩展性方面的原
因而放弃传统操作系统组织结构。
1 引言
普遍观念是,传统的内核设计在多核处理器上不能表现很好的伸缩性:随着
内核数量的增加,应用程序将在内核上花费更多的时间。杰出的研究人员们主张
重新思考操作系统,而且具备可扩展性的新内核已经被提出了。本文提出的问题
是,由应用程序来决定规模时,传统内核设计是否可以被使用并执行。
这个问题很难决断性地回答,但我们尝试做出稍许解释。我们在 48 核机的
Linux 上分析部分系统应用程序。我们测试 Linux 操作系统,因为它具有传统的
内核设计,同时 Linux 社区在扩展性 方面已经取得了很大进展。应用程 序包括
Exim 邮件服务器[2],memcached 对象缓存[3],Apache 服务器[1],PostgreSQL[4],
gmake[ 23],Psearchy 文件索引器[35, 48],和一个多核的 MapReduce library[38]。
我们将这些应用程序统称为 MOSBENCH(多 核操作系统基准),这是专为并行
执行和着重使用主要的 Linux 内核组件而设计的。
判断 Linux 内核设计是否兼容应用程序的可扩展性,我们应用了如下方法。
首先,我们在运行于 48 核机的 Linux(内核版本为 2.6.35)上,衡量 MOSBENCH
标准应用程序的伸缩性,实验中我们使用保存在内存中的 tmpfs 文件系统来避免
磁盘使用瓶颈。Gmake 扩展良好,但其他应用程序扩展不佳,48 核机的每个内
核执行的工作远比单核时少。我们试图通过修改应用程序或 Linux 内核来理解和
解决程序的扩展问题。于是我们采用迭代的办法,原因在于先修正一个扩展性的
问题会进一步暴露深层问题。应用程序的最终结果是:要么在 48 核机上有很好
的扩展性,要么归咎于由应用程序、Linux 内核或底层硬件难以解决的问题而导
致的非扩展 性。我们 分析:内 核是否与扩 展区域兼 容的分析 结果是微小 的,在
Linux 内核的难以解决的问题最终限制了应用的可扩展性。
作为分析的一部分,我们将修正三大类 MOSBENCH 标准应用具有的的扩展
性问题:由 Linux 内核执行引起的问题,应用程序的用户层设计引起的问题,应
用程序使用 Linux 内核服务的方式所造成的问题。一旦我们确定了一个瓶颈,通
常只需要很少的工作就可以消除或避免它。在某些情况下,我们修改应用程序使
其能够更趋于并行,或以更适于扩展的方式调用内核服务,又或者我们直接修改
内核。内核的变化都是本地化的,通常通过分布式数据结构避免不必要的分享来
包含排他锁和原子指令。所需更改是细微的,其原因之一在于普通的 Linux 已经
做出了很多的优化来提高可扩展性。我们进一步推测,这也许是 Linux 系统调用
API 非常适合于实现避免对内核对象的不必要竞争。
本文的主要贡献如下:第一个贡献是,对 Linu x 2.6.35-rc5 内核使用 16 种扩
展性提高方式,来形 成我们引用的内核 补丁(PK)。一些变化来源于 新的想法,
我们称之为模糊计算器,它具有很好的属性,可以用来增大共享计数器让一些功
能在不必修改共享计数器的所有功能的情况下扩展性增强。在 Linux 中,这种技
术是特别有效的,因为通常一个给定的共享计数器中,只有几个功能是扩展性的
瓶颈;模糊计数器允许我们只替换这些少量的功能,而无需修改内核中的其他功
能。第二项贡献是一组衡量操作系统可扩展性的应用程序基准,MOSBENCH,
并且公开了它们
文档评论(0)