Just in time for the holidays I have completed an implementation of the JFR 
functionality for AIX. As a side note, this is my first submission to OpenJDK 👋

### Implementation notes and alternatives considered

After modifying the build system to allow the --enable-jvm-feature-jfr to work 
on AIX, my task was to implement the interfaces from os_perf.hpp. The 
os_perf_aix.cpp implementation that existed was, I believe, a copy of the Linux 
implementation. A review of the code in that file showed that NetworkInterface, 
CPUPerformanceInterface, and SystemProcessInterface would require modification 
to work on AIX. Using the Linux implementation as a guide, I initially expected 
to use files from the aix procfs like /proc/<pid>/psinfo, and 
/proc/<pid>/status in a manner similar to the Linux implementation. However, I 
ended up using libperfstat for all functionality required by the interfaces.

### Testing

Testing for JFR seems to be quite light in the repo both before and after this 
change. In addition to performing manual testing, I have added some basic 
sanity checks that ensure events can be created and committed (using jtreg), 
and performs some basic checks on the results of the interface member functions 
(using gtest).

### More notes

I've sent an email to the JFR group about a TOC overflow warning I encountered 
while building (for the release server target). I believe the fix is to pass 
-qpic=large when using the xlc toolchain, but my modifications to 
flags-cflags.m4 have not been successful in removing this warning.

-------------

Commit messages:
 - 8203290: Implements Java Flight Recorder on AIX

Changes: https://git.openjdk.java.net/jdk/pull/6885/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=6885&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8203290
  Stats: 1090 lines in 7 files changed: 425 ins; 500 del; 165 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6885.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6885/head:pull/6885

PR: https://git.openjdk.java.net/jdk/pull/6885

Reply via email to