InifiBand是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了InifiBand是啥相关的知识,希望对你有一定的参考价值。
参考技术A InfiniBand架构是一种支持多并发链接的“转换线缆”技术,在这种技术中,每种链接都可以达到2.5Gbps的运行速度。这种架构在一个链接的时候速度是500 MB/秒,四个链接的时候速度是2 GB/秒,12个链接的时候速度可以达到6 GB /秒。
与其他网络协议(如TCP/IP)相比,InfiniBand具有更高的传输效率。原因在于许多网络协议具有转发损失的数据包的能力,但是由于要不断地确认与重发,基于这些协议的通信也会因此变慢,极大地影响了性能。
需要说明的是,TCP协议是一种被大量使用的传输协议,从冰箱到超级计算机等各种设备上都可以看到它的身影,但是使用它必须付出高昂的代价:TCP协议极其复杂、代码量巨大并且充满了各种特例,而且它很难卸载(所谓卸载就是不占用CPU的运行时间)。
与之相比,InfiniBand使用基于信任的、流控制的机制来确保连接的完整性,数据包极少丢失。使用InfiniBand,除非确认接收缓存具备足够的空间,否则不会传送数据。接受方在数据传输完毕之后, 返回信用来标示缓存空间的可用性。通过这种办法,InfiniBand消除了由于原数据包丢失而带来的重发延迟,从而提升了效率和整体性能。
目前,基于InfiniBand技术的网卡的单端口带宽最大可达到20Gbps,基于InfiniBand的交换机的单端口带宽最大可达60Gbps,单交换机芯片可以支持达480Gbps的带宽。在2005年的4月份,Cisco公司收购了InfiniBand方案提供商Topspin; 而专业存储厂商Qlogic公司也陆续收购了InfiniBand技术厂商SilverStorm公司和PathScale公司,开始进军InfiniBand领域。
采用Intel架构的处理器的输入/输出性能会受到PCI或者PCI-X总线的限制。总线的吞吐能力是由总线时钟决定的(比如33.3MHz,66.6MHz 以及133.3MHz)和总线的宽度(比如32位或者64位)。在最通常的配置中,PCI总线速度被限制在500 MB /秒,而PCI-X总线速度被限制在1 GB/秒。这种速度上的限制制约了服务器和存储设备、网络节点以及其他服务器通讯的能力。在InfiniBand的技术构想中,InfiniBand直接集成到系统板内,并且直接和CPU以及内存子系统互动。但是,在短期内,InfiniBand支持将由PCI和PCI-X适配器完成;这样,InfiniBand在最初将会受到总线的制约。在2002年年底,InfiniBand技术将会完全被整合在Intel服务器供应商以及Sun生产的服务器中(80%的可能性)
Javassist。主要思想是啥,真正的用途是啥?
【中文标题】Javassist。主要思想是啥,真正的用途是啥?【英文标题】:Javassist. What is the main idea and where real use?Javassist。主要思想是什么,真正的用途是什么? 【发布时间】:2011-11-09 23:39:49 【问题描述】:我知道 Javassist 是一个 Java 库,它提供了一种操作应用程序的 Java 字节码的方法。
好的,但为什么我们需要操作字节码?
有什么真实的例子吗? 任何真正的应用程序,javassist 在哪里使用?
【问题讨论】:
【参考方案1】:字节码操作是有用且必要的,尤其是当您没有某些项目的源代码时。假设您只有某个项目的字节码(如 jar 文件),但您想以某种方式更改代码的行为,字节码操作库可以在这种情况下提供帮助。字节码操作的好处是你不需要重新编译你的代码,操作后可以直接执行。
我使用字节码操作来进行一些程序分析。给定一个库,我想知道在运行时调用了库中的哪些方法。我可以使用字节码操作在方法的开头插入System.out.println("method_name");
语句。所以在运行时,它会打印出调用了哪些方法。
一些字节码操作库是:
ASM ByteBuddy BCEL【讨论】:
关于实际项目:我知道,playFramework 使用了 Javaassist。在这种情况下,我们有源代码......而且我认为,Hibernate 也使用 javassist。【参考方案2】:一个常见的应用是在运行时生成代理类,即在运行时创建一个子类来拦截所有的方法调用。例子:
Hibernate 使用代理拦截实体上的方法调用以实现延迟加载,即在第一次访问时从数据库中获取对象。
Spring 框架 uses Proxies to implement its AOP support,其中包括支持声明式事务。它还使用代理来执行适当的范围界定。
EJB 使用代理来实现容器管理的事务、授权检查以及应用用户定义的拦截器。
CDI 实现还必须代理托管 bean 以确保正确的作用域。我怀疑他们也使用了字节码工程库。
我最近使用 Javassist 实现了方法返回值的透明缓存,通过拦截所有方法调用并仅在第一次调用时委托给超级实现。
注意java.lang.reflect.Proxy
可以在运行时生成代理类,但只能实现接口,不能扩展类。以上所有用例都需要类的代理。
【讨论】:
【参考方案3】:ASM 项目的用户页面列出了几十个使用 ASM 进行字节码分析和操作的广泛使用的 Java 项目和框架。 http://asm.ow2.org/users.html
【讨论】:
【参考方案4】:扩展 Meriton 的答案并提供一个真实的使用示例:
Hibernate-core (5.2.8.Final) 使用 javaassit (3.20.0-GA):
https://mvnrepository.com/artifact/org.hibernate/hibernate-core/5.2.8.Final
【讨论】:
以上是关于InifiBand是啥的主要内容,如果未能解决你的问题,请参考以下文章