On Mon, 14 Feb 2022 23:44:40 GMT, Tyler Steele <d...@openjdk.java.net> wrote:
>> 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 with a new target base due to a > merge or a rebase. The pull request now contains eight commits: > > - Adds Oracle & IBM copyrights as per guidance from IBM legal team. > - Removes incorrect Oracle copyright line from libperfstat_aix.cpp/hpp, and > loadlib_aix.hpp > - Edit thread_aix.cpp to match thread_linux.cpp in > pd_get_top_fram_for_profiling and ...for_signal_handler > - Addresses issues from review and other sm fixes > > - Adds commenting in regards to memory handling by SystemProcess & > NetworkInterface classes > - Replaces explicit initialization and copy of structs with memcpy > and memset as appropriate > - Renames internal struct definitions in os_perf_aix > - Other minor fixes > - Changes macoss -> macosx in problem list > - Refactors loadlib_aix: Removes redundant c++ class > - Merge branch 'master' into JDK-8203290 > - Implements JFR on AIX > > - Implements interfaces from os_perf.hpp in os_perf_aix.cpp > - Updates libperfstat_aix to contain functionality needed by os_perf_aix > - Implements missing functionality in loadlib_aix (Fixes failure noted > by TestNativeLibraies.java) > - Removes platform checks for --enable-feature-jfr (Now enable-able on > all platforms) > - Enables TestNetworkUtilizationEvent.java which now passes on AIX > - Updates AIX JavaThread::pd_get_top_frame_for_profiling with changes from > Linux Updated to remove IBM from the copyright header when only a small change to the file took place. I am ready to integrate, but I will leave it open for a day or so to allow for any more comments. ------------- PR: https://git.openjdk.java.net/jdk/pull/6885