Conversation
f8bba00 to
4849a4d
Compare
192f8c3 to
1311f37
Compare
|
Depends on eclipse-omr/omr#8190 |
|
Almost ready for review. We’re seeing the same performance gains as with the previous prototype build; however, I still need to launch test buckets for these changes. I'm currently unable to launch zOS builds due to infra issues but I have launched test builds for other platforms. I’ll remove the WIP label once I’ve confirmed that this PR doesn’t introduce any failures. |
|
My personal build for non-z/OS platforms don't show any failures due to these changes. I tested sanity.functional, sanity.system, extended.functional and extended.system. There were 3 failures, 2 of which are already being tracked
MiniMix_extended_3h_0 failure: |
|
My zoS test buckets didn't complete due to infra issues, I have relaunched them. Since I didn’t see any z/OS failures in my earlier testing, I’ll mark this PR as ready for review while the tests finish running. |
|
looking into the Clang Format Check failure |
ab5ef00 to
caff59e
Compare
e0819e0 to
883d0e5
Compare
|
Format checks are passing, this is ready for review |
r30shah
left a comment
There was a problem hiding this comment.
Quick check through, changes overall looks ok to me, though I will review this together with OMR counter part, but small question,
| double cpuCapacity = 0.0; | ||
| if (0 == portLibraryStatusSys) { | ||
| portLibraryStatusSys = j9sysinfo_get_CPU_capacity(&cpuCapacity); | ||
| machineCpuStats->numberOfCpus = cpuCapacity; |
There was a problem hiding this comment.
There is implicit casting here. I assume this numberOfCpus being used later on to calculate the load, can you confirm trunacting this value does not impact - i.e. this is throwing away the factor for SMT gain.
There was a problem hiding this comment.
I have updated the code to query CPU capacity every time instead of caching it in machineCpuStats->numberOfCpus. We set machineCpuStats->numberOfCpus to -1 as an indicator that it isn't valid. I chose this approach over changing the member’s type to avoid the added complexity of having platform-dependent types.
0fbe483 to
ff521e6
Compare
This change enhances CPU awareness on z/OS by adding support for zIIP processors, SMT-2 detection, and more accurate CPU capacity calculations. Key changes: - Add helpers to retrieve zIIP and GCP counts separately - Extend z/OS control block mappings (J9CSD, J9CVTSVT, J9IRARMCTZ, J9CCT) to access CPU configuration data - Implement SMT-2 detection (isSMTEnabled()) with capacity adjustment using SMT_2_GAIN_FACTOR (1.3) - Add retrieveZOSCPUCapacity() that scales GCP contribution by 0.1 when zIIPs are available, reflecting Java's preference for zIIP execution - Include GCP capacity only when IIPHONORPRIORITY is enabled - Replace direct CCT field access with helper functions for CPU load retrieval - Add new port library APIs omrsysinfo_get_CPU_usage_stats() and omrsysinfo_get_CPU_capacity() - Add CPUUsageStats structure containing z/OS-specific metrics including per-process utilization, GCP/zIIP loads, capacities, and IIPHONORPRIORITY status - Update calculateProcessCpuLoad() to use adjusted CPU capacity instead of raw CPU count - Add TR_VerboseCPUStats verbose option for z/OS CPU statistics logging Signed-off-by: Shubham Verma <shubhamv.sv@gmail.com>
ff521e6 to
3171085
Compare
Enhance z/OS CPU monitoring by utilizing system control structures to
directly retrieve CPU load metrics. This provides more accurate CPU
utilization data for JIT compilation decisions and verbose logging.
Key changes:
port library APIs on z/OS to retrieve CPU metrics from control structures
including zIIP count, capacity, GCP count, utilization percentages,
and process timing information
This implementation leverages z/OS-specific control structures (CVT, CSD)
to provide accurate CPU metrics that account for zIIP processors, SMT
configurations, and the SVT normalization factor.
Signed-off-by: Shubham Verma shubhamv.sv@gmail.com