This document provides an overview of new performance and scalability improvements in Java SE 6, including runtime optimizations like biased locking and lock coarsening, garbage collection enhancements like parallel compaction, and client-side improvements such as reduced application startup time. Benchmark results demonstrate performance gains of 10-20% on SPECjbb2005, I/O tests, and VolanoMark compared to Java SE 5. The document discusses the new features and their impact in detail over several sections.
Abstract
Concurrency is everywhere. Prior to Java 5, concurrency was difficult
and error prone. Since Java 5, it's far more prevalent in our
application code, and through time it's been lurking in open-source
frameworks and containers. Concurrency is also a fundamental part of
Shopzilla's web-site and services ecosystem.
Introduction
Rod Barlow from Shopzilla will explore a brief history of concurrency, and the key
concurrency features and techniques provided by the Java API since
Java 5. Topics covered include Immutability, Atomic References, Blocking
Queues, Locks and Deadlocks. Also covered is Concurrency in
Frameworks, and Shopzilla's Website Concurrency Framework, including
Thread Pools, Executors and Futures.
Understanding Oracle RAC 12c Internals as presented during Oracle Open World 2013 with Mark Scardina.
This is part two of the Oracle RAC 12c "reindeer series" used for OOW13 Oracle RAC-related presentations.
This is an Oracle RAC 12c New Features Overview list used on the OOW13 Oracle RAC and QoS demo booth. It might be useful as a brief overview as to what is new in 12c RAC.
Abstract
Concurrency is everywhere. Prior to Java 5, concurrency was difficult
and error prone. Since Java 5, it's far more prevalent in our
application code, and through time it's been lurking in open-source
frameworks and containers. Concurrency is also a fundamental part of
Shopzilla's web-site and services ecosystem.
Introduction
Rod Barlow from Shopzilla will explore a brief history of concurrency, and the key
concurrency features and techniques provided by the Java API since
Java 5. Topics covered include Immutability, Atomic References, Blocking
Queues, Locks and Deadlocks. Also covered is Concurrency in
Frameworks, and Shopzilla's Website Concurrency Framework, including
Thread Pools, Executors and Futures.
Understanding Oracle RAC 12c Internals as presented during Oracle Open World 2013 with Mark Scardina.
This is part two of the Oracle RAC 12c "reindeer series" used for OOW13 Oracle RAC-related presentations.
This is an Oracle RAC 12c New Features Overview list used on the OOW13 Oracle RAC and QoS demo booth. It might be useful as a brief overview as to what is new in 12c RAC.
Oracle Flex ASM - What’s New and Best Practices by Jim WilliamsMarkus Michalewicz
Oracle Open World (OOW) 2014 Presentation by Jim Williams (Oracle ASM Product Manager) on Oracle Flex ASM - What's New and Best Practices. The presentation provides an overview of enhancements (What's New) in Oracle ASM 12c, especially with respect to Oracle Flex ASM, and provides best practices which can be applied in any environment (Flex or Standard ASM). This presentation has also more background information for some of the configuration recommendations that I made in my "Oracle RAC (12.1.0.2) Operational Best Practices" presentation.
Oracle RAC 12c Best Practices with Customer Example (Sanger) as presented during Oracle Open World 2013 (OOW13).
This is part one of the Oracle RAC 12c "reindeer series" used for OOW13 Oracle RAC-related presentations.
MySQL Group Replication - Ready For Production? (2018-04)Kenny Gryp
At the end of 2016, Oracle released a new Plugin called MySQL Group Replication, which is a new MySQL replication method that aims to provide better High Availability, and built-in failover with consistency guarantees.
I evaluated the initial GA versions back in early 2017. I presented my initial findings with several best practices and concerns with the current implementation which made me state that Group Replication was not quite ready yet.
(https://www.slideshare.net/Grypyrg/my-sql-group-replication)
(Un)lucky as I was, a large part of the attendees were Oracle developers and the months after this, many of these bugs and missing features were implemented in both MySQL 8.0 as well as backported to MySQL 5.7. (Thank you!)
This is a followup presentation on my previous analysis, where I will look into the changes since and re-evaluate the readiness of Group Replication for production usage and provide my insights and opinion on the state of GR.
Oracle WebLogic Server 12c introduces RESTful Management Services, allowing anyone to query and monitor numerous Oracle WebLogic Server metrics from a multitude of programming languages, including mobiles devices. We also introduce a tool we've developed that supports mobile monitoring, management, and alerting of Oracle WebLogic Server and would like to share our architecture and design.
MySQL InnoDB Cluster / ReplicaSet - TutorialKenny Gryp
Tutorial on MySQL InnoDB Cluster and ReplicaSet, a fully integrated product built on MySQL technology, by MySQL.
MySQL InnoDB Cluster and ReplicaSet provide failover/high availability and scaling features baked in; providing an integrated end-to-end solution that is easy to use.
VMworld 2013
Kiran Madnani, VMware
Rawlinson Rivera, VMware
Learn more about VMworld and register at http://www.vmworld.com/index.jspa?src=socmed-vmworld-slideshare
Optimizing your java applications for multi core hardwareIndicThreads
Session Presented at 5th IndicThreads.com Conference On Java held on 10-11 December 2010 in Pune, India
WEB: http://J10.IndicThreads.com
------------
Rising power dissipation in microprocessor chips is leading to a trend towards increasing the number of cores on a chip (multi-core processors) rather than increasing clock frequency as the primary basis for increasing system performance. Consequently the number of threads in commodity hardware has also exploded. This leads to complexity in designing and configuring high performance Java applications that make effective use of new hardware. In this talk we provide a summary of the changes happening in the multi-core world and subsequently discuss about some of the JVM features which exploit the multi-core capabilities of the underlying hardware. We also explain techniques to analyze and optimize your application for highly concurrent systems. Key topics include an overview of Java Virtual Machine features & configuration, ways to correctly leverage java.util.concurrent package to achieve enhanced parallelism for applications in a multi-core environment, operating system issues, virtualization, Java code optimizations and useful profiling tools and techniques.
Takeaways for the Audience
Attendees will leave with a better understanding of the new multi-core world, understanding of Java Virtual Machine features which exploit mulit-core and the techniques they can apply to ensure their Java applications run well in mulit-core environment.
Oracle Flex ASM - What’s New and Best Practices by Jim WilliamsMarkus Michalewicz
Oracle Open World (OOW) 2014 Presentation by Jim Williams (Oracle ASM Product Manager) on Oracle Flex ASM - What's New and Best Practices. The presentation provides an overview of enhancements (What's New) in Oracle ASM 12c, especially with respect to Oracle Flex ASM, and provides best practices which can be applied in any environment (Flex or Standard ASM). This presentation has also more background information for some of the configuration recommendations that I made in my "Oracle RAC (12.1.0.2) Operational Best Practices" presentation.
Oracle RAC 12c Best Practices with Customer Example (Sanger) as presented during Oracle Open World 2013 (OOW13).
This is part one of the Oracle RAC 12c "reindeer series" used for OOW13 Oracle RAC-related presentations.
MySQL Group Replication - Ready For Production? (2018-04)Kenny Gryp
At the end of 2016, Oracle released a new Plugin called MySQL Group Replication, which is a new MySQL replication method that aims to provide better High Availability, and built-in failover with consistency guarantees.
I evaluated the initial GA versions back in early 2017. I presented my initial findings with several best practices and concerns with the current implementation which made me state that Group Replication was not quite ready yet.
(https://www.slideshare.net/Grypyrg/my-sql-group-replication)
(Un)lucky as I was, a large part of the attendees were Oracle developers and the months after this, many of these bugs and missing features were implemented in both MySQL 8.0 as well as backported to MySQL 5.7. (Thank you!)
This is a followup presentation on my previous analysis, where I will look into the changes since and re-evaluate the readiness of Group Replication for production usage and provide my insights and opinion on the state of GR.
Oracle WebLogic Server 12c introduces RESTful Management Services, allowing anyone to query and monitor numerous Oracle WebLogic Server metrics from a multitude of programming languages, including mobiles devices. We also introduce a tool we've developed that supports mobile monitoring, management, and alerting of Oracle WebLogic Server and would like to share our architecture and design.
MySQL InnoDB Cluster / ReplicaSet - TutorialKenny Gryp
Tutorial on MySQL InnoDB Cluster and ReplicaSet, a fully integrated product built on MySQL technology, by MySQL.
MySQL InnoDB Cluster and ReplicaSet provide failover/high availability and scaling features baked in; providing an integrated end-to-end solution that is easy to use.
VMworld 2013
Kiran Madnani, VMware
Rawlinson Rivera, VMware
Learn more about VMworld and register at http://www.vmworld.com/index.jspa?src=socmed-vmworld-slideshare
Optimizing your java applications for multi core hardwareIndicThreads
Session Presented at 5th IndicThreads.com Conference On Java held on 10-11 December 2010 in Pune, India
WEB: http://J10.IndicThreads.com
------------
Rising power dissipation in microprocessor chips is leading to a trend towards increasing the number of cores on a chip (multi-core processors) rather than increasing clock frequency as the primary basis for increasing system performance. Consequently the number of threads in commodity hardware has also exploded. This leads to complexity in designing and configuring high performance Java applications that make effective use of new hardware. In this talk we provide a summary of the changes happening in the multi-core world and subsequently discuss about some of the JVM features which exploit the multi-core capabilities of the underlying hardware. We also explain techniques to analyze and optimize your application for highly concurrent systems. Key topics include an overview of Java Virtual Machine features & configuration, ways to correctly leverage java.util.concurrent package to achieve enhanced parallelism for applications in a multi-core environment, operating system issues, virtualization, Java code optimizations and useful profiling tools and techniques.
Takeaways for the Audience
Attendees will leave with a better understanding of the new multi-core world, understanding of Java Virtual Machine features which exploit mulit-core and the techniques they can apply to ensure their Java applications run well in mulit-core environment.
Java ee7 with apache spark for the world's largest credit card core systems, ...Rakuten Group, Inc.
Financial industry companies need Java EE to power for its business today. Rakuten Card, one of the largest credit card companies in Japan, adopted Java EE 7 for its credit card core systems architecture, from one of the oldest COBOL based mainframe in Japan. Additionally, we chose Apache Spark for super rapid batch execution platform. We completed this big core system migration project successfully.
You can learn why we choose Java EE, and Apache Spark for super rapid batch execution, and our experiences and lessons we learned. How to start such a the big project? Why we choose it, how we ported, how use Apache Spark for performance improvements, and launched with? We’ll answer these questions and any that you may have.
Additionally, we are going to unveil our future roadmap for expanding our systems as well, with the cutting edge technology and standards.
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?Markus Michalewicz
Oracle Real Application Clusters (Oracle RAC) is the preferred availability and scalability solution for Oracle Databases, as most applications can benefit from its capabilities without making any changes. This mini session explains the secrets behind Oracle RAC’s horizontal scaling algorithm, Cache Fusion, and how you can test and ensure that your application is “Oracle RAC ready.”
This deck was first presented in OOW19 as an AskTom theater / mini session and will be presented as a full version in other conferences going forward at which time I will provide an updated version of the deck.
A fairly short (26 slides) presentation covering the GlassFish community and product (v2 and upcoming modular v3) as well as Java EE 5 and upcoming Java EE 6.
The Top 5 Reasons to Deploy Your Applications on Oracle RACMarkus Michalewicz
A presentation for developers, DBAs, and managers. This presentation was first presented in course of the AIOUG Maximum Availability Architecture (MAA)-focus month August 2021. The first reason might surprise you!
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL SupportMysql User Camp
This slide was presented at Mysql User Camp Event on 20-June-14 at Oracle bangalore. This presentation gives a good insight about New Features in Mysql 5.7 DMR 4 and Nosql Support in Mysql.
At OOW 2015 Oracle has released SOA Suite 12.2.1. This new release provides several interesting new features for developers such as end-to-end REST support, JavaScript support and an XSLT debugger. There are also several new features useful for the operations department such as Integration Workload Statistics, Circuit breaker, In-Memory SOA and WebLogic parallel deployments. In this presentation I will explain and demonstrate these new features and provide several use-cases were customers can greatly benefit by implementing them. This presentation is especially useful for developers, people in operations and architects to help them realize the benefits of implementing SOA Suite 12.2.1.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
UiPath Test Automation using UiPath Test Suite series, part 6
Java Standard Edition 6 Performance
1. Java SE 6 Performance White Paper
Java™ Platform Performance Engineering
Sun Microsystems, Inc.
Table of Contents
1 Introduction
2 New Features and Performance Enhancements
2.1 Runtime Performance Improvements
2.1.1 Biased Locking
2.1.2 Lock Coarsening
2.1.3 Adaptive Spinning
2.1.4 Support for large page heap on x86 and amd64 platforms
2.1.5 Array Copy Performance Improvements 5007322|6245890|6245890
2.1.6 Background Compilation in HotSpot ™ Client compiler
2.1.7 New Linear Scan Register Allocation Algorithm for the HotSpot™ Client Compiler
2.2 Garbage Collection Performance Enhancements
2.2.1 Parallel Compaction Collector
2.2.2 Concurrent Low Pause Garbage Collector Improvements
2.3 Ergonomics in the 6.0 Java Virtual Machine
2.4 Client-side Performance Features and Improvements
2.4.1 New Class List for Class Data Sharing
2.4.2 Performance improvements to the boot class loader
2.4.3 Splash Screen Functionality
2.4.4 Swing's true double buffering
2.4.5 Improving rendering on windows systems
3 New Platform Support
3.1 Operating Environments
3.1.1 Windows Vista
4 Going Further
4.1 Java Performance Portal
4.2 jvmstat 3.0
4.3 Java SE 6 Documentation
4.4 Performance Monitoring and Management
4.4.1 DTrace Probes in HotSpot VM
4.4.2 New monitoring, management and diagnosability features
2. 4.4.3 Observability Using Java SE 6 on Solaris OS
4.5 Benchmark Disclosures
4.5.1 SPECjbb 2005
4.5.2 VolanoMark™ 2.5
1 Introduction
One of the principal design centers for Java Platform, Standard Edition 6 (Java SE 6) was to
improve performance and scalability by targeting performance deficiencies highlighted by
some of the most popular Java benchmarks currently available and also by working closely
with the Java community to determine key areas where performance enhancements would
have the most impact.
This guide gives an overview of the new performance and scalability improvements in Java
Standard Edition 6 along with various industry standard and internally developed
benchmark results to demonstrate the impact of these improvements.
2 New Features and Performance
Enhancements
Java SE 6 includes several new features and enhancements to improve performance in many
areas of the platform. Improvements include: synchronization performance optimizations,
compiler performance optimizations, the new Parallel Compaction Collector, better
ergonomics for the Concurrent Low Pause Collector and application start-up performance.
2.1 Runtime performance optimizations
2.1.1 Biased locking
Biased Locking is a class of optimizations that improves uncontended synchronization
performance by eliminating atomic operations associated with the Java language’s
synchronization primitives. These optimizations rely on the property that not only are most
monitors uncontended, they are locked by at most one thread during their lifetime.
3. An object is "biased" toward the thread which first acquires its monitor via a monitorenter
bytecode or synchronized method invocation; subsequent monitor-related operations can be
performed by that thread without using atomic operations resulting in much better
performance, particularly on multiprocessor machines.
Locking attempts by threads other that the one toward which the object is "biased" will
cause a relatively expensive operation whereby the bias is revoked. The benefit of the
elimination of atomic operations must exceed the penalty of revocation for this optimization
to be profitable.
Applications with substantial amounts of uncontended synchronization may attain
significant speedups while others with certain patterns of locking may see slowdowns.
Biased Locking is enabled by default in Java SE 6 and later. To disable Biased Locking,
please add to the command line -XX:-UseBiasedLocking .
For more on Biased Locking, please refer to the ACM OOPSLA 2006 paper by Kenneth
Russell and David Detlefs: "Eliminating Synchronization-Related Atomic Operations with
Biased Locking and Bulk Rebiasing".
2.1.2 Lock coarsening
There are some patterns of locking where a lock is released and then reacquired within a
piece of code where no observable operations occur in between. The lock coarsening
optimization technique implemented in hotspot eliminates the unlock and relock operations
in those situations (when a lock is released and then reacquired with no meaningful work
done in between those operations). It basically reduces the amount of synchronization work
by enlarging an existing synchronized region. Doing this around a loop could cause a lock to
be held for long periods of times, so the technique is only used on non-looping control flow.
This feature is on by default. To disable it, please add the following option to the command
line: -XX:-EliminateLocks
2.1.3 Adaptive spinning
Adaptive spinning is an optimization technique where a two-phase spin-then-block strategy
is used by threads attempting a contended synchronized enter operation. This technique
enables threads to avoid undesirable effects that impact performance such as context
switching and repopulation of Translation Lookaside Buffers (TLBs). It is “adaptive"
because the duration of the spin is determined by policy decisions based on factors such as
the rate of success and/or failure of recent spin attempts on the same monitor and the state of
the current lock owner.
4. For more on Adaptive Spinning, please refer to the presentation by Dave Dice:
"Synchronization in Java SE 6"
2.1.4 Support for large page heap on x86 and amd64 platforms
Java SE 6 supports large page heaps on x86 and amd64 platforms. Large page heaps help
the Operating System avoid costly Translation-Lookaside Buffer (TLB) misses to enable
memory-intensive applications perform better (a single TLB entry can represent a larger
memory range).
Please note that large page memory can sometimes negatively impact system performance.
For example, when a large amount of memory is pinned by an application, it may create a
shortage of regular memory and cause excessive paging in other applications and slow down
the entire system. Also please note for a system that has been up for a long time, excessive
fragmentation can make it impossible to reserve enough large page memory. When it
happens, the OS may revert to using regular pages. Furthermore, this effect can be
minimized by setting -Xms == -Xmx, -XX:PermSize == -XX:MaxPermSize and -
XX:InitialCodeCacheSize == -XX:ReserverCodeCacheSize .
Another possible drawback of large pages is that the default sizes of the perm gen and code
cache might be larger as a result of using a large page; this is particularly noticeable with
page sizes that are larger than the default sizes for these memory areas.
Support for large pages is enabled by default on Solaris. It's off by default on Windows and
Linux. Please add to the command line -XX:+UseLargePages to enable this feature. Please
note that Operating System configuration changes may be required to enable large pages.
For more information, please refer to the documentation on Java Support for Large Memory
Pages on Sun Developer Network.
2.1.5 Array Copy Performance Improvements
The method instruction System.arraycopy() was further enhanced in Java SE 6. Hand-coded
assembly stubs are now used for each type size when no overlap occurs.
2.1.6 Background Compilation in HotSpot™ Client Compiler
Prior to Java SE 6, the HotSpot Client compiler did not compile Java methods in the
background by default. As a consequence, Hyperthreaded or Multi-processing systems
couldn't take advantage of spare CPU cycles to optimize Java code execution speed.
5. Background compilation is now enabled in the Java SE 6 HotSpot client compiler.
2.1.7 New Linear Scan Register Allocation Algorithm for the HotSpot™ Client
Compiler
The HotSpot client compiler features a new linear scan register allocation algorithm that
relies on static single assignment (SSA) form. This has the added advantage of providing a
simplified data flow analysis and shorter live intervals which yields a better tradeoff
between compilation time and program runtime. This new algorithm has provided
performance improvements of about 10% on many internal and industry-standard
benchmarks.
For more information on this new new feature, please refer to the following paper: Linear
Scan Register Allocation for the Java HotSpot™ Client Compiler
2.2 Garbage Collection
2.2.1 Parallel Compaction Collector
Parallel compaction is a feature that enables the parallel collector to perform major
collections in parallel resulting in lower garbage collection overhead and better application
performance particularly for applications with large heaps. It is best suited to platforms with
two or more processors or hardware threads.
Previous to Java SE 6, while the young generation was collected in parallel, major
collections were performed using a single thread. For applications with frequent major
collections, this adversely affected scalability.
Parallel compaction is used by default in JDK 6, but can be enabled by adding the option -
XX:+UseParallelOldGC to the command line in JDK 5 update 6 and later.
Please note that parallel compaction is not available in combination with the concurrent
mark sweep collector; it can only be used with the parallel young generation collector (-
XX:+UseParallelGC). The documents referenced below provide more information on the
available collectors and recommendations for their use.
For more on the Parallel Compaction Collection, please refer to the Java SE 6 release notes.
For more information on garbage collection in general, the HotSpot memory management
whitepaper describes the various collectors available in HotSpot and includes
recommendations on when to use parallel compaction as well as a high-level description of
the algorithm.
2.2.2 Concurrent Low Pause Collector: Concurrent Mark Sweep Collector
6. Enhancements
The Concurrent Mark Sweep Collector has been enhanced to provide concurrent collection
for the System.gc() and Runtime.getRuntime().gc() method instructions. Prior to Java SE 6,
these methods stopped all application threads in order to collect the entire heap which
sometimes resulted in lengthy pause times in applications with large heaps. In line with the
goals of the Concurrent Mark Sweep Collector, this new feature is enabling the collector to
keep pauses as short as possible during full heap collection.
To enable this feature, add the option -XX:+ExplicitGCInvokesConcurrent to the Java
command line.
The concurrent marking task in the CMS collector is now performed in parallel on platforms
with multiple processors . This significantly reduces the duration of the concurrent marking
cycle and enables the collector to better support applications with larger numbers of threads
and high object allocation rates, particularly on large multiprocessor machines.
For more on these new features, please refer to the Java SE 6 release notes.
2.3 Ergonomics in the 6.0 Java Virtual Machine
In Java SE 5, platform-dependent default selections for the garbage collector, heap size, and
runtime compiler were introduced to better match the needs of different types of
applications while requiring less command-line tuning. New tuning flags were also
introduced to allow users to specify a desired behavior which in turn enabled the garbage
collector to dynamically tune the size of the heap to meet the specified behavior. In Java SE
6, the default selections have been further enhanced to improve application runtime
performance and garbage collector efficiency.
The chart below compares out-of-the-box SPECjbb2005™ performance between Java SE 5
and Java SE 6 Update 2. This test was conducted on a Sun Fire V890 with 24 x 1.5 GHz
UltraSparc CPU's and 64 GB RAM running Solaris 10:
7. In each case the benchmarks were ran without any performance flags. Please see the
SPECjbb 2005 Benchmark Disclosure
We also compared I/O performance between Java SE 5 and Java SE 6 Update 2. This test
was conducted on
a Sun Fire V890 with 24 x 1.5 GHz UltraSparc CPU's and 64 GB RAM running Solaris 10:
8. In each case the benchmarks were ran without any performance flags.
We compared VolanoMark™ 2.5 performance between Java SE 5 and Java SE 6.
VolanoMark is a pure Java benchmark that measures both (a) raw server performance and
(b) server network scalability performance. In this benchmark, the client side simulates up
to 4,000 concurrent socket connections. Only those VMs that successfully scale up to 4,000
connections pass the test. In both the raw performance and network scalability tests, the
higher the score, the better the result.
This test was conducted on a Sun Fire V890 with 24 x 1.5 GHz UltraSparc CPU's and 64
GB RAM running Solaris 10:
9. In each case we ran the benchmark in loopback mode without any performance flags. The
result shown is based upon relative throughput (messages per second with 400 loopback
connections).
The full Java version for Java SE 5 is:
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode)
The full Java version for Java SE 6 is:
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b05)
Java HotSpot(TM) Client VM (build 1.6.0_02-b05, mixed mode)
Please see the VolanoMark™ 2.5 Benchmark Disclosure
10. Some other improvements in Java SE 6 include:
On server-class machines, a specified maximum pause time goal of less than or
equal to 1 second will enable the Concurrent Mark Sweep Collector.
The garbage collector is allowed to move the boundary between the tenured
generation and the young generation as needed (within prescribed limits) to better
achieve performance goals. This mechanism is off by default; to activate it add this
to the command line: option -XX:+UseAdaptiveGCBoundary .
Promotion failure handling is turned on by default for the serial (-
XX:+UseSerialGC) and Parallel Young Generation (-XX:+ParNewGC) collectors.
This feature allows the collector to start a minor collection and then back out of it if
there is not enough space in the tenured generation to promote all the objects that
need to be promoted.
An alternative order for copying objects from the young to the tenured generation in
the parallel scavenge collector has been implemented. The intent of this feature is to
decrease cache misses for objects accessed in the tenured generation.This feature is
on by default. To disable it, please add this to the command line -XX:-
UseDepthFirstScavengeOrder
The default young generation size has been increased to 1MB on x86 platforms
The Concurrent Mark Sweep Collector's default Young Generation size has been
increased.
The minimum young generation size was increased from 4MB to 16MB.
The proportion of the overall heap used for the young generation was increased from
1/15 to 1/7.
The CMS collector is now using the survivor spaces by default, and their default size
was increased.
The primary effect of these changes is to improve application performance by
reducing garbage collection overhead. However, because the default young
generation size is larger, applications may also see larger young generation pause
times and a larger memory footprint.
2.4 Client-side Performance Features and Improvements
2.4.1 New class list for Class Data Sharing
To reduce application startup time and footprint, Java SE 5.0 introduced a feature called
"class data sharing" (CDS). On 32-bit platforms, this mechanism works as follows: the Sun
provided installer loads a set of classes from the system jar (the jar file containing all the
Java class library, called rt.jar) file into a private internal representation, and dumps that
representation to a file, called a "shared archive". On subsequent JVM invocations, the
shared archive is memory-mapped in, saving the cost of loading those classes and allowing
much of the Java Virtual Machine's metadata for these classes to be shared among multiple
11. JVM processes.
In Java SE 6.0, the list of classes in the "shared archive" has been updated to better reflect
the changes to the system jar file.
2.4.2 Improvements to the boot class loader
The Java Virtual Machine's boot and extension class loaders have been enhanced to improve
the cold-start time of Java applications. Prior to Java SE 6, opening the system jar file
caused the Java Virtual Machine to read a one-megabyte ZIP index file that translated into a
lot of disk seek activity when the file was not in the disk cache. With "class data sharing"
enabled, the Java Virtual Machine is now provided with a "meta-index" file (located in
jre/lib) that contains high-level information about which packages (or package prefixes) are
contained in which jar files.
This helps the JVM avoid opening all of the jar files on the boot and extension class paths
when a Java application class is loaded. Check bug 6278968} for more details.
Below we show a chart comparing application start-up time performance between Java SE 5
and Java SE 6 Update 2. This test was conducted on an Intel Core 2 Duo 2.66GHz desktop
machine with 1GB of memory:
12. The application start-up comparison above shows relative performance (smaller is better)
and in each case the benchmarks were ran without any performance flags.
We also compared memory footprint size required between Java SE 5 and Java SE 6 Update
2. This test was conducted on
an Intel Core 2 Duo 2.66GHz desktop machine with 1GB of memory:
13. The footprint comparison above shows relative performance (smaller is better) and in each
case the benchmarks were run without any performance flags.
Despite the addition of many new features, the Java Virtual Machine's core memory usage
has been pared down to make the actual memory impact on your system even lower than
with Java SE 5
2.4.3 Splash Screen Functionality
Java SE 6 provides a solution that allows an application to show a splash screen before the
virtual machine starts. Now, a Java application launcher is able to decode an image and
display it in a simple non-decorated window.
2.4.4 Swing's true double buffering
Swing's true double buffering has now been enabled. Swing used to provide double
buffering on an application basis, it now provides it on a per-window basis and native
exposed events are copied directly from the double buffer. This significantly improves
14. Swing performance, especially on remote servers.
Please see the Scott Violet's Blog for full details.
2.4.5 Improving rendering on windows systems
The UxTheme API, which allows standard Look&Feel rendering of windows controls on
Microsoft Windows systems, has been adopted to improve the fidelity of Swing Systems
Look & Feels.
3 New Platform Support
Please see the Supported System Configurations chart for full details.
3.1 Operating Environments
3.1.1 Windows Vista
Java SE 6 is supported on Windows Vista Ultimate Edition, Home Premium Edition, Home
Basic Edition, Enterprise Edition and Business Edition in addition to Windows XP Home
and Professional, 2000 Professional, 2000 Server, and 2003 Server.
4 Going Further
4.1 Java Performance Portal
For the latest in Java Performance best practices, documentation, tools, FAQs, code
samples, White Papers and other Java performance news check out the Java Performance
Portal .
Three especially relevant performance links for Java SE 6.0 are given here:
4.1.1 Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
The Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning document expands
15. on GC tuning concepts and techniques for Java SE 6 that were introduced in the Tuning
Garbage Collection with the 5.0 Java Virtual Machine document.
4.1.2 jvmstat 3.0
The jvmstat 3.0 home page documents the lightweight performance monitoring capabilities
that are built into Java SE 6 and explains how to use these tools to monitor not only for the
6.0 HotSpot Java Virtual Machines but also HotSpot 1.5.0, 1.4.2 and 1.4.1 JVM's.
4.2 Java SE 6 Documentation
Be sure to check out the wealth of Java SE 6 Documentation including the New Features
and Enhancements and the Java Platform, Standard Edition 6 Overview.
4.3 Performance Monitoring and Management
4.3.1 DTrace Probes in HotSpot VM
4.3.2 New monitoring, management and diagnosability features
4.3.3 Observability Using Java SE 6 on Solaris OS
4.4 Benchmark Disclosure
4.4.1 SPECjbb 2005
SPECjbb2000 is a benchmark from the Standard Performance Evaluation Corporation
(SPEC). The performance referenced is based on Sun internal software testing conforming
to the testing methodologies listed above.
For the latest SPECjbb2005 results visit http://www.spec.org/osg/jbb2005.