This is blog 7 in the OpenJ9 locking/synchronization series (blog 1). It covers an optimization related to the object-monitors (blog 2), which are used to enforce synchronization for the Java objects. Before reading this blog, one needs to have knowledge about the object-monitors. Please read the blog on the object-monitors before reading this blog. In…
Author: sbabneet
Class-Specific Spin Parameters (CSSP)
This is blog 8 in the OpenJ9 locking/synchronization series (blog 1). This blog covers an OpenJ9 feature which allows spin control parameters to be varied on a per-class basis. Before reading this blog, one needs to know about the system-monitors (blog 2), object-monitors (blog 3), three-tier spinning (blog 4) and adaptive spinning (blog 5). Please…
Three-Tier Spinning
This is blog 4 in the OpenJ9 locking/synchronization series (blog 1). Before reading this blog, one needs to know about the system-monitors (blog 2), GC-spinlocks (blog 2), and object-monitors (blog 3). Please read the aforementioned blogs before reading this blog. Three-tier spinning is used to make acquiring locks more efficient when the lock contention is…
Inspecting OpenJ9 performance with perf on Linux
Performance is critical to software. Software must perform better than its competitors to gain a competitive edge and acquire a greater market share. Improving performance and resolving performance regression issues for large software systems can be challenging and time consuming. Profiling tools such as Linux perf can help substantially reduce the time to evaluate and…
Debugging OpenJ9 in Docker with GDB
Recently, one of my OpenJ9 commits caused intermittent segmentation faults with Open Liberty. I created the test environment to recreate the failure in a Docker container, and I decided to use GDB to further investigate and identify the source of the segmentation fault. To my surprise, I found that GDB doesn’t work by default in…