260 likes | 402 Views
Monitoring of resource consumption in Java-based application servers. Jarle Hulaas Jarle.Hulaas@epfl.ch Swiss Federal Institute of Technology in Lausanne (EPFL) Switzerland (Formerly at CUI, Uni Geneva) Dimitri Kalas kalas8@etu.unige.ch University of Geneva Switzerland.
E N D
Monitoring of resource consumptionin Java-based application servers Jarle HulaasJarle.Hulaas@epfl.ch Swiss Federal Institute of Technology in Lausanne (EPFL) Switzerland (Formerly at CUI, Uni Geneva) Dimitri Kalaskalas8@etu.unige.ch University of Geneva Switzerland 10th HP-OVUA workshop, Geneva, Switzerland July 7, 2003
Overview • What is Resource Management ? • Our General Approach • Some Details on our J-RAF Tool • Management of a Servlet Engine • Adapting J-RAF to Tomcat • Assessment 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
What is Resource Management ? • Physical resources: • CPU • (Virtual) Memory • Network bandwidth • Management of resources: • Monitoring of consumption • Controlling (i.e. limiting) it 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Benefits of Resource Management • Software development • Monitoring and profiling of distributed applications • Security • Prevention against Denial-of-Service attacks • Reliability • More robust behaviours in presence of resource shortage • Accountability (liability) for resource consumption • E-commerce • Billing for resource consumption • Quality-of-Service guarantees, load balancing 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
www. .org The Java Resource Accounting Framework, 2nd edition What about Java ? • Problem: Java offers no support for resource management ! • Our solution: portable resource management through byte-code rewriting schemes 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Per-thread accounting objects Meta-level Mem CPU Net Execution hooks Rewrite bytecode Transformed, resource-aware version of Application OriginalJava Application(compiled) General Approach 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland Execute
Our Solution • Program transformations to expose resource consumption • Application classes and libraries, incl. JDK • Rewritten programs unknowingly update accounting objects • CPU: count the number of executed JVM instructions • Memory: redirection of memory allocations • Network bandwidth: wrapper libraries 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
1 2 3 1 (size=2) 4 2 (size=3) 3 (size=6) 4 (size=3) 5 5 (size=3) 6 7 (size=3) 6 (size=2) 7 8 8 (size=1) Class Analysis for CPU monitoring 0 bipush 10 2 istore_1 3 iconst_1 6 istore_3 7 goto 25 10 invokestatic #2 <Method java.lang.Thread currentThread()> 13 pop 14 ldc2_w #3 <Long 100> 17 bipush 100 19 invokestatic #5 <Method void sleep(long, int)> 22 iinc 3 1 25 iload_3 26 iconst_1 27 if_icmple 10 30 iload_2 31 iconst_1 32 if_icmpl1 3 35 iinc 2 -1 38 goto 44 41 astore_2 42 iconst_0 43 istore 3 44 return Exception table: from to target type 3 38 41 <Class java.lang.Exception> 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Method Rewriting by J-RAF Object f (int x, MemAccObj mem, CPUAccObj cpu) { cpu.usage += 8; if (x < 0) { cpu.usage += 8; return null; } else { cpu.usage += 26; int y = g(x, mem, cpu); mem.checkAllocation(SIZEOF_FOO); Object o = new Foo(y, mem, cpu); mem.register(o); return o; } } 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Resource-aware Application High-level Resource Accounting & Control Low-level Resource Acc&Control (Memory, CPU) Resource-aware JDK JVM Native Code Generic Application Structure Bytecode Rewriting 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
J-RAF in Action • CPU monitoring for some multi-threaded applet 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Validation of the J-RAF approach • Tested on J2SE … • arbitrary applications, as well as applet and mobile agent environments • Sun 1.4.1 HotSpot Virtual Machine,IBM JDK 1.3.1 • … and on J2ME (embedded devices) … • dedicated system with Java processor from aJile Systems 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Benchmarks for CPU accounting SPEC JVM98 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Resource Mgmt for Servlet Engines Resource Mgmt for Servlet Engines Servlet Engines Access rights HTML, streams Requests Reporting 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland End-user Provider’s Database
Objectives • Fine-grained basis for: • Usage-based billing(pricing policies are out of our scope) • Identification of bottlenecks • Badly programmed or malicious apps • Load-balancing on clusters of servers 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Required J-RAF extensions • Define a servlet as a coherent set of threads • Flexible concept of client (end-user) context • Enhanced detection of bandwidth consumption • Remote reporting 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Servlets as sets of threads • How to detect the start and end of a request processing ? • Special rewriting of methods like doGet and doPost, to cope with Tomcat’s thread pooling • Register and account for created sub-threads • Add a RequestAccount class for aggregating usage of all these threads 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
User-level accounting • Periodically do: • Summarize usage of all individual threads inside a servlet • Summarize usage of all servlets run on behalf of a given user • Report this usage to a database • Problems that had to be solved: • Overflow of counters at all levels • Calibration of timeslices according to processing power 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
User context • Allow servlet programmers to define their own: • Authentication schemes, IP-based or password-based • Programmer must implement a ClientID interface • Read usage rights from database • User data reporting schemes • Allow extensible reporting of user data, e.g. session IDs 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Bytecode Rewriting Resource-aware Servlet High-level Resource Accounting & Control Low-level Resource Acc&Control (Memory, CPU) Resource-aware Servlet Engine Resource-aware JDK JVM Native Code Resulting Servlet Structure 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Sample Log for a Given Client Servlet name Timestamp JVM ops/s In+Out Bandwidth [Bytes/s] 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Performance Testing • Setting: Pentium-class PCs in a 100Mb LAN, Tomcat 4.1, MySQL 4.0.13 • Generate many simultaneous connections with Jmeter 1.8.1 • Different test servlets: • Output of an empty page • Streaming of factorials • Download, ZIP-compress, and output a web page 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Preliminary Performance Results 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland Overhead due to CPU monitoring • Average overhead: same order of magnitude as for standard Java applications (~ 30 %)
Cons • Purely a Java-level framework: • Difficult to account for resources consumed by native code • No real-time / resource reservation capabilities • Increase of code size • Restrictions on what servlets may do • to play with thread priorities • to perform introspection to inspect or modify accounting objects 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Conclusions • Initial work towards fine-grained management of Java servers • Reasonable overheads • Future work: • Finalize management of memory • Improve control vs monitoring • Support for clusters of servers www.jraf2.org 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland
Thank you for your attention ! 7/7/2003 10th HP-OVUA workshop, Geneva, Switzerland