| Related sites for http://www.eecs.harvard.edu/~mdw/proj/old/jaguar/ |
| Ben_Forta The author of several books and Adobe's ColdFusion evangelist provides a weblog, repository of links, tips, and custom CFML tags. | | WinVorbis Offers free tools with a graphical user interface to create and maintain Ogg Vorbis audio files on Windows and Linux operating systems. | | a386 C programming library providing a virtual i386 running in protected mode. | | UK_Software Specialize in MsAgent enhanced software and custom software. Creators Speaking Clock, Speaking Email Deluxe, Speaking Calendar and other software products. | | Mailtraq Comprehensive e-mail SMTP/POP3 and proxy server, with a mailing list server and intuitive WebMail service. Includes dialup manager, user accounting and content barring. | | BlogAmp A free Winamp plugin that allows the user to keep a list with the last songs played in Winamp. | | PackDir Fast file archiver with compression. Freeware. | | HDAT2/CBL_Hard_Disk_Repair_Utility A diagnostic tool for ATA/ATAPI/SATA-I and SCSI devices. | | Scanner_Galaxy Retailers of scanners and accessories. [USA] | | MSN_Tools The Tools permit the user to automatically: launch programs upon receipt of messages, check mailboxes, forward messages from mailboxes to an MSN-designated account, forward messages to mailboxes, forw | | IE-Engine,_Inc_ Provides application which automates the administration and evaluation of employee health and benefits vendors. | | rdist RDist is a program to maintain identical copies of files over multiple hosts. | | AdRevolver Multiplatform banner ad management available both as a stand-alone product and as hosted service solution. Provides detailed tracking and statistics and targeting. | | ClearCase_Commands_Reference ClearCase Commands Reference with AJAX-based search for ClearCase commands, ClearTool subcommands and MultiTool subcommands. | | Taditor Text/XML/HTML/Hex editor with Unicode support, internal browser, spelling checker and rich formatting options. User-defined functions and regular expressions are also supported. [Win98/Me/2000/XP/2003 | | J3D_ORG_-_Java_3D_FAQ Java 3D frequently asked questions at J3D.ORG. | | Daniel_Design_Group Offers site design and graphics. Located in Silver Creek, Minnesota. | | Flamingo_Winds_Web_Design Offers basic web design services, as well as guidance on registering domain names and on search engine optimization. | | BBEdit Famed Macintosh text editor - includes many features which have been specifically developed in response to the needs of HTML authors. | | Stripmail Quickly remove the characters (">" or " ") which are added to the beginning of each line in replied e-mail messages. |
|
| Jaguar - Java Access to Generic Underlying Architectural ResourcesJaguar: Fast Network Communication and I/O in JavaJava Access toGenericUnderlyingArchitecturalResourcesMatt WelshLast updated 17 May 2000IntroductionJaguar is an extension of the Java runtime environment which enables direct Java access to operating system and hardwareresources, such as fast network interfaces, memory-mapped and programmedI/O, and specialized machine instruction sets. Jaguar can be thought of as a replacement forthe Java Native Interface. Unlike the JNI, however, Jaguar does not requirecopying of data between the JVM and C code, nor expensive traversals betweenthe Java and native code contexts. Rather, Jaguar relies upon a flexiblebytecode translation technique which directly inlines specialized"driver" code to access low-level system resources from Java while maintaining type safety. This translation can be performed by a JIT compiler, a static ("ahead of time") compiler, or by a front-end whichtranslates Java bytecode to machine-independent "Jaguar bytecode".We have implemented a Jaguar interface to Berkeley Linux VIAcommunication architecture, which is implemented over the Myrinet system-area network. This system, JaguarVIA, provides direct, zero-copy Java access to the Myrinet with a round-trip time of 73 microseconds for small messages, and a peak bandwidth of over 488 mbits/second. This is nearly identical (within 1%) to the performance of Berkeley Linux VIA as accessed from C code.Another use of Jaguar is Pre-Serialized Objects, a mechanismwhich greatly reduces the cost of Java object serialization. This isaccomplished by rewriting Java object field accesses to store data inmemory in a "pre-serialized" form, ready for communication or I/O.Our analysis shows that using Pre-Serialized Objects can save a factorof 80 in performance over standard Java serialization for communicating over JaguarVIA.On top of Jaguar, we have implemented Tigris, a cluster-based I/O system and programming model which allows resources to be automatically balanced across the cluster; this is a Java reimplementation of theRiver system. Tigrisshields applications from asymmetries in CPU, I/O, and networking performance,through the use of a dataflow programming model and a distributed queue which allows data to adaptively flow from producers toconsumers. By using Jaguar for communication and I/O, Tigris is able toobtain performance rivaling that of similar systems implemented in C++.Jaguar is being used by the UC BerkeleyNinja andTelegraph projects tobuild high-performance, scalable systems in Java. NewsMay 17, 2000: Jaguar v2.1 has been released! Here is the release documentation. Download instructions.This release is targeted at x86 Linux systems, however, it should be possibleto compile and use it on other platforms. This software is entirely Open Source; See therelease docs for system requirements andcopyright information.New in Jaguar v2.1: Jaguar support has been added toOpenJIT, an open source JIT compiler which is itself implemented in Java. The use of OpenJIT allows Java applications running on standard JVMs to make use of Jaguar.Jaguar 2 is a reimplementation of the ideas in the original Jaguar(which is described in the papers below). Rather than requiring that Jaguarprimitives be implemented as machine code segments within a JIT compiler, Jaguar 2 relies on a "front-end" compiler to translate standard Java bytecodeinto specialized Jaguar bytecode. Jaguar bytecode is identical toJava bytecode except that (a) it has the Jaguar code transformations appliedto it, and (b) it may make use of extra bytecode instructions which arenecessary for direct memory access and other low-level system operations. The advantage of this approach is that the Jaguar drivers themselves are expressed in a machine-independent and type-safe form; only the extra Jaguar instructions are special. However, even these instructions are typed and can be verified for type-safety.Note that only "Jaguar driver" code, expressed as bytecode translation rules,may make use of these special instructions. That is, the Java applicationcannot directly use these instructions; rather, the Jaguar driver code isinlined into the application at compile time, through a set of bytecodetranslation rules. There are three advantages to this approach: The resulting code is very efficient; the Jaguar driver code is inlinedinto the application and can be optimized along with it. The overhead ofthe native method interface is entirely avoided. Applications can express low-level system operations naturally,through method calls, field accesses, and use of operators; native methods,on the other hand, must always be hidden behind a method-call interface. Protection relies upon the safety of the Jaguar driver translation rules -- not the application -- and these translation rules can themselvesbe type-checked.Another advantage is that Jaguar 2 is no longer so tightly bound to a particular JIT/JVM implementation. Given the source code to your favoriteJIT or other Java compiler, adding Jaguar bytecode support to it is easy. The Jaguar 2 front-end compiler is itselfwritten in Java and is highly portable. Two back-end compilers areavailable: a JIT compiler (based on OpenJIT) and a static Java compiler (based on GCJ).Software Release Jaguar v2.1, released 17 May 2000. Here is the release documentation. Download instructions.This release is targeted at x86 Linux systems, however, it should be possibleto compile and use it on other platforms. This software is entirely Open Source; See therelease docs for system requirements andcopyright information.Papers Safe and Efficient Hardware Specialization of Java Applications, Matt Welsh. UC Berkeley Technical Report, May, 2000. This paper describes the use of Jaguar bytecode in Jaguar v2.1, as well as the two latest implementations (based on GCJ and OpenJIT). (PDF) Jaguar: Enabling Efficient Communication and I/O in Java, Matt Welsh and David Culler. Concurrency: Practice and Experience, Vol. 12, pp. 519-538, Special Issue on Java for High-Performance Applications, December, 1999. This paper is the best overall discussion of Jaguar. (PDF) or (Gzipped PostScript) Achieving Robust, Scalable Cluster I/O in Java, Matt Welsh and David Culler. In Proceedings of the Fifth ACM SIGPLAN Workshop on Languages, Compilers, and Runtime Environments for Scalable Computers (LCR2K), Rochester, NY, June, 2000. This paper covers the Tigris I/O system built on top of Jaguar. (PDF) A System Supporting High-Performance Communication and I/O in Java, Matt Welsh. Master's Thesis, University of California, Berkeley, October, 1999. This is a slightly expanded version of the Jaguar and Tigris papers. (PDF) or (Gzipped PostScript)Presentations Jaguar: Bridging the Java Server Performance Gap, Matt Welsh. Presented at Sun Microsystems Laboratories, Mountain View, California, March 9, 2000. This is the most recent, and best, talk to read. Covers the design of Jaguar 2.0. (HTML) Jaguar: Bridging the Java Server Performance Gap, Matt Welsh. Presented at Fujitsu Laboratories, Kawasaki, Japan, June 21, 1999. Somewhat out of date, only covers Jaguar 1.0. (HTML) Using Java to Make Servers Scream, Matt Welsh. Presented at the ACM JavaGrande'99 Conference, San Francisco, California, June 12, 1999. This is the first talk on Jaguar and covers some topics not found in the other talks. (HTML)Related Projects UC Berkeley Ninja Project -- Delivering scalable Internet services to arbitrarily small devices UC Berkeley Telegraph Project -- A novel universal database system OpenJIT -- A reflective JIT compiler framework implemented in Java Jalapeno -- A Java virtual machine written in Java Java Grande Forum -- Promoting Java for high-performance computing GCJ -- High-performance Javva compiler based on GCC |
|