> 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.
Tyler Steele has updated the pull request incrementally with 19 additional
commits since the last revision:
- Merge branch 'JDK-8203290' of github.com:backwaterred/jdk into JDK-8203290
- Merge branch 'JDK-8203290' into JDK-8203290-testing
- Merge branch 'JDK-8203290-testing' of github.com:backwaterred/jdk into
JDK-8203290-testing
- Reverts flags-cflags.m4
- wip
- wip
- Housekeeping
- Minor cleanups
- Fetch additional SystemProcess info from /proc/<pid>/psinfo file
- Implement Event creation for loaded modules (fixes
TestNativeLibrariesEvent failure)
- Confirm working ThreadCrashPro on AIX
- Add missing functionality to libperfstat, refactor os_perf_aix
to use this project library.
- [TODO] review changes to flags-cflags.m4. Only keep changes required
for JFR build.
- Housekeeping
- Fetch additional SystemProcess info from /proc/<pid>/psinfo file
- Implement Event creation for loaded modules (fixes
TestNativeLibrariesEvent failure)
- Confirm working ThreadCrashPro on AIX
- Add missing functionality to libperfstat, refactor os_perf_aix
to use this project library.
- Revert uneeded changes to flags-cflags.m4.
- Merge branch 'JDK-8203290' into JDK-8203290-testing
- Fix issue where network_interface pointer is not updated to newly created
list
- ... and 9 more: https://git.openjdk.java.net/jdk/compare/ceabb571...e18d56bc
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/6885/files
- new: https://git.openjdk.java.net/jdk/pull/6885/files/ceabb571..e18d56bc
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=6885&range=08
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=6885&range=07-08
Stats: 410 lines in 8 files changed: 339 ins; 16 del; 55 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