This is an automated email from the ASF dual-hosted git repository.
cameronlee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/samza.git
The following commit(s) were added to refs/heads/master by this push:
new e37fe259c SAMZA-2730: Add process CPU usage metric using units of
processor count instead of percentage (#1593)
e37fe259c is described below
commit e37fe259cede587928cc0d543fc8384250c7e113
Author: Cameron Lee <[email protected]>
AuthorDate: Wed Apr 6 11:02:29 2022 -0700
SAMZA-2730: Add process CPU usage metric using units of processor count
instead of percentage (#1593)
API/usage changes: (backwards compatible) An extra metric
process-cpu-usage-processors is now available which reports the number of
processors being used.
---
docs/learn/documentation/versioned/container/metrics-table.html | 4 ++++
.../src/main/scala/org/apache/samza/metrics/JvmMetrics.scala | 9 ++++++---
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/docs/learn/documentation/versioned/container/metrics-table.html
b/docs/learn/documentation/versioned/container/metrics-table.html
index b7cd752b4..869dd7d9a 100644
--- a/docs/learn/documentation/versioned/container/metrics-table.html
+++ b/docs/learn/documentation/versioned/container/metrics-table.html
@@ -355,6 +355,10 @@
<td>process-cpu-usage</td>
<td>Current CPU usage of the JVM process as a percentage from 0 to
100. The percentage represents the proportion of executed ticks by the JVM
process to the total ticks across all CPUs. A negative number indicates the
value was not available from the operating system. For more detail, see the
JavaDoc for com.sun.management.OperatingSystemMXBean.</td>
</tr>
+ <tr>
+ <td>process-cpu-usage-processors</td>
+ <td>Number of processors currently in use by the JVM process,
calculated by multiplying the usage percentage by the total number of
processors. A negative number indicates that there was not enough information
available to calculate this value. For more detail, see the JavaDoc for
com.sun.management.OperatingSystemMXBean.</td>
+ </tr>
<tr>
<td>system-cpu-usage</td>
<td>Current CPU usage of the all processes in the whole system as a
percentage from 0 to 100. The percentage represents the proportion of executed
ticks by all processes to the total ticks across all CPUs. A negative number
indicates the value was not available from the operating system. For more
detail, see the JavaDoc for com.sun.management.OperatingSystemMXBean.</td>
diff --git
a/samza-core/src/main/scala/org/apache/samza/metrics/JvmMetrics.scala
b/samza-core/src/main/scala/org/apache/samza/metrics/JvmMetrics.scala
index 7cc145210..e05a2b8f9 100644
--- a/samza-core/src/main/scala/org/apache/samza/metrics/JvmMetrics.scala
+++ b/samza-core/src/main/scala/org/apache/samza/metrics/JvmMetrics.scala
@@ -65,6 +65,7 @@ class JvmMetrics(val registry: MetricsRegistry) extends
MetricsHelper with Runna
// Conditional metrics. Only emitted if the Operating System supports it.
val gProcessCpuUsage = if (osMXBean.isInstanceOf[OperatingSystemMXBean])
newGauge("process-cpu-usage", 0.0) else null
+ val gProcessCpuUsageProcessors = if
(osMXBean.isInstanceOf[OperatingSystemMXBean])
newGauge("process-cpu-usage-processors", 0.0) else null
val gSystemCpuUsage = if (osMXBean.isInstanceOf[OperatingSystemMXBean])
newGauge("system-cpu-usage", 0.0) else null
val gOpenFileDescriptorCount = if
(osMXBean.isInstanceOf[UnixOperatingSystemMXBean])
newGauge("open-file-descriptor-count", 0.0) else null
@@ -80,10 +81,10 @@ class JvmMetrics(val registry: MetricsRegistry) extends
MetricsHelper with Runna
updateThreadUsage
updateOperatingSystemMetrics
- debug("updated metrics to: [%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s]" format
+ debug("updated metrics to: [%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
%s, %s, %s, %s, %s, %s, %s]" format
(gMemNonHeapUsedM, gMemNonHeapCommittedM, gMemNonHeapMaxM,
gMemHeapUsedM, gMemHeapCommittedM,gMemHeapMaxM, gThreadsNew,
gThreadsRunnable, gThreadsBlocked, gThreadsWaiting,
gThreadsTimedWaiting,
- gThreadsTerminated, cGcCount, cGcTimeMillis, gProcessCpuUsage,
gSystemCpuUsage, gOpenFileDescriptorCount))
+ gThreadsTerminated, cGcCount, cGcTimeMillis, gProcessCpuUsage,
gProcessCpuUsageProcessors, gSystemCpuUsage, gOpenFileDescriptorCount))
}
def stop = executor.shutdown
@@ -163,7 +164,9 @@ class JvmMetrics(val registry: MetricsRegistry) extends
MetricsHelper with Runna
private def updateOperatingSystemMetrics {
if (osMXBean.isInstanceOf[OperatingSystemMXBean]) {
val operatingSystemMXBean = osMXBean.asInstanceOf[OperatingSystemMXBean]
- gProcessCpuUsage.set(operatingSystemMXBean.getProcessCpuLoad * PCT)
+ val processCpuLoad = operatingSystemMXBean.getProcessCpuLoad
+ gProcessCpuUsage.set(processCpuLoad * PCT)
+ gProcessCpuUsageProcessors.set(processCpuLoad *
operatingSystemMXBean.getAvailableProcessors)
gSystemCpuUsage.set(operatingSystemMXBean.getSystemCpuLoad * PCT)
if (osMXBean.isInstanceOf[UnixOperatingSystemMXBean]) {