Measuring the Startup Time of a Java Virtual Machine
|
|
|
- Sydney Wheeler
- 10 years ago
- Views:
Transcription
1 Olympiads in Informatics, 2011, Vol. 5, Vilnius University Measuring the Startup Time of a Java Virtual Machine Bruce MERRY 1, Carl HULTQUIST 2 1 ARM Ltd. 110 Fulbourn Road, Cambridge, CB1 9NJ, England 2 D.E. Shaw & Co.(U.K) Ltd. 55 Baker Street, London, W1U 8EW, England [email protected], [email protected] Abstract. For many olympiad problems, an execution time limit is used to constrain the classes of algorithms that will be accepted. While Just In Time (JIT) technology allows Java bytecode to be executed at a speed comparable to native code, the Sun Java Virtual Machine has a reputation for a large startup time that can significantly affect measured execution time. We present a technique for measuring the startup time of the virtual machine for each execution run, so that it may be subtracted from the total execution time. We found that the startup time was lower than expected (about 70ms), with little variation between programs or runs. Key words: Java, startup time, time limit. 1. Introduction Numerous programming contests allow Java to be used as a programming language (ICPC, 2010; Kolstad, 2009; Merry et al., 2008; Tani and Moriya, 2008; Trefz, 2007). Additionally, it is common practise in programming contests to impose an execution time limit on solutions, both to protect the system against long-running solutions and to enforce some degree of algorithm efficiency on solutions. When multiple programming languages are made available, the question that naturally arises is whether the choice of language affects execution time and if so, whether this is fair to contestants. Java is different from C-like languages in that it is typically compiled to bytecode and run in an interpreter, rather than compiled directly to machine code. The de-facto standard interpreter is the Sun Java Virtual Machine (JVM). While the execution speed of such interpreted code remains a concern (even with technologies such as Just-in-Time (JIT) compilation), this paper specifically addresses startup overhead. In evaluating Java for the International Olympiad in Informatics, it has previously been noted (Pohl, 2006) that the JVM can take anywhere up to a second to start, and that the startup time is highly variable. To address this, the South African Computer Olympiad (SACO) grading system measures the startup time each time a Java solution is run, and subtracts this from the total execution time. Section 2 describes how this is achieved.
2 104 B. Merry, C. Hultquist In order to evaluate the effectiveness of our wrapper, we are interested in the following questions: What is the average startup time of a C++ program? What is the average startup time of a Java program? Does the Java wrapper have any impact on execution time? Is the startup time of a Java program greater than that of a C++ program? Is the solution time of an empty Java program greater than that of a C++ program? Does the choice of program (e.g., a simple versus a complex one) impact the startup time? Does the solution time computed using our wrapper have less variation than execution time? In other words, does our wrapper lead to more consistent timing? Section 3 explains how we tested the effectiveness of our technique, and we report the results of our tests in Section 4. We finish with conclusions in Section Measuring Startup Time A simple approach to measuring startup time would simply be to run a trivial program multiple times to determine an average. However, the startup time could vary from program to program or even run to run, and so the average is only a crude approximation. The measured average would also only be valid for the combination of hardware and software and so would need to be recalibrated each time a system update was done. It could also vary over time even if the system is not changed, due to factors such as file system fragmentation. Instead, we measure the startup time of each run as it is happening. To accomplish this, we do not launch the user s Java class directly. Instead, we launch a helper class that does the following: 1. Uses reflection to look up the main method in the user s class. 2. Calls a native function we have written that measures the time elapsed so far, and passes it to the process that manages time limit enforcement. 3. Invokes the main method in the user s class. We discuss these steps in detail in the following subsections Class Lookup Unlike languages such as C, Java provides reflection mechanisms that allow classes and methods to be looked up by name at run time. The name of the user s class is passed to the wrapper on the command-line, and its main method is located with the following code: Class<?> childclass; Method childmain; Object childargs;
3 Measuring the Startup Time of a Java Virtual Machine 105 childclass = Class.forName(args[0], false, JavaWrapper.class.getClassLoader()); childmain = childclass.getmethod("main", String[].class); childargs = Arrays.copyOfRange(args, 1, args.length); It is not strictly necessary to do this class lookup dynamically; one could instead generate a wrapper on the fly for each possible user class name. We have chosen to use reflection largely for convenience Reporting Startup Time Standard Java libraries do not provide a means of determining the CPU time consumed so far. Instead, we use Java Native Interface (JNI), a mechanism that allows Java methods to be implemented in a native language such as C. This C code is compiled into a shared object which the JVM loads at run time. Since our evaluation system is based on GNU/Linux, our native code calls getrusage to determine the CPU time that has been consumed by startup overheads. It then needs to report this to the parent process (which is doing timing and enforcing resource limits), in a secure way. We chose to have the parent process open a pipe between parent and child when the child is created, with a fixed file descriptor number (3). The native code running in the child writes the startup time to this pipe, and then closes it to ensure that the user s code cannot access it Launching the User s Class Having measured all startup overheads to this point, we are ready to launch the user s code. This is done by calling childmain.invoke(null, childargs). This passes any remaining command-line arguments to the child. Most olympiad problems do not process command-line arguments, but doing so makes the wrapper general-purpose Exception Handling The sample code listed above does not include any exception handling. There is relatively little exception handling required, because an exception will usually indicate a fault in the user s submission (whether because their code threw an exception, or their class didn t have a main method with the appropriate signature or permissions, or some other reflection issue), and the submission will score zero with the exact reason being irrelevant. There is one special case: because the parent process is waiting for the child to inform it of the startup time, this must be reported even if the class lookup throws an exception.
4 106 B. Merry, C. Hultquist Our use of reflection causes exception messages to be different from those that would be seen had the code been run outside the wrapper. This is because exceptions thrown by the invoked method are wrapped in another exception, such as InvocationTargetException, to allow exception handlers to distinguish them from exceptions in the invocation process itself. To make our wrapper more transparent, we catch these exceptions and re-throw the underlying exception, causing the error log to match what would have appeared in the absence of the wrapper Security Considerations No matter how well this scheme works, it would be of dubious practical value if contestant code could either perform computation in the nominal startup time (thus bypassing the resource limit), or was able to report a false startup time to the parent process. In this section we consider some possible ways that user code might attack the system. First we consider whether user code can execute during startup time. Because we load the user s class before recording the startup time (so that the time taken for this reflection process does not count against the user), we must not allow any user initialisation code, such as a static class initialiser, to be run during this loading. This is done by passing false to Class.forName, which indicates that the class should not be initialised at this point. The class is instead initialised when the main method is invoked. Since no user code is able to run before the startup time is reported to the parent, it cannot interfere with the reporting process. It cannot even send false data along the same pipe, because the native code that does the reporting closes the pipe before it returns. One other risk is the presence of the native code: the user s code can cause it to execute again (for example, by calling the main method in the wrapper class), and so it must be made robust to repeated execution. 3. Test Setup In order to test the usage of our wrapper, we used the solutions to several olympiad problems to generate statistics about run time under various scenarios. Specifically, we took the following measurements: Execution time the total time taken by the process, including any startup and wrapperoverheads. Startup time the startup time measured by our wrapper, prior to the user s code being launched. Solution time the time taken by the user s code, computed as the difference between execution time and startup time. Where our wrapper has not been used, only execution time can be measured directly. Our test machine has a 2.16G Hz Core 2 Duo T7400, with 1GB RAM, and runs a Linux bit preemptable kernel and 64-bit Gentoo OS. C++ solutions were compiled with GCC with options -O2 -s -static while Java solutions were compiled and executed with Sun Java SE Runtime Environment 1.6.0_24-b07.
5 Measuring the Startup Time of a Java Virtual Machine 107 The C++ and Java solutions for each problem are functionally identical, so as to minimise the effects of different algorithms impacting our measurements. We also include a special empty program which, as its name implies, does no processing and returns immediately. The C++ and Java empty programs are as follows: // C++ int main() { return 0; } // Java public class empty { public static void main(string[] args) { } } Since we are aiming to measure startup time rather than solution speed, all our tests were done with very small input files for which processing is expected to take almost zero time. For statistical significance, each combination of solution, language, and the presence or absence of the wrapper was run 200 times. One limitation in our approach for collecting test data is the quantisation of the results returned by the getrusage system call. The kernel on our test system has a tick frequency of 1000 Hz, which quantises our results to 1 ms buckets. We have not attempted to take these quantisation effects into account when applying statistical tests, and so p values quoted may be inaccurate. 4. Results The figures below show box plots. Each box represents the inter-quartile range, the bar inside the box represents the median, and the small circles represent outliers (the 1 ms quantisation causes more data points to be flagged as outliers than might otherwise be the case). We now address the questions listed in Section 1. Firstly we consider C++: every run on all our test programs reported an execution time of 1 ms. It is likely that less than 1 ms was required, but that the 1 ms quantisation caused everything to be rounded up to 1 ms. We can estimate Java startup time without the use of our wrapper. Since our empty program performs no computation, its execution time is essentially the startup time. Figures 1 and 2 show that, on average:
6 108 B. Merry, C. Hultquist Fig. 1. Execution time for various Java programs, without the use of our wrapper. Fig. 2. Solution time for various Java programs with their sample test-case as input, after subtracting the measured startup time of the JVM.
7 Measuring the Startup Time of a Java Virtual Machine 109 Java with no wrapper has an execution time of 70.0 ms. Java with our wrapper has an execution time of 71.8 ms. In each of these data-sets, the standard deviation of the measurements is less than 0.5 ms and is thus unreliable in telling us how the individual times vary, due to the quantisation of our measurements to 1 ms buckets. Figure 3 gives an alternative view of the effect of our wrapper, showing the average startup time and solution time for each program. It shows that of the 71.8 ms average time for the empty program, only 1.8 ms is solution time and the remainder is startup time. These data also address our question of whether the use of our wrapper impacts execution time. The mean execution time for the empty Java program is clearly greater than that of the same program without our wrapper, and a t-test confirms that this finding is statistically significant with p< Furthermore, it is clear both from the data and conventional wisdom that the startup time of a Java program is greater than that of a C++ program and our data shows that this is true even when taking the startup time into account. Applying a t-test to our data, we find that the solution time of the wrapped empty Java program (1.8 ms) is statistically significantly more than the 1 ms execution time of the empty C++ program, with p< Similarly, the execution time of the unwrapped empty Java program (70 ms) is also statistically significantly more than that of C++, again with p< The figures also show a clear variation in execution time between the programs; from Fig. 3 and 4 it is clear that this variation is part of the solution time, rather than the startup time. Investigation showed that the three slow programs (bonuses, camera and path) all used the Scanner class for parsing input, while the remaining programs did not. This class is more convenient than other methods of parsing input (such as Fig. 3. The average startup time and solution time for various Java programs.
8 110 B. Merry, C. Hultquist Fig. 4. Startup time measured by our Java wrapper for various Java programs. StringTokenizer), but apparently this convenience comes at a price in initialisation time. Finally, we address the question of whether subtracting the startup time for a Java program reduces the variation in reported run time. From Figs. 1 and 2, it appears that the standard deviation in run time for each program has not improved after subtracting the startup time. This is further supported by the box plots in Fig. 4, which show that the measured startup time is almost constant at 70 ms. However, given that all the standard deviations in these data sets are less than 1 ms, we cannot draw any definite conclusions due to the 1 ms quantisation of our measurements. 5. Conclusions Prior experience, both our own and that reported by Pohl (2006), led us to expect that the startup time of Java programs would be significant and highly variable, and that our technique would be valuable for programming contests using Java with time limits of up to a few seconds. We were thus surprised to find that the startup time we measured was only around 70 ms, and highly consistent across different programs and different runs. Indeed, the variation observed between programs was not due to the startup time of the JVM, but to run time consumed by the Scanner class. It is not currently known whether this small and consistent startup time is due to improvements in the Virtual Machine implementation since 2006, or to changes in the underlying environment (faster CPUs and larger caches). Given the consistency of the measured startup time, it seems that a simple solution of applying a fixed correction to all Java run times is likely to be sufficient. Nevertheless,
9 Measuring the Startup Time of a Java Virtual Machine 111 our method is particularly convenient since it does not require separate calibration. It also adds only a few milliseconds to the total execution time, and thus will have minimal impact on the rate at which solutions can be judged. After correcting for the JVM startup time, a trivial Java program runs almost as fast as a trivial C++ program the difference is less than the quantisation error caused by operating system time-slicing. We thus feel confident that while execution speed may still be a concern (and is beyond the scope of this paper), startup time is no longer an issue when supporting Java as a programming language in a contest Future Work Although we have addressed the issue of startup time in Java programs, there are several additional avenues for research that would assist in supporting the more widespread adoption of Java in programming contests: Class-specific wrapper. In Section 2.1 we described how we use reflection to look up the user s class, and noted that an alternative approach would be to generate a wrapper on the fly and avoid the reflective lookup. This approach may reduce the additional run time overhead incurred by the wrapper. Shutdown time. Although our technique focuses on reducing startup time, a similar approach might be used to measure shutdown time (that is, the time required for the JVM to terminate after the user s program has completed). Preloading of key classes. Our analysis identified that the use of certain classes (such as Scanner) can have a measurable impact on the startup time of a program. One possible means of ameliorating the effect of such classes would be to preload them in the wrapper, and thus separate their initialisation time from the time attributable to the user s program. Further investigation would be required to determine whether this overhead is for class initialisation or is per-instance. JVM priming. The JVM is well known for performing just-in-time compilation and adaptive optimisation of executing bytecode, which can result in fully optimised machine code only being executed at some indeterminate point in the program s execution. Java programs may therefore be at a disadvantage to those written in other languages, such as C++ or Pascal, where program code is precompiled straight to optimised machine code. One possible means of reducing this disparity would be to prime the JVM by executing the Java program many times within the same JVM instance, thus giving it an opportunity toe fully optimise and compile all the code. Care would, however, need to be taken in such an approach to ensure that the user s program did not store any information for use in successive runs. Other JVM implementations. This paper has focused on the Sun JVM; it would be interesting to perform similar analysis on other JVM implementations.
10 112 B. Merry, C. Hultquist References ICPC. ICPCWiki: World finals rules. (2010). Kolstad, R. (2009). Infrastructure for contest task development. Olympiads in Informatics, 3, Merry, B., Gallotta, M., Hultquist, C. (2008). Challenges in running a computer olympiad in South Africa. Olympiads in Informatics, 2, Pohl, W. (2006). IOI Newsletter, Tani, S., Moriya, E. (2008). Japanese olympiad in informatics. Olympiads in Informatics, 2, Trefz, N. (2007). The coding window TopCoder wiki. B. Merry took part in the IOI from 1996 to 2001, winning two gold medals. Since then he has been involved in numerous programming contests, as well as South Africa s IOI training programme. He obtained his PhD in computer science from the University of Cape Town and is now a software engineer at ARM. C. Hultquist took part in the IOI from 1999 to 2000, winning a silver medal and a bronze medal. He has since taken part in and organised several other programming contests, including active involvement in South Africa s IOI training programme. Carl obtained his PhD in computer science from the University of Cape Town and is currently working as a software engineer for D.E. Shaw.
Replication on Virtual Machines
Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism
System Structures. Services Interface Structure
System Structures Services Interface Structure Operating system services (1) Operating system services (2) Functions that are helpful to the user User interface Command line interpreter Batch interface
Validating Java for Safety-Critical Applications
Validating Java for Safety-Critical Applications Jean-Marie Dautelle * Raytheon Company, Marlborough, MA, 01752 With the real-time extensions, Java can now be used for safety critical systems. It is therefore
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design
HeapStats: Your Dependable Helper for Java Applications, from Development to Operation
: Technologies for Promoting Use of Open Source Software that Contribute to Reducing TCO of IT Platform HeapStats: Your Dependable Helper for Java Applications, from Development to Operation Shinji Takao,
Expansion of a Framework for a Data- Intensive Wide-Area Application to the Java Language
Expansion of a Framework for a Data- Intensive Wide-Area Application to the Java Sergey Koren Table of Contents 1 INTRODUCTION... 3 2 PREVIOUS RESEARCH... 3 3 ALGORITHM...4 3.1 APPROACH... 4 3.2 C++ INFRASTRUCTURE
Chapter 3: Operating-System Structures. Common System Components
Chapter 3: Operating-System Structures System Components Operating System Services System Calls System Programs System Structure Virtual Machines System Design and Implementation System Generation 3.1
Cloud Computing on Amazon's EC2
Technical Report Number CSSE10-04 1. Introduction to Amazon s EC2 Brandon K Maharrey [email protected] COMP 6330 Parallel and Distributed Computing Spring 2009 Final Project Technical Report Cloud Computing
Linux Process Scheduling Policy
Lecture Overview Introduction to Linux process scheduling Policy versus algorithm Linux overall process scheduling objectives Timesharing Dynamic priority Favor I/O-bound process Linux scheduling algorithm
A Thread Monitoring System for Multithreaded Java Programs
A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea [email protected], [email protected]
Tutorial: Getting Started
9 Tutorial: Getting Started INFRASTRUCTURE A MAKEFILE PLAIN HELLO WORLD APERIODIC HELLO WORLD PERIODIC HELLO WORLD WATCH THOSE REAL-TIME PRIORITIES THEY ARE SERIOUS SUMMARY Getting started with a new platform
Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment
Experimental Evaluation of Distributed Middleware with a Virtualized Java Environment Nuno A. Carvalho, João Bordalo, Filipe Campos and José Pereira HASLab / INESC TEC Universidade do Minho MW4SOC 11 December
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
02 B The Java Virtual Machine
02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual
qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq
qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq Introduction to Programming using Java wertyuiopasdfghjklzxcvbnmqwertyui
Security Vulnerability Notice
Security Vulnerability Notice SE-2012-01-PUBLIC [Security vulnerabilities in Java SE, Issue 54] DISCLAIMER INFORMATION PROVIDED IN THIS DOCUMENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
A Comparative Study on Vega-HTTP & Popular Open-source Web-servers
A Comparative Study on Vega-HTTP & Popular Open-source Web-servers Happiest People. Happiest Customers Contents Abstract... 3 Introduction... 3 Performance Comparison... 4 Architecture... 5 Diagram...
1. Overview of the Java Language
1. Overview of the Java Language What Is the Java Technology? Java technology is: A programming language A development environment An application environment A deployment environment It is similar in syntax
VOC Documentation. Release 0.1. Russell Keith-Magee
VOC Documentation Release 0.1 Russell Keith-Magee February 07, 2016 Contents 1 About VOC 3 1.1 The VOC Developer and User community................................ 3 1.2 Frequently Asked Questions.......................................
Multi-core Programming System Overview
Multi-core Programming System Overview Based on slides from Intel Software College and Multi-Core Programming increasing performance through software multi-threading by Shameem Akhter and Jason Roberts,
Mobile Devices - An Introduction to the Android Operating Environment. Design, Architecture, and Performance Implications
Mobile Devices - An Introduction to the Android Operating Environment Design, Architecture, and Performance Implications Dominique A. Heger DHTechnologies (DHT) [email protected] 1.0 Introduction With
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
C# and Other Languages
C# and Other Languages Rob Miles Department of Computer Science Why do we have lots of Programming Languages? Different developer audiences Different application areas/target platforms Graphics, AI, List
Introduction to Java
Introduction to Java The HelloWorld program Primitive data types Assignment and arithmetic operations User input Conditional statements Looping Arrays CSA0011 Matthew Xuereb 2008 1 Java Overview A high
StACC: St Andrews Cloud Computing Co laboratory. A Performance Comparison of Clouds. Amazon EC2 and Ubuntu Enterprise Cloud
StACC: St Andrews Cloud Computing Co laboratory A Performance Comparison of Clouds Amazon EC2 and Ubuntu Enterprise Cloud Jonathan S Ward StACC (pronounced like 'stack') is a research collaboration launched
Chapter 1 Fundamentals of Java Programming
Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The
CSC230 Getting Starting in C. Tyler Bletsch
CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly
SYSTEM ecos Embedded Configurable Operating System
BELONGS TO THE CYGNUS SOLUTIONS founded about 1989 initiative connected with an idea of free software ( commercial support for the free software ). Recently merged with RedHat. CYGNUS was also the original
6.1. Example: A Tip Calculator 6-1
Chapter 6. Transition to Java Not all programming languages are created equal. Each is designed by its creator to achieve a particular purpose, which can range from highly focused languages designed for
IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM
IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM Note Before you use this information and the product it supports, read the
The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1
The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose
Efficiency of Web Based SAX XML Distributed Processing
Efficiency of Web Based SAX XML Distributed Processing R. Eggen Computer and Information Sciences Department University of North Florida Jacksonville, FL, USA A. Basic Computer and Information Sciences
Effective Java Programming. efficient software development
Effective Java Programming efficient software development Structure efficient software development what is efficiency? development process profiling during development what determines the performance of
Instrumentation Software Profiling
Instrumentation Software Profiling Software Profiling Instrumentation of a program so that data related to runtime performance (e.g execution time, memory usage) is gathered for one or more pieces of the
INTERNATIONAL JOURNAL OF COMPUTER ENGINEERING & TECHNOLOGY (IJCET)
INTERNATIONAL JOURNAL OF COMPUTER ENGINEERING & TECHNOLOGY (IJCET) International Journal of Computer Engineering and Technology (IJCET), ISSN 0976-6367(Print), ISSN 0976 6367(Print) ISSN 0976 6375(Online)
Can You Trust Your JVM Diagnostic Tools?
Can You Trust Your JVM Diagnostic Tools? Isaac Sjoblom, Tim S. Snyder, and Elena Machkasova Computer Science Discipline University of Minnesota Morris Morris, MN 56267 [email protected], [email protected],
The Darwin Game 2.0 Programming Guide
The Darwin Game 2.0 Programming Guide In The Darwin Game creatures compete to control maps and race through mazes. You play by programming your own species of creature in Java, which then acts autonomously
Java CPD (I) Frans Coenen Department of Computer Science
Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:45-14:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:45-16:45 (Input and Programme Constructs) Materials
ELIXIR LOAD BALANCER 2
ELIXIR LOAD BALANCER 2 Overview Elixir Load Balancer for Elixir Repertoire Server 7.2.2 or greater provides software solution for load balancing of Elixir Repertoire Servers. As a pure Java based software
Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16
Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz [email protected] Assistant: Iulian Dragos INR 321, 368 64
DMS Performance Tuning Guide for SQL Server
DMS Performance Tuning Guide for SQL Server Rev: February 13, 2014 Sitecore CMS 6.5 DMS Performance Tuning Guide for SQL Server A system administrator's guide to optimizing the performance of Sitecore
B M C S O F T W A R E, I N C. BASIC BEST PRACTICES. Ross Cochran Principal SW Consultant
B M C S O F T W A R E, I N C. PATROL FOR WEBSPHERE APPLICATION SERVER BASIC BEST PRACTICES Ross Cochran Principal SW Consultant PAT R O L F O R W E B S P H E R E A P P L I C AT I O N S E R V E R BEST PRACTICES
Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.
Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java
CS423 Spring 2015 MP4: Dynamic Load Balancer Due April 27 th at 9:00 am 2015
CS423 Spring 2015 MP4: Dynamic Load Balancer Due April 27 th at 9:00 am 2015 1. Goals and Overview 1. In this MP you will design a Dynamic Load Balancer architecture for a Distributed System 2. You will
Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.
Objectives To describe the services an operating system provides to users, processes, and other systems To discuss the various ways of structuring an operating system Chapter 2: Operating-System Structures
CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions
CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly
How To Test The Power Of Ancientisk On An Ipbx On A Quad Core Ios 2.2.2 (Powerbee) On A Pc Or Ipbax On A Microsoft Ipbox On A Mini Ipbq
Load test of IP PBX Asterisk installed on mid-size server E.Anvaer, V.Dudchenko, SoftBCom, Ltd. (www.softbcom.ru) 21.07.2014 Direct load test of IP PBX Asterisk on Intel Xeon E5506 Quad-Core CPU shows
Restraining Execution Environments
Restraining Execution Environments Segurança em Sistemas Informáticos André Gonçalves Contents Overview Java Virtual Machine: Overview The Basic Parts Security Sandbox Mechanisms Sandbox Memory Native
EE8205: Embedded Computer System Electrical and Computer Engineering, Ryerson University. Multitasking ARM-Applications with uvision and RTX
EE8205: Embedded Computer System Electrical and Computer Engineering, Ryerson University Multitasking ARM-Applications with uvision and RTX 1. Objectives The purpose of this lab is to lab is to introduce
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
Thin@ System Architecture V3.2. Last Update: August 2015
Thin@ System Architecture V3.2 Last Update: August 2015 Introduction http://www.thinetsolution.com Welcome to Thin@ System Architecture manual! Modern business applications are available to end users as
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design
PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions Slide 1 Outline Principles for performance oriented design Performance testing Performance tuning General
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
Chapter 3 Operating-System Structures
Contents 1. Introduction 2. Computer-System Structures 3. Operating-System Structures 4. Processes 5. Threads 6. CPU Scheduling 7. Process Synchronization 8. Deadlocks 9. Memory Management 10. Virtual
Run-time Resource Management in SOA Virtualized Environments. Danilo Ardagna, Raffaela Mirandola, Marco Trubian, Li Zhang
Run-time Resource Management in SOA Virtualized Environments Danilo Ardagna, Raffaela Mirandola, Marco Trubian, Li Zhang Amsterdam, August 25 2009 SOI Run-time Management 2 SOI=SOA + virtualization Goal:
Java and Real Time Storage Applications
Java and Real Time Storage Applications Gary Mueller Janet Borzuchowski 1 Flavors of Java for Embedded Systems Software Java Virtual Machine(JVM) Compiled Java Hardware Java Virtual Machine Java Virtual
Chapter 14 Virtual Machines
Operating Systems: Internals and Design Principles Chapter 14 Virtual Machines Eighth Edition By William Stallings Virtual Machines (VM) Virtualization technology enables a single PC or server to simultaneously
Efficient database auditing
Topicus Fincare Efficient database auditing And entity reversion Dennis Windhouwer Supervised by: Pim van den Broek, Jasper Laagland and Johan te Winkel 9 April 2014 SUMMARY Topicus wants their current
Transactionality and Fault Handling in WebSphere Process Server Web Service Invocations. version 0.5 - Feb 2011
Transactionality and Fault Handling in WebSphere Process Server Web Service Invocations version 0.5 - Feb 2011 IBM Corporation, 2011 This edition applies to Version 6.2 of WebSphere Process Server 1 /
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
Practical Performance Understanding the Performance of Your Application
Neil Masson IBM Java Service Technical Lead 25 th September 2012 Practical Performance Understanding the Performance of Your Application 1 WebSphere User Group: Practical Performance Understand the Performance
Building Applications Using Micro Focus COBOL
Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.
1001ICT Introduction To Programming Lecture Notes
1001ICT Introduction To Programming Lecture Notes School of Information and Communication Technology Griffith University Semester 2, 2015 1 3 A First MaSH Program In this section we will describe a very
Evaluation of Complexity of Some Programming Languages on the Travelling Salesman Problem
International Journal of Applied Science and Technology Vol. 3 No. 8; December 2013 Evaluation of Complexity of Some Programming Languages on the Travelling Salesman Problem D. R. Aremu O. A. Gbadamosi
find model parameters, to validate models, and to develop inputs for models. c 1994 Raj Jain 7.1
Monitors Monitor: A tool used to observe the activities on a system. Usage: A system programmer may use a monitor to improve software performance. Find frequently used segments of the software. A systems
An Implementation Of Multiprocessor Linux
An Implementation Of Multiprocessor Linux This document describes the implementation of a simple SMP Linux kernel extension and how to use this to develop SMP Linux kernels for architectures other than
ProMoX: A Protocol Stack Monitoring Framework
ProMoX: A Protocol Stack Monitoring Framework Elias Weingärtner, Christoph Terwelp, Klaus Wehrle Distributed Systems Group Chair of Computer Science IV RWTH Aachen University http://ds.cs.rwth-aachen.de
Java Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
Energy Efficient MapReduce
Energy Efficient MapReduce Motivation: Energy consumption is an important aspect of datacenters efficiency, the total power consumption in the united states has doubled from 2000 to 2005, representing
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
Garbage Collection in the Java HotSpot Virtual Machine
http://www.devx.com Printed from http://www.devx.com/java/article/21977/1954 Garbage Collection in the Java HotSpot Virtual Machine Gain a better understanding of how garbage collection in the Java HotSpot
A Scalable Network Monitoring and Bandwidth Throttling System for Cloud Computing
A Scalable Network Monitoring and Bandwidth Throttling System for Cloud Computing N.F. Huysamen and A.E. Krzesinski Department of Mathematical Sciences University of Stellenbosch 7600 Stellenbosch, South
Chapter 3. Internet Applications and Network Programming
Chapter 3 Internet Applications and Network Programming 1 Introduction The Internet offers users a rich diversity of services none of the services is part of the underlying communication infrastructure
HPC performance applications on Virtual Clusters
Panagiotis Kritikakos EPCC, School of Physics & Astronomy, University of Edinburgh, Scotland - UK [email protected] 4 th IC-SCCE, Athens 7 th July 2010 This work investigates the performance of (Java)
CS5460: Operating Systems. Lecture: Virtualization 2. Anton Burtsev March, 2013
CS5460: Operating Systems Lecture: Virtualization 2 Anton Burtsev March, 2013 Paravirtualization: Xen Full virtualization Complete illusion of physical hardware Trap _all_ sensitive instructions Virtualized
Jorix kernel: real-time scheduling
Jorix kernel: real-time scheduling Joris Huizer Kwie Min Wong May 16, 2007 1 Introduction As a specialized part of the kernel, we implemented two real-time scheduling algorithms: RM (rate monotonic) and
Performance Tools for Parallel Java Environments
Performance Tools for Parallel Java Environments Sameer Shende and Allen D. Malony Department of Computer and Information Science, University of Oregon {sameer,malony}@cs.uoregon.edu http://www.cs.uoregon.edu/research/paracomp/tau
Confinement Problem. The confinement problem Isolating entities. Example Problem. Server balances bank accounts for clients Server security issues:
Confinement Problem The confinement problem Isolating entities Virtual machines Sandboxes Covert channels Mitigation 1 Example Problem Server balances bank accounts for clients Server security issues:
Object Instance Profiling
Object Instance Profiling Lubomír Bulej 1,2, Lukáš Marek 1, Petr Tůma 1 Technical report No. 2009/7, November 2009 Version 1.0, November 2009 1 Distributed Systems Research Group, Department of Software
TABLE OF CONTENTS...2 INTRODUCTION...3 APPLETS AND APPLICATIONS...3 JAVABEANS...4 EXCEPTION HANDLING...5 JAVA DATABASE CONNECTIVITY (JDBC)...
Advanced Features Trenton Computer Festival May 1 sstt & 2 n d,, 2004 Michael P.. Redlich Senior Research Technician ExxonMobil Research & Engineering [email protected] Table of Contents
Web Services API Developer Guide
Web Services API Developer Guide Contents 2 Contents Web Services API Developer Guide... 3 Quick Start...4 Examples of the Web Service API Implementation... 13 Exporting Warehouse Data... 14 Exporting
QUIRE: : Lightweight Provenance for Smart Phone Operating Systems
QUIRE: : Lightweight Provenance for Smart Phone Operating Systems Dan S. Wallach Rice University Joint work with Mike Dietz, Yuliy Pisetsky, Shashi Shekhar, and Anhei Shu Android's security is awesome
JVM Performance Study Comparing Oracle HotSpot and Azul Zing Using Apache Cassandra
JVM Performance Study Comparing Oracle HotSpot and Azul Zing Using Apache Cassandra January 2014 Legal Notices Apache Cassandra, Spark and Solr and their respective logos are trademarks or registered trademarks
Tool - 1: Health Center
Tool - 1: Health Center Joseph Amrith Raj http://facebook.com/webspherelibrary 2 Tool - 1: Health Center Table of Contents WebSphere Application Server Troubleshooting... Error! Bookmark not defined. About
Operating Systems Concepts: Chapter 7: Scheduling Strategies
Operating Systems Concepts: Chapter 7: Scheduling Strategies Olav Beckmann Huxley 449 http://www.doc.ic.ac.uk/~ob3 Acknowledgements: There are lots. See end of Chapter 1. Home Page for the course: http://www.doc.ic.ac.uk/~ob3/teaching/operatingsystemsconcepts/
Running and Testing Java EE Applications in Embedded Mode with JupEEter Framework
JOURNAL OF APPLIED COMPUTER SCIENCE Vol. 21 No. 1 (2013), pp. 53-69 Running and Testing Java EE Applications in Embedded Mode with JupEEter Framework Marcin Kwapisz 1 1 Technical University of Lodz Faculty
Hoare-Style Monitors for Java
Hoare-Style Monitors for Java Theodore S Norvell Electrical and Computer Engineering Memorial University February 17, 2006 1 Hoare-Style Monitors Coordinating the interactions of two or more threads can
Generating Automated Test Scripts for AltioLive using QF Test
Generating Automated Test Scripts for AltioLive using QF Test Author: Maryam Umar Contents 1. Introduction 2 2. Setting up QF Test 2 3. Starting an Altio application 3 4. Recording components 5 5. Performing
Computer Architecture
Cache Memory Gábor Horváth 2016. április 27. Budapest associate professor BUTE Dept. Of Networked Systems and Services [email protected] It is the memory,... The memory is a serious bottleneck of Neumann
Why Computers Are Getting Slower (and what we can do about it) Rik van Riel Sr. Software Engineer, Red Hat
Why Computers Are Getting Slower (and what we can do about it) Rik van Riel Sr. Software Engineer, Red Hat Why Computers Are Getting Slower The traditional approach better performance Why computers are
Overlapping Data Transfer With Application Execution on Clusters
Overlapping Data Transfer With Application Execution on Clusters Karen L. Reid and Michael Stumm [email protected] [email protected] Department of Computer Science Department of Electrical and Computer
An Oracle White Paper July 2011. Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide
Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide An Oracle White Paper July 2011 1 Disclaimer The following is intended to outline our general product direction.
Port of the Java Virtual Machine Kaffe to DROPS by using L4Env
Port of the Java Virtual Machine Kaffe to DROPS by using L4Env Alexander Böttcher [email protected] Technische Universität Dresden Faculty of Computer Science Operating System Group July 2004
EVALUATION. WA1844 WebSphere Process Server 7.0 Programming Using WebSphere Integration COPY. Developer
WA1844 WebSphere Process Server 7.0 Programming Using WebSphere Integration Developer Web Age Solutions Inc. USA: 1-877-517-6540 Canada: 1-866-206-4644 Web: http://www.webagesolutions.com Chapter 6 - Introduction
