快速业务通道

使用Java构建高伸缩性组件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

Simple Performance Lock Analysis Tool (SPLAT) ——该工具是AIX系统上的一个锁 分析工具,可以通过命令行运行,用于分析各种内核级的锁。同时,它也可以分析和显示 用户级锁(读/写和mutex)的竞争。应用必须启用跟踪选项,SPLAT需要用到这些跟踪数 据。

XProfiler——该分析工具基于X—Windows,用于C语言应用的函数级分析,能够显示 在用户代码中计算敏感的函数。如果要使用XProfiler,代码需要使用特殊的标志(-pg选 项)编译。

prof、 tprof和gprofncbr——各种prof命令都可以用于分析用户应用。prof命令能够 得到所有应用中的外部符号和函数。gprof是 prof的超集,可以获得应用的调用关系图。 最后,tprof用于得到应用的宏观和微观的分析信息。tprof能够得到各个指令、子程序、 线程、进程的计时数据,还有用户模式函数、库函数、Java类、Java方法、内核函数、内 核扩展等的处理器使用情况。

使用Java构建高伸缩性组件(2)

时间:2011-03-29 infoq 译:崔康

减少热点

传统的性能调优方法,比如适用于顺序应用的方法也适用于并行应用。在完成传统调 优之后,我们需要检查共享数据是如何被多线程访问的。通过使用JLM或者JLA,我们能够 发现线程在访问共享资源时是如何竞争的。

举例来说,如果应用有100个线程,并且所有的线程都需要从一个 java.util.HashTable提取/存储元素,该应用的性能由于线程竞争会下降。每一个线程需 要在访问该HashTable之前等待很长时间。

如果我们使用类似JLM的工具就会发现,该Hash表关联的monitor使用非常频繁。解决 这一问题的办法是使用能够替代HashTable的高扩展性 组件。在本例中,我们可以通过 java.util.concurrent.ConcurrentHashMap替换该hash表。 ConcurrentHashMap把它的内 部数据结构分成若干段。在应用中使用ConcurrentHashMap替换HashMap替换使线程针对多 个子组件竞争而不是单个大组件。使用ConcurrentHashMap的应用产生竞争的几率比之前 要小得多。

还有一种办法降低访问共享组件的竞争几率。如果一个组件具有相反语义的操作,如 栈的压入和弹出,这两种操作可以无需接触核心数据结构即可完成。这种技术最 早由 Danny Hendler、Nir Shavit和Lena Yerushalmi引入,已经在Amino库中实现。这种方法 的性能改善见图1。

图1.性能比较:EBStack和TreiberStack

使用无锁/无等待算法

传统上,大家都采用基于锁的方法来确保共享数据的一致性和对关键区域的互斥访问 。锁的概念易懂,但基于锁的算法引起了很多挑战。其中一些著名的问题包括死锁、活锁 、优先级倒置和锁竞争等。锁竞争会减少组件和算法的可扩展性。

无锁和无等待算法到现在已经存在二十多年了。它们被认为可以能够解决大部分与锁 有关的问题。这些算法支持在不使用任何锁算法的情况下更新共享数据结构,不仅如此, 还有助于创建扩展性良好的算法。最初,这些无锁和无等待的算法纯粹是理论兴趣。但是 ,随着算法社区的发展和新硬件的支持,无锁技术在现实产品中得到了越来越多的应用, 比如操作系统内核、虚拟机、线程库等。

从JDK 1.5以后,JDK包含了这些无锁算法,比如ConcurrentLinkedQueue、 AtomicInteger等。它们的伸缩性通常比对应的基于锁的组件要好。当我们在Amino库实现 新组件时,我们会使用目前研究的最新无锁算法。这使得Amino数据结构扩展性和效率非 常好。但是有时候,特别是在低核硬件上,无锁数据结构比基于锁数据结构的吞吐量差, 但是一般来说,它们的吞吐量比较好。

使用Java构建高伸缩性组件(3)

时间:2011-03-29 infoq 译:崔康

尽可能减少比较—交换(CAS)操作

从JDK 1.5以后,JDK包含了由Doug Lea开发的位于java.util.concurr

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号