Github user srowen commented on a diff in the pull request:
https://github.com/apache/spark/pull/22218#discussion_r214522065
--- Diff:
core/src/main/scala/org/apache/spark/executor/ExecutorSource.scala ---
@@ -73,6 +76,28 @@ class ExecutorSource(threadPool: ThreadPoolExecutor,
executorId: String) extends
registerFileSystemStat(scheme, "write_ops", _.getWriteOps(), 0)
}
+ // Dropwizard metrics gauge measuring the executor's process CPU time.
+ // This Gauge will try to get and return the JVM Process CPU time or
return -1 otherwise.
+ // The CPU time value is returned in nanoseconds.
+ // It will use proprietary extensions such as
com.sun.management.OperatingSystemMXBean or
+ // com.ibm.lang.management.OperatingSystemMXBean, if available.
+ metricRegistry.register(MetricRegistry.name("jvmCpuTime"), new
Gauge[Long] {
+ override def getValue: Long = {
+ val mBean: MBeanServer = ManagementFactory.getPlatformMBeanServer
--- End diff --
Although I actually mean to put these inside the anonymous `Gauge` instance
but outside the method, so as to compute them once, I doubt there is much
overhead here. Getting the bean is just returning a field, although
constructing the ObjectName is a little non-trivial. I suppose metrics are
infrequently computed so this doesn't matter much.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]