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]

Reply via email to