All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opentable.metrics.jvm.CpuLoadGauge Maven / Gradle / Ivy

Go to download

Manages metrics and healthchecks and sends them to Graphite and exposes them via endpoints

There is a newer version: 6.0.1
Show newest version
/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.opentable.metrics.jvm;

import java.lang.management.ManagementFactory;

import com.sun.management.OperatingSystemMXBean;

import com.codahale.metrics.Gauge;

/**
 * @author Jeremy Schiff (originally)
 * TODO Re-implement with {@link com.codahale.metrics.EWMA} instead?
 */
@SuppressWarnings("restriction")
public class CpuLoadGauge implements Gauge {
    final int cores = Runtime.getRuntime().availableProcessors();
    final OperatingSystemMXBean bean = ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class);

    @Override
    public Double getValue() {
        if (bean == null) {
            return Double.NaN;
        }
        final double processCpuLoad = bean.getProcessCpuLoad();
        // Like Top: Percentage with 1 decimal point
        return ((int)(processCpuLoad * 1000 * cores) / 10.0);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy