在JavaOne大会上,我参加了一个有趣的演讲,"Bare Metal"——Speeding Up Java Technology in a Virtualized Environment(“Bare Metal”——在虚拟化环境中加速Java技术),演讲者是Joakim Dahlstedt。Joakim是BEA Java Runtime Products Group的CTO。简而言之,他提出了使用虚拟化作为运行Java虚拟机的方式。这样,就可以在一个4路机器上运行8个JRockit JVM(对于正在运行的应用程序来说是透明的)。此外,他们是在虚拟化硬件上运行的,避开了操作系统。
那么他们是如何做到的呢?他们使用了管理程序(hypervisor)。管理程序允许将一个物理机器分为多个虚拟机器。通常可以使用此特性在操作系统的多个实例上运行多个应用程序,它们全都相互独立,但是使用的却是同一个芯片(上的不同分区)。
不过,他们在Bare Metal演讲中提出的是,只在一个(而不是多个)操作系统分区上运行。然后,当使用操作系统并创建一个新的JVM时,就会创建一个JRockit实例,作为一个直接运行在管理程序层而不是操作系统上的分区。可以创建多个此类实例,它们都直接运行在管理程序上,避开了操作系统。问题是:如何进行文件输入/输出?
下面就是解决的办法。他们在管理程序之上创建了一个非常薄的层(就是他们称之为Bare Metal的),它允许他们实现JVM服务。例如,文件输入/输出可使用操作系统虚拟化系统或Java JVM本地磁盘进行。Bare Metal容器有一个小型TCP/IP堆栈,包含有Java所使用的协议(TCP/UDP等)。所以就完全避免了用于网络输入/输出的操作系统代理。真奇妙!
那么这可以为我们带来什么好处呢?由于每个JVM实例都避开了操作系统,所以这些实例就具有更高的性能、良好的资源控制、轻量级且高效的线程,以及改进的垃圾收集,通过对该层的更多控制,可以获取更多的可预测性。每个JVM也有其自己的特性——它们是虚拟的系统,而不是同级的进程。这也带来了其他一些好处——好的隔离性、完整的状态快照保存、暂停和恢复等。
当然了,如果您需要图形化的显示,那么您不会想要此类东西。Bare metal是一个服务器环境,没有屏幕,没有图形化用户界面,没有声音……
技术标签:
dev2dev、
j2ee、
java、
javaone、
javaone 2006、
jrockit、
jvm、
虚拟化
原文出处:http://dev2dev.bea.com/blog/jonmountjoy/archive/2006/05/jrockit_jvms_hy.html